gen.go 963 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833188341883518836188371883818839188401884118842188431884418845188461884718848188491885018851188521885318854188551885618857188581885918860188611886218863188641886518866188671886818869188701887118872188731887418875188761887718878188791888018881188821888318884188851888618887188881888918890188911889218893188941889518896188971889818899189001890118902189031890418905189061890718908189091891018911189121891318914189151891618917189181891918920189211892218923189241892518926189271892818929189301893118932189331893418935189361893718938189391894018941189421894318944189451894618947189481894918950189511895218953189541895518956189571895818959189601896118962189631896418965189661896718968189691897018971189721897318974189751897618977189781897918980189811898218983189841898518986189871898818989189901899118992189931899418995189961899718998189991900019001190021900319004190051900619007190081900919010190111901219013190141901519016190171901819019190201902119022190231902419025190261902719028190291903019031190321903319034190351903619037190381903919040190411904219043190441904519046190471904819049190501905119052190531905419055190561905719058190591906019061190621906319064190651906619067190681906919070190711907219073190741907519076190771907819079190801908119082190831908419085190861908719088190891909019091190921909319094190951909619097190981909919100191011910219103191041910519106191071910819109191101911119112191131911419115191161911719118191191912019121191221912319124191251912619127191281912919130191311913219133191341913519136191371913819139191401914119142191431914419145191461914719148191491915019151191521915319154191551915619157191581915919160191611916219163191641916519166191671916819169191701917119172191731917419175191761917719178191791918019181191821918319184191851918619187191881918919190191911919219193191941919519196191971919819199192001920119202192031920419205192061920719208192091921019211192121921319214192151921619217192181921919220192211922219223192241922519226192271922819229192301923119232192331923419235192361923719238192391924019241192421924319244192451924619247192481924919250192511925219253192541925519256192571925819259192601926119262192631926419265192661926719268192691927019271192721927319274192751927619277192781927919280192811928219283192841928519286192871928819289192901929119292192931929419295192961929719298192991930019301193021930319304193051930619307193081930919310193111931219313193141931519316193171931819319193201932119322193231932419325193261932719328193291933019331193321933319334193351933619337193381933919340193411934219343193441934519346193471934819349193501935119352193531935419355193561935719358193591936019361193621936319364193651936619367193681936919370193711937219373193741937519376193771937819379193801938119382193831938419385193861938719388193891939019391193921939319394193951939619397193981939919400194011940219403194041940519406194071940819409194101941119412194131941419415194161941719418194191942019421194221942319424194251942619427194281942919430194311943219433194341943519436194371943819439194401944119442194431944419445194461944719448194491945019451194521945319454194551945619457194581945919460194611946219463194641946519466194671946819469194701947119472194731947419475194761947719478194791948019481194821948319484194851948619487194881948919490194911949219493194941949519496194971949819499195001950119502195031950419505195061950719508195091951019511195121951319514195151951619517195181951919520195211952219523195241952519526195271952819529195301953119532195331953419535195361953719538195391954019541195421954319544195451954619547195481954919550195511955219553195541955519556195571955819559195601956119562195631956419565195661956719568195691957019571195721957319574195751957619577195781957919580195811958219583195841958519586195871958819589195901959119592195931959419595195961959719598195991960019601196021960319604196051960619607196081960919610196111961219613196141961519616196171961819619196201962119622196231962419625196261962719628196291963019631196321963319634196351963619637196381963919640196411964219643196441964519646196471964819649196501965119652196531965419655196561965719658196591966019661196621966319664196651966619667196681966919670196711967219673196741967519676196771967819679196801968119682196831968419685196861968719688196891969019691196921969319694196951969619697196981969919700197011970219703197041970519706197071970819709197101971119712197131971419715197161971719718197191972019721197221972319724197251972619727197281972919730197311973219733197341973519736197371973819739197401974119742197431974419745197461974719748197491975019751197521975319754197551975619757197581975919760197611976219763197641976519766197671976819769197701977119772197731977419775197761977719778197791978019781197821978319784197851978619787197881978919790197911979219793197941979519796197971979819799198001980119802198031980419805198061980719808198091981019811198121981319814198151981619817198181981919820198211982219823198241982519826198271982819829198301983119832198331983419835198361983719838198391984019841198421984319844198451984619847198481984919850198511985219853198541985519856198571985819859198601986119862198631986419865198661986719868198691987019871198721987319874198751987619877198781987919880198811988219883198841988519886198871988819889198901989119892198931989419895198961989719898198991990019901199021990319904199051990619907199081990919910199111991219913199141991519916199171991819919199201992119922199231992419925199261992719928199291993019931199321993319934199351993619937199381993919940199411994219943199441994519946199471994819949199501995119952199531995419955199561995719958199591996019961199621996319964199651996619967199681996919970199711997219973199741997519976199771997819979199801998119982199831998419985199861998719988199891999019991199921999319994199951999619997199981999920000200012000220003200042000520006200072000820009200102001120012200132001420015200162001720018200192002020021200222002320024200252002620027200282002920030200312003220033200342003520036200372003820039200402004120042200432004420045200462004720048200492005020051200522005320054200552005620057200582005920060200612006220063200642006520066200672006820069200702007120072200732007420075200762007720078200792008020081200822008320084200852008620087200882008920090200912009220093200942009520096200972009820099201002010120102201032010420105201062010720108201092011020111201122011320114201152011620117201182011920120201212012220123201242012520126201272012820129201302013120132201332013420135201362013720138201392014020141201422014320144201452014620147201482014920150201512015220153201542015520156201572015820159201602016120162201632016420165201662016720168201692017020171201722017320174201752017620177201782017920180201812018220183201842018520186201872018820189201902019120192201932019420195201962019720198201992020020201202022020320204202052020620207202082020920210202112021220213202142021520216202172021820219202202022120222202232022420225202262022720228202292023020231202322023320234202352023620237202382023920240202412024220243202442024520246202472024820249202502025120252202532025420255202562025720258202592026020261202622026320264202652026620267202682026920270202712027220273202742027520276202772027820279202802028120282202832028420285202862028720288202892029020291202922029320294202952029620297202982029920300203012030220303203042030520306203072030820309203102031120312203132031420315203162031720318203192032020321203222032320324203252032620327203282032920330203312033220333203342033520336203372033820339203402034120342203432034420345203462034720348203492035020351203522035320354203552035620357203582035920360203612036220363203642036520366203672036820369203702037120372203732037420375203762037720378203792038020381203822038320384203852038620387203882038920390203912039220393203942039520396203972039820399204002040120402204032040420405204062040720408204092041020411204122041320414204152041620417204182041920420204212042220423204242042520426204272042820429204302043120432204332043420435204362043720438204392044020441204422044320444204452044620447204482044920450204512045220453204542045520456204572045820459204602046120462204632046420465204662046720468204692047020471204722047320474204752047620477204782047920480204812048220483204842048520486204872048820489204902049120492204932049420495204962049720498204992050020501205022050320504205052050620507205082050920510205112051220513205142051520516205172051820519205202052120522205232052420525205262052720528205292053020531205322053320534205352053620537205382053920540205412054220543205442054520546205472054820549205502055120552205532055420555205562055720558205592056020561205622056320564205652056620567205682056920570205712057220573205742057520576205772057820579205802058120582205832058420585205862058720588205892059020591205922059320594205952059620597205982059920600206012060220603206042060520606206072060820609206102061120612206132061420615206162061720618206192062020621206222062320624206252062620627206282062920630206312063220633206342063520636206372063820639206402064120642206432064420645206462064720648206492065020651206522065320654206552065620657206582065920660206612066220663206642066520666206672066820669206702067120672206732067420675206762067720678206792068020681206822068320684206852068620687206882068920690206912069220693206942069520696206972069820699207002070120702207032070420705207062070720708207092071020711207122071320714207152071620717207182071920720207212072220723207242072520726207272072820729207302073120732207332073420735207362073720738207392074020741207422074320744207452074620747207482074920750207512075220753207542075520756207572075820759207602076120762207632076420765207662076720768207692077020771207722077320774207752077620777207782077920780207812078220783207842078520786207872078820789207902079120792207932079420795207962079720798207992080020801208022080320804208052080620807208082080920810208112081220813208142081520816208172081820819208202082120822208232082420825208262082720828208292083020831208322083320834208352083620837208382083920840208412084220843208442084520846208472084820849208502085120852208532085420855208562085720858208592086020861208622086320864208652086620867208682086920870208712087220873208742087520876208772087820879208802088120882208832088420885208862088720888208892089020891208922089320894208952089620897208982089920900209012090220903209042090520906209072090820909209102091120912209132091420915209162091720918209192092020921209222092320924209252092620927209282092920930209312093220933209342093520936209372093820939209402094120942209432094420945209462094720948209492095020951209522095320954209552095620957209582095920960209612096220963209642096520966209672096820969209702097120972209732097420975209762097720978209792098020981209822098320984209852098620987209882098920990209912099220993209942099520996209972099820999210002100121002210032100421005210062100721008210092101021011210122101321014210152101621017210182101921020210212102221023210242102521026210272102821029210302103121032210332103421035210362103721038210392104021041210422104321044210452104621047210482104921050210512105221053210542105521056210572105821059210602106121062210632106421065210662106721068210692107021071210722107321074210752107621077210782107921080210812108221083210842108521086210872108821089210902109121092210932109421095210962109721098210992110021101211022110321104211052110621107211082110921110211112111221113211142111521116211172111821119211202112121122211232112421125211262112721128211292113021131211322113321134211352113621137211382113921140211412114221143211442114521146211472114821149211502115121152211532115421155211562115721158211592116021161211622116321164211652116621167211682116921170211712117221173211742117521176211772117821179211802118121182211832118421185211862118721188211892119021191211922119321194211952119621197211982119921200212012120221203212042120521206212072120821209212102121121212212132121421215212162121721218212192122021221212222122321224212252122621227212282122921230212312123221233212342123521236212372123821239212402124121242212432124421245212462124721248212492125021251212522125321254212552125621257212582125921260212612126221263212642126521266212672126821269212702127121272212732127421275212762127721278212792128021281212822128321284212852128621287212882128921290212912129221293212942129521296212972129821299213002130121302213032130421305213062130721308213092131021311213122131321314213152131621317213182131921320213212132221323213242132521326213272132821329213302133121332213332133421335213362133721338213392134021341213422134321344213452134621347213482134921350213512135221353213542135521356213572135821359213602136121362213632136421365213662136721368213692137021371213722137321374213752137621377213782137921380213812138221383213842138521386213872138821389213902139121392213932139421395213962139721398213992140021401214022140321404214052140621407214082140921410214112141221413214142141521416214172141821419214202142121422214232142421425214262142721428214292143021431214322143321434214352143621437214382143921440214412144221443214442144521446214472144821449214502145121452214532145421455214562145721458214592146021461214622146321464214652146621467214682146921470214712147221473214742147521476214772147821479214802148121482214832148421485214862148721488214892149021491214922149321494214952149621497214982149921500215012150221503215042150521506215072150821509215102151121512215132151421515215162151721518215192152021521215222152321524215252152621527215282152921530215312153221533215342153521536215372153821539215402154121542215432154421545215462154721548215492155021551215522155321554215552155621557215582155921560215612156221563215642156521566215672156821569215702157121572215732157421575215762157721578215792158021581215822158321584215852158621587215882158921590215912159221593215942159521596215972159821599216002160121602216032160421605216062160721608216092161021611216122161321614216152161621617216182161921620216212162221623216242162521626216272162821629216302163121632216332163421635216362163721638216392164021641216422164321644216452164621647216482164921650216512165221653216542165521656216572165821659216602166121662216632166421665216662166721668216692167021671216722167321674216752167621677216782167921680216812168221683216842168521686216872168821689216902169121692216932169421695216962169721698216992170021701217022170321704217052170621707217082170921710217112171221713217142171521716217172171821719217202172121722217232172421725217262172721728217292173021731217322173321734217352173621737217382173921740217412174221743217442174521746217472174821749217502175121752217532175421755217562175721758217592176021761217622176321764217652176621767217682176921770217712177221773217742177521776217772177821779217802178121782217832178421785217862178721788217892179021791217922179321794217952179621797217982179921800218012180221803218042180521806218072180821809218102181121812218132181421815218162181721818218192182021821218222182321824218252182621827218282182921830218312183221833218342183521836218372183821839218402184121842218432184421845218462184721848218492185021851218522185321854218552185621857218582185921860218612186221863218642186521866218672186821869218702187121872218732187421875218762187721878218792188021881218822188321884218852188621887218882188921890218912189221893218942189521896218972189821899219002190121902219032190421905219062190721908219092191021911219122191321914219152191621917219182191921920219212192221923219242192521926219272192821929219302193121932219332193421935219362193721938219392194021941219422194321944219452194621947219482194921950219512195221953219542195521956219572195821959219602196121962219632196421965219662196721968219692197021971219722197321974219752197621977219782197921980219812198221983219842198521986219872198821989219902199121992219932199421995219962199721998219992200022001220022200322004220052200622007220082200922010220112201222013220142201522016220172201822019220202202122022220232202422025220262202722028220292203022031220322203322034220352203622037220382203922040220412204222043220442204522046220472204822049220502205122052220532205422055220562205722058220592206022061220622206322064220652206622067220682206922070220712207222073220742207522076220772207822079220802208122082220832208422085220862208722088220892209022091220922209322094220952209622097220982209922100221012210222103221042210522106221072210822109221102211122112221132211422115221162211722118221192212022121221222212322124221252212622127221282212922130221312213222133221342213522136221372213822139221402214122142221432214422145221462214722148221492215022151221522215322154221552215622157221582215922160221612216222163221642216522166221672216822169221702217122172221732217422175221762217722178221792218022181221822218322184221852218622187221882218922190221912219222193221942219522196221972219822199222002220122202222032220422205222062220722208222092221022211222122221322214222152221622217222182221922220222212222222223222242222522226222272222822229222302223122232222332223422235222362223722238222392224022241222422224322244222452224622247222482224922250222512225222253222542225522256222572225822259222602226122262222632226422265222662226722268222692227022271222722227322274222752227622277222782227922280222812228222283222842228522286222872228822289222902229122292222932229422295222962229722298222992230022301223022230322304223052230622307223082230922310223112231222313223142231522316223172231822319223202232122322223232232422325223262232722328223292233022331223322233322334223352233622337223382233922340223412234222343223442234522346223472234822349223502235122352223532235422355223562235722358223592236022361223622236322364223652236622367223682236922370223712237222373223742237522376223772237822379223802238122382223832238422385223862238722388223892239022391223922239322394223952239622397223982239922400224012240222403224042240522406224072240822409224102241122412224132241422415224162241722418224192242022421224222242322424224252242622427224282242922430224312243222433224342243522436224372243822439224402244122442224432244422445224462244722448224492245022451224522245322454224552245622457224582245922460224612246222463224642246522466224672246822469224702247122472224732247422475224762247722478224792248022481224822248322484224852248622487224882248922490224912249222493224942249522496224972249822499225002250122502225032250422505225062250722508225092251022511225122251322514225152251622517225182251922520225212252222523225242252522526225272252822529225302253122532225332253422535225362253722538225392254022541225422254322544225452254622547225482254922550225512255222553225542255522556225572255822559225602256122562225632256422565225662256722568225692257022571225722257322574225752257622577225782257922580225812258222583225842258522586225872258822589225902259122592225932259422595225962259722598225992260022601226022260322604226052260622607226082260922610226112261222613226142261522616226172261822619226202262122622226232262422625226262262722628226292263022631226322263322634226352263622637226382263922640226412264222643226442264522646226472264822649226502265122652226532265422655226562265722658226592266022661226622266322664226652266622667226682266922670226712267222673226742267522676226772267822679226802268122682226832268422685226862268722688226892269022691226922269322694226952269622697226982269922700227012270222703227042270522706227072270822709227102271122712227132271422715227162271722718227192272022721227222272322724227252272622727227282272922730227312273222733227342273522736227372273822739227402274122742227432274422745227462274722748227492275022751227522275322754227552275622757227582275922760227612276222763227642276522766227672276822769227702277122772227732277422775227762277722778227792278022781227822278322784227852278622787227882278922790227912279222793227942279522796227972279822799228002280122802228032280422805228062280722808228092281022811228122281322814228152281622817228182281922820228212282222823228242282522826228272282822829228302283122832228332283422835228362283722838228392284022841228422284322844228452284622847228482284922850228512285222853228542285522856228572285822859228602286122862228632286422865228662286722868228692287022871228722287322874228752287622877228782287922880228812288222883228842288522886228872288822889228902289122892228932289422895228962289722898228992290022901229022290322904229052290622907229082290922910229112291222913229142291522916229172291822919229202292122922229232292422925229262292722928229292293022931229322293322934229352293622937229382293922940229412294222943229442294522946229472294822949229502295122952229532295422955229562295722958229592296022961229622296322964229652296622967229682296922970229712297222973229742297522976229772297822979229802298122982229832298422985229862298722988229892299022991229922299322994229952299622997229982299923000230012300223003230042300523006230072300823009230102301123012230132301423015230162301723018230192302023021230222302323024230252302623027230282302923030230312303223033230342303523036230372303823039230402304123042230432304423045230462304723048230492305023051230522305323054230552305623057230582305923060230612306223063230642306523066230672306823069230702307123072230732307423075230762307723078230792308023081230822308323084230852308623087230882308923090230912309223093230942309523096230972309823099231002310123102231032310423105231062310723108231092311023111231122311323114231152311623117231182311923120231212312223123231242312523126231272312823129231302313123132231332313423135231362313723138231392314023141231422314323144231452314623147231482314923150231512315223153231542315523156231572315823159231602316123162231632316423165231662316723168231692317023171231722317323174231752317623177231782317923180231812318223183231842318523186231872318823189231902319123192231932319423195231962319723198231992320023201232022320323204232052320623207232082320923210232112321223213232142321523216232172321823219232202322123222232232322423225232262322723228232292323023231232322323323234232352323623237232382323923240232412324223243232442324523246232472324823249232502325123252232532325423255232562325723258232592326023261232622326323264232652326623267232682326923270232712327223273232742327523276232772327823279232802328123282232832328423285232862328723288232892329023291232922329323294232952329623297232982329923300233012330223303233042330523306233072330823309233102331123312233132331423315233162331723318233192332023321233222332323324233252332623327233282332923330233312333223333233342333523336233372333823339233402334123342233432334423345233462334723348233492335023351233522335323354233552335623357233582335923360233612336223363233642336523366233672336823369233702337123372233732337423375233762337723378233792338023381233822338323384233852338623387233882338923390233912339223393233942339523396233972339823399234002340123402234032340423405234062340723408234092341023411234122341323414234152341623417234182341923420234212342223423234242342523426234272342823429234302343123432234332343423435234362343723438234392344023441234422344323444234452344623447234482344923450234512345223453234542345523456234572345823459234602346123462234632346423465234662346723468234692347023471234722347323474234752347623477234782347923480234812348223483234842348523486234872348823489234902349123492234932349423495234962349723498234992350023501235022350323504235052350623507235082350923510235112351223513235142351523516235172351823519235202352123522235232352423525235262352723528235292353023531235322353323534235352353623537235382353923540235412354223543235442354523546235472354823549235502355123552235532355423555235562355723558235592356023561235622356323564235652356623567235682356923570235712357223573235742357523576235772357823579235802358123582235832358423585235862358723588235892359023591235922359323594235952359623597235982359923600236012360223603236042360523606236072360823609236102361123612236132361423615236162361723618236192362023621236222362323624236252362623627236282362923630236312363223633236342363523636236372363823639236402364123642236432364423645236462364723648236492365023651236522365323654236552365623657236582365923660236612366223663236642366523666236672366823669236702367123672236732367423675236762367723678236792368023681236822368323684236852368623687236882368923690236912369223693236942369523696236972369823699237002370123702237032370423705237062370723708237092371023711237122371323714237152371623717237182371923720237212372223723237242372523726237272372823729237302373123732237332373423735237362373723738237392374023741237422374323744237452374623747237482374923750237512375223753237542375523756237572375823759237602376123762237632376423765237662376723768237692377023771237722377323774237752377623777237782377923780237812378223783237842378523786237872378823789237902379123792237932379423795237962379723798237992380023801238022380323804238052380623807238082380923810238112381223813238142381523816238172381823819238202382123822238232382423825238262382723828238292383023831238322383323834238352383623837238382383923840238412384223843238442384523846238472384823849238502385123852238532385423855238562385723858238592386023861238622386323864238652386623867238682386923870238712387223873238742387523876238772387823879238802388123882238832388423885238862388723888238892389023891238922389323894238952389623897238982389923900239012390223903239042390523906239072390823909239102391123912239132391423915239162391723918239192392023921239222392323924239252392623927239282392923930239312393223933239342393523936239372393823939239402394123942239432394423945239462394723948239492395023951239522395323954239552395623957239582395923960239612396223963239642396523966239672396823969239702397123972239732397423975239762397723978239792398023981239822398323984239852398623987239882398923990239912399223993239942399523996239972399823999240002400124002240032400424005240062400724008240092401024011240122401324014240152401624017240182401924020240212402224023240242402524026240272402824029240302403124032240332403424035240362403724038240392404024041240422404324044240452404624047240482404924050240512405224053240542405524056240572405824059240602406124062240632406424065240662406724068240692407024071240722407324074240752407624077240782407924080240812408224083240842408524086240872408824089240902409124092240932409424095240962409724098240992410024101241022410324104241052410624107241082410924110241112411224113241142411524116241172411824119241202412124122241232412424125241262412724128241292413024131241322413324134241352413624137241382413924140241412414224143241442414524146241472414824149241502415124152241532415424155241562415724158241592416024161241622416324164241652416624167241682416924170241712417224173241742417524176241772417824179241802418124182241832418424185241862418724188241892419024191241922419324194241952419624197241982419924200242012420224203242042420524206242072420824209242102421124212242132421424215242162421724218242192422024221242222422324224242252422624227242282422924230242312423224233242342423524236242372423824239242402424124242242432424424245242462424724248242492425024251242522425324254242552425624257242582425924260242612426224263242642426524266242672426824269242702427124272242732427424275242762427724278242792428024281242822428324284242852428624287242882428924290242912429224293242942429524296242972429824299243002430124302243032430424305243062430724308243092431024311243122431324314243152431624317243182431924320243212432224323243242432524326243272432824329243302433124332243332433424335243362433724338243392434024341243422434324344243452434624347243482434924350243512435224353243542435524356243572435824359243602436124362243632436424365243662436724368243692437024371243722437324374243752437624377243782437924380243812438224383243842438524386243872438824389243902439124392243932439424395243962439724398243992440024401244022440324404244052440624407244082440924410244112441224413244142441524416244172441824419244202442124422244232442424425244262442724428244292443024431244322443324434244352443624437244382443924440244412444224443244442444524446244472444824449244502445124452244532445424455244562445724458244592446024461244622446324464244652446624467244682446924470244712447224473244742447524476244772447824479244802448124482244832448424485244862448724488244892449024491244922449324494244952449624497244982449924500245012450224503245042450524506245072450824509245102451124512245132451424515245162451724518245192452024521245222452324524245252452624527245282452924530245312453224533245342453524536245372453824539245402454124542245432454424545245462454724548245492455024551245522455324554245552455624557245582455924560245612456224563245642456524566245672456824569245702457124572245732457424575245762457724578245792458024581245822458324584245852458624587245882458924590245912459224593245942459524596245972459824599246002460124602246032460424605246062460724608246092461024611246122461324614246152461624617246182461924620246212462224623246242462524626246272462824629246302463124632246332463424635246362463724638246392464024641246422464324644246452464624647246482464924650246512465224653246542465524656246572465824659246602466124662246632466424665246662466724668246692467024671246722467324674246752467624677246782467924680246812468224683246842468524686246872468824689246902469124692246932469424695246962469724698246992470024701247022470324704247052470624707247082470924710247112471224713247142471524716247172471824719247202472124722247232472424725247262472724728247292473024731247322473324734247352473624737247382473924740247412474224743247442474524746247472474824749247502475124752247532475424755247562475724758247592476024761247622476324764247652476624767247682476924770247712477224773247742477524776247772477824779247802478124782247832478424785247862478724788247892479024791247922479324794247952479624797247982479924800248012480224803248042480524806248072480824809248102481124812248132481424815248162481724818248192482024821248222482324824248252482624827248282482924830248312483224833248342483524836248372483824839248402484124842248432484424845248462484724848248492485024851248522485324854248552485624857248582485924860248612486224863248642486524866248672486824869248702487124872248732487424875248762487724878248792488024881248822488324884248852488624887248882488924890248912489224893248942489524896248972489824899249002490124902249032490424905249062490724908249092491024911249122491324914249152491624917249182491924920249212492224923249242492524926249272492824929249302493124932249332493424935249362493724938249392494024941249422494324944249452494624947249482494924950249512495224953249542495524956249572495824959249602496124962249632496424965249662496724968249692497024971249722497324974249752497624977249782497924980249812498224983249842498524986249872498824989249902499124992249932499424995249962499724998249992500025001250022500325004250052500625007250082500925010250112501225013250142501525016250172501825019250202502125022250232502425025250262502725028250292503025031250322503325034250352503625037250382503925040250412504225043250442504525046250472504825049250502505125052250532505425055250562505725058250592506025061250622506325064250652506625067250682506925070250712507225073250742507525076250772507825079250802508125082250832508425085250862508725088250892509025091250922509325094250952509625097250982509925100251012510225103251042510525106251072510825109251102511125112251132511425115251162511725118251192512025121251222512325124251252512625127251282512925130251312513225133251342513525136251372513825139251402514125142251432514425145251462514725148251492515025151251522515325154251552515625157251582515925160251612516225163251642516525166251672516825169251702517125172251732517425175251762517725178251792518025181251822518325184251852518625187251882518925190251912519225193251942519525196251972519825199252002520125202252032520425205252062520725208252092521025211252122521325214252152521625217252182521925220252212522225223252242522525226252272522825229252302523125232252332523425235252362523725238252392524025241252422524325244252452524625247252482524925250252512525225253252542525525256252572525825259252602526125262252632526425265252662526725268252692527025271252722527325274252752527625277252782527925280252812528225283252842528525286252872528825289252902529125292252932529425295252962529725298252992530025301253022530325304253052530625307253082530925310253112531225313253142531525316253172531825319253202532125322253232532425325253262532725328253292533025331253322533325334253352533625337253382533925340253412534225343253442534525346253472534825349253502535125352253532535425355253562535725358253592536025361253622536325364253652536625367253682536925370253712537225373253742537525376253772537825379253802538125382253832538425385253862538725388253892539025391253922539325394253952539625397253982539925400254012540225403254042540525406254072540825409254102541125412254132541425415254162541725418254192542025421254222542325424254252542625427254282542925430254312543225433254342543525436254372543825439254402544125442254432544425445254462544725448254492545025451254522545325454254552545625457254582545925460254612546225463254642546525466254672546825469254702547125472254732547425475254762547725478254792548025481254822548325484254852548625487254882548925490254912549225493254942549525496254972549825499255002550125502255032550425505255062550725508255092551025511255122551325514255152551625517255182551925520255212552225523255242552525526255272552825529255302553125532255332553425535255362553725538255392554025541255422554325544255452554625547255482554925550255512555225553255542555525556255572555825559255602556125562255632556425565255662556725568255692557025571255722557325574255752557625577255782557925580255812558225583255842558525586255872558825589255902559125592255932559425595255962559725598255992560025601256022560325604256052560625607256082560925610256112561225613256142561525616256172561825619256202562125622256232562425625256262562725628256292563025631256322563325634256352563625637256382563925640256412564225643256442564525646256472564825649256502565125652256532565425655256562565725658256592566025661256622566325664256652566625667256682566925670256712567225673256742567525676256772567825679256802568125682256832568425685256862568725688256892569025691256922569325694256952569625697256982569925700257012570225703257042570525706257072570825709257102571125712257132571425715257162571725718257192572025721257222572325724257252572625727257282572925730257312573225733257342573525736257372573825739257402574125742257432574425745257462574725748257492575025751257522575325754257552575625757257582575925760257612576225763257642576525766257672576825769257702577125772257732577425775257762577725778257792578025781257822578325784257852578625787257882578925790257912579225793257942579525796257972579825799258002580125802258032580425805258062580725808258092581025811258122581325814258152581625817258182581925820258212582225823258242582525826258272582825829258302583125832258332583425835258362583725838258392584025841258422584325844258452584625847258482584925850258512585225853258542585525856258572585825859258602586125862258632586425865258662586725868258692587025871258722587325874258752587625877258782587925880258812588225883258842588525886258872588825889258902589125892258932589425895258962589725898258992590025901259022590325904259052590625907259082590925910259112591225913259142591525916259172591825919259202592125922259232592425925259262592725928259292593025931259322593325934259352593625937259382593925940259412594225943259442594525946259472594825949259502595125952259532595425955259562595725958259592596025961259622596325964259652596625967259682596925970259712597225973259742597525976259772597825979259802598125982259832598425985259862598725988259892599025991259922599325994259952599625997259982599926000260012600226003260042600526006260072600826009260102601126012260132601426015260162601726018260192602026021260222602326024260252602626027260282602926030260312603226033260342603526036260372603826039260402604126042260432604426045260462604726048260492605026051260522605326054260552605626057260582605926060260612606226063260642606526066260672606826069260702607126072260732607426075260762607726078260792608026081260822608326084260852608626087260882608926090260912609226093260942609526096260972609826099261002610126102261032610426105261062610726108261092611026111261122611326114261152611626117261182611926120261212612226123261242612526126261272612826129261302613126132261332613426135261362613726138261392614026141261422614326144261452614626147261482614926150261512615226153261542615526156261572615826159261602616126162261632616426165261662616726168261692617026171261722617326174261752617626177261782617926180261812618226183261842618526186261872618826189261902619126192261932619426195261962619726198261992620026201262022620326204262052620626207262082620926210262112621226213262142621526216262172621826219262202622126222262232622426225262262622726228262292623026231262322623326234262352623626237262382623926240262412624226243262442624526246262472624826249262502625126252262532625426255262562625726258262592626026261262622626326264262652626626267262682626926270262712627226273262742627526276262772627826279262802628126282262832628426285262862628726288262892629026291262922629326294262952629626297262982629926300263012630226303263042630526306263072630826309263102631126312263132631426315263162631726318263192632026321263222632326324263252632626327263282632926330263312633226333263342633526336263372633826339263402634126342263432634426345263462634726348263492635026351263522635326354263552635626357263582635926360263612636226363263642636526366263672636826369263702637126372263732637426375263762637726378263792638026381263822638326384263852638626387263882638926390263912639226393263942639526396263972639826399264002640126402264032640426405264062640726408264092641026411264122641326414264152641626417264182641926420264212642226423264242642526426264272642826429264302643126432264332643426435264362643726438264392644026441264422644326444264452644626447264482644926450264512645226453264542645526456264572645826459264602646126462264632646426465264662646726468264692647026471264722647326474264752647626477264782647926480264812648226483264842648526486264872648826489264902649126492264932649426495264962649726498264992650026501265022650326504265052650626507265082650926510265112651226513265142651526516265172651826519265202652126522265232652426525265262652726528265292653026531265322653326534265352653626537265382653926540265412654226543265442654526546265472654826549265502655126552265532655426555265562655726558265592656026561265622656326564265652656626567265682656926570265712657226573265742657526576265772657826579265802658126582265832658426585265862658726588265892659026591265922659326594265952659626597265982659926600266012660226603266042660526606266072660826609266102661126612266132661426615266162661726618266192662026621266222662326624266252662626627266282662926630266312663226633266342663526636266372663826639266402664126642266432664426645266462664726648266492665026651266522665326654266552665626657266582665926660266612666226663266642666526666266672666826669266702667126672266732667426675266762667726678266792668026681266822668326684266852668626687266882668926690266912669226693266942669526696266972669826699267002670126702267032670426705267062670726708267092671026711267122671326714267152671626717267182671926720267212672226723267242672526726267272672826729267302673126732267332673426735267362673726738267392674026741267422674326744267452674626747267482674926750267512675226753267542675526756267572675826759267602676126762267632676426765267662676726768267692677026771267722677326774267752677626777267782677926780267812678226783267842678526786267872678826789267902679126792267932679426795267962679726798267992680026801268022680326804268052680626807268082680926810268112681226813268142681526816268172681826819268202682126822268232682426825268262682726828268292683026831268322683326834268352683626837268382683926840268412684226843268442684526846268472684826849268502685126852268532685426855268562685726858268592686026861268622686326864268652686626867268682686926870268712687226873268742687526876268772687826879268802688126882268832688426885268862688726888268892689026891268922689326894268952689626897268982689926900269012690226903269042690526906269072690826909269102691126912269132691426915269162691726918269192692026921269222692326924269252692626927269282692926930269312693226933269342693526936269372693826939269402694126942269432694426945269462694726948269492695026951269522695326954269552695626957269582695926960269612696226963269642696526966269672696826969269702697126972269732697426975269762697726978269792698026981269822698326984269852698626987269882698926990269912699226993269942699526996269972699826999270002700127002270032700427005270062700727008270092701027011270122701327014270152701627017270182701927020270212702227023270242702527026270272702827029270302703127032270332703427035270362703727038270392704027041270422704327044270452704627047270482704927050270512705227053270542705527056270572705827059270602706127062270632706427065270662706727068270692707027071270722707327074270752707627077270782707927080270812708227083270842708527086270872708827089270902709127092270932709427095270962709727098270992710027101271022710327104271052710627107271082710927110271112711227113271142711527116271172711827119271202712127122271232712427125271262712727128271292713027131271322713327134271352713627137271382713927140271412714227143271442714527146271472714827149271502715127152271532715427155271562715727158271592716027161271622716327164271652716627167271682716927170271712717227173271742717527176271772717827179271802718127182271832718427185271862718727188271892719027191271922719327194271952719627197271982719927200272012720227203272042720527206272072720827209272102721127212272132721427215272162721727218272192722027221272222722327224272252722627227272282722927230272312723227233272342723527236272372723827239272402724127242272432724427245272462724727248272492725027251272522725327254272552725627257272582725927260272612726227263272642726527266272672726827269272702727127272272732727427275272762727727278272792728027281272822728327284272852728627287272882728927290272912729227293272942729527296272972729827299273002730127302273032730427305273062730727308273092731027311273122731327314273152731627317273182731927320273212732227323273242732527326273272732827329273302733127332273332733427335273362733727338273392734027341273422734327344273452734627347273482734927350273512735227353273542735527356273572735827359273602736127362273632736427365273662736727368273692737027371273722737327374273752737627377273782737927380273812738227383273842738527386273872738827389273902739127392273932739427395273962739727398273992740027401274022740327404274052740627407274082740927410274112741227413274142741527416274172741827419274202742127422274232742427425274262742727428274292743027431274322743327434274352743627437274382743927440274412744227443274442744527446274472744827449274502745127452274532745427455274562745727458274592746027461274622746327464274652746627467274682746927470274712747227473274742747527476274772747827479274802748127482274832748427485274862748727488274892749027491274922749327494274952749627497274982749927500275012750227503275042750527506275072750827509275102751127512275132751427515275162751727518275192752027521275222752327524275252752627527275282752927530275312753227533275342753527536275372753827539275402754127542275432754427545275462754727548275492755027551275522755327554275552755627557275582755927560275612756227563275642756527566275672756827569275702757127572275732757427575275762757727578275792758027581275822758327584275852758627587275882758927590275912759227593275942759527596275972759827599276002760127602276032760427605276062760727608276092761027611276122761327614
  1. /*
  2. Copyright 2019 Google LLC
  3. Licensed under the Apache License, Version 2.0 (the "License");
  4. you may not use this file except in compliance with the License.
  5. You may obtain a copy of the License at
  6. https://www.apache.org/licenses/LICENSE-2.0
  7. Unless required by applicable law or agreed to in writing, software
  8. distributed under the License is distributed on an "AS IS" BASIS,
  9. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  10. See the License for the specific language governing permissions and
  11. limitations under the License.
  12. */
  13. // This file was generated by "go run gen/main.go > gen.go". Do not edit
  14. // directly.
  15. package cloud
  16. import (
  17. "context"
  18. "fmt"
  19. "net/http"
  20. "sync"
  21. "google.golang.org/api/googleapi"
  22. "k8s.io/klog"
  23. "github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/filter"
  24. "github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/meta"
  25. alpha "google.golang.org/api/compute/v0.alpha"
  26. beta "google.golang.org/api/compute/v0.beta"
  27. ga "google.golang.org/api/compute/v1"
  28. )
  29. // Cloud is an interface for the GCE compute API.
  30. type Cloud interface {
  31. Addresses() Addresses
  32. AlphaAddresses() AlphaAddresses
  33. BetaAddresses() BetaAddresses
  34. AlphaGlobalAddresses() AlphaGlobalAddresses
  35. GlobalAddresses() GlobalAddresses
  36. BackendServices() BackendServices
  37. BetaBackendServices() BetaBackendServices
  38. AlphaBackendServices() AlphaBackendServices
  39. RegionBackendServices() RegionBackendServices
  40. AlphaRegionBackendServices() AlphaRegionBackendServices
  41. BetaRegionBackendServices() BetaRegionBackendServices
  42. Disks() Disks
  43. RegionDisks() RegionDisks
  44. Firewalls() Firewalls
  45. ForwardingRules() ForwardingRules
  46. AlphaForwardingRules() AlphaForwardingRules
  47. BetaForwardingRules() BetaForwardingRules
  48. AlphaGlobalForwardingRules() AlphaGlobalForwardingRules
  49. BetaGlobalForwardingRules() BetaGlobalForwardingRules
  50. GlobalForwardingRules() GlobalForwardingRules
  51. HealthChecks() HealthChecks
  52. AlphaHealthChecks() AlphaHealthChecks
  53. BetaHealthChecks() BetaHealthChecks
  54. AlphaRegionHealthChecks() AlphaRegionHealthChecks
  55. BetaRegionHealthChecks() BetaRegionHealthChecks
  56. HttpHealthChecks() HttpHealthChecks
  57. HttpsHealthChecks() HttpsHealthChecks
  58. InstanceGroups() InstanceGroups
  59. Instances() Instances
  60. BetaInstances() BetaInstances
  61. AlphaInstances() AlphaInstances
  62. AlphaNetworks() AlphaNetworks
  63. BetaNetworks() BetaNetworks
  64. Networks() Networks
  65. AlphaNetworkEndpointGroups() AlphaNetworkEndpointGroups
  66. BetaNetworkEndpointGroups() BetaNetworkEndpointGroups
  67. NetworkEndpointGroups() NetworkEndpointGroups
  68. Projects() Projects
  69. Regions() Regions
  70. Routes() Routes
  71. BetaSecurityPolicies() BetaSecurityPolicies
  72. SslCertificates() SslCertificates
  73. BetaSslCertificates() BetaSslCertificates
  74. AlphaSslCertificates() AlphaSslCertificates
  75. AlphaRegionSslCertificates() AlphaRegionSslCertificates
  76. BetaRegionSslCertificates() BetaRegionSslCertificates
  77. AlphaSubnetworks() AlphaSubnetworks
  78. BetaSubnetworks() BetaSubnetworks
  79. Subnetworks() Subnetworks
  80. AlphaTargetHttpProxies() AlphaTargetHttpProxies
  81. BetaTargetHttpProxies() BetaTargetHttpProxies
  82. TargetHttpProxies() TargetHttpProxies
  83. AlphaRegionTargetHttpProxies() AlphaRegionTargetHttpProxies
  84. BetaRegionTargetHttpProxies() BetaRegionTargetHttpProxies
  85. TargetHttpsProxies() TargetHttpsProxies
  86. AlphaTargetHttpsProxies() AlphaTargetHttpsProxies
  87. BetaTargetHttpsProxies() BetaTargetHttpsProxies
  88. AlphaRegionTargetHttpsProxies() AlphaRegionTargetHttpsProxies
  89. BetaRegionTargetHttpsProxies() BetaRegionTargetHttpsProxies
  90. TargetPools() TargetPools
  91. AlphaUrlMaps() AlphaUrlMaps
  92. BetaUrlMaps() BetaUrlMaps
  93. UrlMaps() UrlMaps
  94. AlphaRegionUrlMaps() AlphaRegionUrlMaps
  95. BetaRegionUrlMaps() BetaRegionUrlMaps
  96. Zones() Zones
  97. }
  98. // NewGCE returns a GCE.
  99. func NewGCE(s *Service) *GCE {
  100. g := &GCE{
  101. gceAddresses: &GCEAddresses{s},
  102. gceAlphaAddresses: &GCEAlphaAddresses{s},
  103. gceBetaAddresses: &GCEBetaAddresses{s},
  104. gceAlphaGlobalAddresses: &GCEAlphaGlobalAddresses{s},
  105. gceGlobalAddresses: &GCEGlobalAddresses{s},
  106. gceBackendServices: &GCEBackendServices{s},
  107. gceBetaBackendServices: &GCEBetaBackendServices{s},
  108. gceAlphaBackendServices: &GCEAlphaBackendServices{s},
  109. gceRegionBackendServices: &GCERegionBackendServices{s},
  110. gceAlphaRegionBackendServices: &GCEAlphaRegionBackendServices{s},
  111. gceBetaRegionBackendServices: &GCEBetaRegionBackendServices{s},
  112. gceDisks: &GCEDisks{s},
  113. gceRegionDisks: &GCERegionDisks{s},
  114. gceFirewalls: &GCEFirewalls{s},
  115. gceForwardingRules: &GCEForwardingRules{s},
  116. gceAlphaForwardingRules: &GCEAlphaForwardingRules{s},
  117. gceBetaForwardingRules: &GCEBetaForwardingRules{s},
  118. gceAlphaGlobalForwardingRules: &GCEAlphaGlobalForwardingRules{s},
  119. gceBetaGlobalForwardingRules: &GCEBetaGlobalForwardingRules{s},
  120. gceGlobalForwardingRules: &GCEGlobalForwardingRules{s},
  121. gceHealthChecks: &GCEHealthChecks{s},
  122. gceAlphaHealthChecks: &GCEAlphaHealthChecks{s},
  123. gceBetaHealthChecks: &GCEBetaHealthChecks{s},
  124. gceAlphaRegionHealthChecks: &GCEAlphaRegionHealthChecks{s},
  125. gceBetaRegionHealthChecks: &GCEBetaRegionHealthChecks{s},
  126. gceHttpHealthChecks: &GCEHttpHealthChecks{s},
  127. gceHttpsHealthChecks: &GCEHttpsHealthChecks{s},
  128. gceInstanceGroups: &GCEInstanceGroups{s},
  129. gceInstances: &GCEInstances{s},
  130. gceBetaInstances: &GCEBetaInstances{s},
  131. gceAlphaInstances: &GCEAlphaInstances{s},
  132. gceAlphaNetworks: &GCEAlphaNetworks{s},
  133. gceBetaNetworks: &GCEBetaNetworks{s},
  134. gceNetworks: &GCENetworks{s},
  135. gceAlphaNetworkEndpointGroups: &GCEAlphaNetworkEndpointGroups{s},
  136. gceBetaNetworkEndpointGroups: &GCEBetaNetworkEndpointGroups{s},
  137. gceNetworkEndpointGroups: &GCENetworkEndpointGroups{s},
  138. gceProjects: &GCEProjects{s},
  139. gceRegions: &GCERegions{s},
  140. gceRoutes: &GCERoutes{s},
  141. gceBetaSecurityPolicies: &GCEBetaSecurityPolicies{s},
  142. gceSslCertificates: &GCESslCertificates{s},
  143. gceBetaSslCertificates: &GCEBetaSslCertificates{s},
  144. gceAlphaSslCertificates: &GCEAlphaSslCertificates{s},
  145. gceAlphaRegionSslCertificates: &GCEAlphaRegionSslCertificates{s},
  146. gceBetaRegionSslCertificates: &GCEBetaRegionSslCertificates{s},
  147. gceAlphaSubnetworks: &GCEAlphaSubnetworks{s},
  148. gceBetaSubnetworks: &GCEBetaSubnetworks{s},
  149. gceSubnetworks: &GCESubnetworks{s},
  150. gceAlphaTargetHttpProxies: &GCEAlphaTargetHttpProxies{s},
  151. gceBetaTargetHttpProxies: &GCEBetaTargetHttpProxies{s},
  152. gceTargetHttpProxies: &GCETargetHttpProxies{s},
  153. gceAlphaRegionTargetHttpProxies: &GCEAlphaRegionTargetHttpProxies{s},
  154. gceBetaRegionTargetHttpProxies: &GCEBetaRegionTargetHttpProxies{s},
  155. gceTargetHttpsProxies: &GCETargetHttpsProxies{s},
  156. gceAlphaTargetHttpsProxies: &GCEAlphaTargetHttpsProxies{s},
  157. gceBetaTargetHttpsProxies: &GCEBetaTargetHttpsProxies{s},
  158. gceAlphaRegionTargetHttpsProxies: &GCEAlphaRegionTargetHttpsProxies{s},
  159. gceBetaRegionTargetHttpsProxies: &GCEBetaRegionTargetHttpsProxies{s},
  160. gceTargetPools: &GCETargetPools{s},
  161. gceAlphaUrlMaps: &GCEAlphaUrlMaps{s},
  162. gceBetaUrlMaps: &GCEBetaUrlMaps{s},
  163. gceUrlMaps: &GCEUrlMaps{s},
  164. gceAlphaRegionUrlMaps: &GCEAlphaRegionUrlMaps{s},
  165. gceBetaRegionUrlMaps: &GCEBetaRegionUrlMaps{s},
  166. gceZones: &GCEZones{s},
  167. }
  168. return g
  169. }
  170. // GCE implements Cloud.
  171. var _ Cloud = (*GCE)(nil)
  172. // GCE is the golang adapter for the compute APIs.
  173. type GCE struct {
  174. gceAddresses *GCEAddresses
  175. gceAlphaAddresses *GCEAlphaAddresses
  176. gceBetaAddresses *GCEBetaAddresses
  177. gceAlphaGlobalAddresses *GCEAlphaGlobalAddresses
  178. gceGlobalAddresses *GCEGlobalAddresses
  179. gceBackendServices *GCEBackendServices
  180. gceBetaBackendServices *GCEBetaBackendServices
  181. gceAlphaBackendServices *GCEAlphaBackendServices
  182. gceRegionBackendServices *GCERegionBackendServices
  183. gceAlphaRegionBackendServices *GCEAlphaRegionBackendServices
  184. gceBetaRegionBackendServices *GCEBetaRegionBackendServices
  185. gceDisks *GCEDisks
  186. gceRegionDisks *GCERegionDisks
  187. gceFirewalls *GCEFirewalls
  188. gceForwardingRules *GCEForwardingRules
  189. gceAlphaForwardingRules *GCEAlphaForwardingRules
  190. gceBetaForwardingRules *GCEBetaForwardingRules
  191. gceAlphaGlobalForwardingRules *GCEAlphaGlobalForwardingRules
  192. gceBetaGlobalForwardingRules *GCEBetaGlobalForwardingRules
  193. gceGlobalForwardingRules *GCEGlobalForwardingRules
  194. gceHealthChecks *GCEHealthChecks
  195. gceAlphaHealthChecks *GCEAlphaHealthChecks
  196. gceBetaHealthChecks *GCEBetaHealthChecks
  197. gceAlphaRegionHealthChecks *GCEAlphaRegionHealthChecks
  198. gceBetaRegionHealthChecks *GCEBetaRegionHealthChecks
  199. gceHttpHealthChecks *GCEHttpHealthChecks
  200. gceHttpsHealthChecks *GCEHttpsHealthChecks
  201. gceInstanceGroups *GCEInstanceGroups
  202. gceInstances *GCEInstances
  203. gceBetaInstances *GCEBetaInstances
  204. gceAlphaInstances *GCEAlphaInstances
  205. gceAlphaNetworks *GCEAlphaNetworks
  206. gceBetaNetworks *GCEBetaNetworks
  207. gceNetworks *GCENetworks
  208. gceAlphaNetworkEndpointGroups *GCEAlphaNetworkEndpointGroups
  209. gceBetaNetworkEndpointGroups *GCEBetaNetworkEndpointGroups
  210. gceNetworkEndpointGroups *GCENetworkEndpointGroups
  211. gceProjects *GCEProjects
  212. gceRegions *GCERegions
  213. gceRoutes *GCERoutes
  214. gceBetaSecurityPolicies *GCEBetaSecurityPolicies
  215. gceSslCertificates *GCESslCertificates
  216. gceBetaSslCertificates *GCEBetaSslCertificates
  217. gceAlphaSslCertificates *GCEAlphaSslCertificates
  218. gceAlphaRegionSslCertificates *GCEAlphaRegionSslCertificates
  219. gceBetaRegionSslCertificates *GCEBetaRegionSslCertificates
  220. gceAlphaSubnetworks *GCEAlphaSubnetworks
  221. gceBetaSubnetworks *GCEBetaSubnetworks
  222. gceSubnetworks *GCESubnetworks
  223. gceAlphaTargetHttpProxies *GCEAlphaTargetHttpProxies
  224. gceBetaTargetHttpProxies *GCEBetaTargetHttpProxies
  225. gceTargetHttpProxies *GCETargetHttpProxies
  226. gceAlphaRegionTargetHttpProxies *GCEAlphaRegionTargetHttpProxies
  227. gceBetaRegionTargetHttpProxies *GCEBetaRegionTargetHttpProxies
  228. gceTargetHttpsProxies *GCETargetHttpsProxies
  229. gceAlphaTargetHttpsProxies *GCEAlphaTargetHttpsProxies
  230. gceBetaTargetHttpsProxies *GCEBetaTargetHttpsProxies
  231. gceAlphaRegionTargetHttpsProxies *GCEAlphaRegionTargetHttpsProxies
  232. gceBetaRegionTargetHttpsProxies *GCEBetaRegionTargetHttpsProxies
  233. gceTargetPools *GCETargetPools
  234. gceAlphaUrlMaps *GCEAlphaUrlMaps
  235. gceBetaUrlMaps *GCEBetaUrlMaps
  236. gceUrlMaps *GCEUrlMaps
  237. gceAlphaRegionUrlMaps *GCEAlphaRegionUrlMaps
  238. gceBetaRegionUrlMaps *GCEBetaRegionUrlMaps
  239. gceZones *GCEZones
  240. }
  241. // Addresses returns the interface for the ga Addresses.
  242. func (gce *GCE) Addresses() Addresses {
  243. return gce.gceAddresses
  244. }
  245. // AlphaAddresses returns the interface for the alpha Addresses.
  246. func (gce *GCE) AlphaAddresses() AlphaAddresses {
  247. return gce.gceAlphaAddresses
  248. }
  249. // BetaAddresses returns the interface for the beta Addresses.
  250. func (gce *GCE) BetaAddresses() BetaAddresses {
  251. return gce.gceBetaAddresses
  252. }
  253. // AlphaGlobalAddresses returns the interface for the alpha GlobalAddresses.
  254. func (gce *GCE) AlphaGlobalAddresses() AlphaGlobalAddresses {
  255. return gce.gceAlphaGlobalAddresses
  256. }
  257. // GlobalAddresses returns the interface for the ga GlobalAddresses.
  258. func (gce *GCE) GlobalAddresses() GlobalAddresses {
  259. return gce.gceGlobalAddresses
  260. }
  261. // BackendServices returns the interface for the ga BackendServices.
  262. func (gce *GCE) BackendServices() BackendServices {
  263. return gce.gceBackendServices
  264. }
  265. // BetaBackendServices returns the interface for the beta BackendServices.
  266. func (gce *GCE) BetaBackendServices() BetaBackendServices {
  267. return gce.gceBetaBackendServices
  268. }
  269. // AlphaBackendServices returns the interface for the alpha BackendServices.
  270. func (gce *GCE) AlphaBackendServices() AlphaBackendServices {
  271. return gce.gceAlphaBackendServices
  272. }
  273. // RegionBackendServices returns the interface for the ga RegionBackendServices.
  274. func (gce *GCE) RegionBackendServices() RegionBackendServices {
  275. return gce.gceRegionBackendServices
  276. }
  277. // AlphaRegionBackendServices returns the interface for the alpha RegionBackendServices.
  278. func (gce *GCE) AlphaRegionBackendServices() AlphaRegionBackendServices {
  279. return gce.gceAlphaRegionBackendServices
  280. }
  281. // BetaRegionBackendServices returns the interface for the beta RegionBackendServices.
  282. func (gce *GCE) BetaRegionBackendServices() BetaRegionBackendServices {
  283. return gce.gceBetaRegionBackendServices
  284. }
  285. // Disks returns the interface for the ga Disks.
  286. func (gce *GCE) Disks() Disks {
  287. return gce.gceDisks
  288. }
  289. // RegionDisks returns the interface for the ga RegionDisks.
  290. func (gce *GCE) RegionDisks() RegionDisks {
  291. return gce.gceRegionDisks
  292. }
  293. // Firewalls returns the interface for the ga Firewalls.
  294. func (gce *GCE) Firewalls() Firewalls {
  295. return gce.gceFirewalls
  296. }
  297. // ForwardingRules returns the interface for the ga ForwardingRules.
  298. func (gce *GCE) ForwardingRules() ForwardingRules {
  299. return gce.gceForwardingRules
  300. }
  301. // AlphaForwardingRules returns the interface for the alpha ForwardingRules.
  302. func (gce *GCE) AlphaForwardingRules() AlphaForwardingRules {
  303. return gce.gceAlphaForwardingRules
  304. }
  305. // BetaForwardingRules returns the interface for the beta ForwardingRules.
  306. func (gce *GCE) BetaForwardingRules() BetaForwardingRules {
  307. return gce.gceBetaForwardingRules
  308. }
  309. // AlphaGlobalForwardingRules returns the interface for the alpha GlobalForwardingRules.
  310. func (gce *GCE) AlphaGlobalForwardingRules() AlphaGlobalForwardingRules {
  311. return gce.gceAlphaGlobalForwardingRules
  312. }
  313. // BetaGlobalForwardingRules returns the interface for the beta GlobalForwardingRules.
  314. func (gce *GCE) BetaGlobalForwardingRules() BetaGlobalForwardingRules {
  315. return gce.gceBetaGlobalForwardingRules
  316. }
  317. // GlobalForwardingRules returns the interface for the ga GlobalForwardingRules.
  318. func (gce *GCE) GlobalForwardingRules() GlobalForwardingRules {
  319. return gce.gceGlobalForwardingRules
  320. }
  321. // HealthChecks returns the interface for the ga HealthChecks.
  322. func (gce *GCE) HealthChecks() HealthChecks {
  323. return gce.gceHealthChecks
  324. }
  325. // AlphaHealthChecks returns the interface for the alpha HealthChecks.
  326. func (gce *GCE) AlphaHealthChecks() AlphaHealthChecks {
  327. return gce.gceAlphaHealthChecks
  328. }
  329. // BetaHealthChecks returns the interface for the beta HealthChecks.
  330. func (gce *GCE) BetaHealthChecks() BetaHealthChecks {
  331. return gce.gceBetaHealthChecks
  332. }
  333. // AlphaRegionHealthChecks returns the interface for the alpha RegionHealthChecks.
  334. func (gce *GCE) AlphaRegionHealthChecks() AlphaRegionHealthChecks {
  335. return gce.gceAlphaRegionHealthChecks
  336. }
  337. // BetaRegionHealthChecks returns the interface for the beta RegionHealthChecks.
  338. func (gce *GCE) BetaRegionHealthChecks() BetaRegionHealthChecks {
  339. return gce.gceBetaRegionHealthChecks
  340. }
  341. // HttpHealthChecks returns the interface for the ga HttpHealthChecks.
  342. func (gce *GCE) HttpHealthChecks() HttpHealthChecks {
  343. return gce.gceHttpHealthChecks
  344. }
  345. // HttpsHealthChecks returns the interface for the ga HttpsHealthChecks.
  346. func (gce *GCE) HttpsHealthChecks() HttpsHealthChecks {
  347. return gce.gceHttpsHealthChecks
  348. }
  349. // InstanceGroups returns the interface for the ga InstanceGroups.
  350. func (gce *GCE) InstanceGroups() InstanceGroups {
  351. return gce.gceInstanceGroups
  352. }
  353. // Instances returns the interface for the ga Instances.
  354. func (gce *GCE) Instances() Instances {
  355. return gce.gceInstances
  356. }
  357. // BetaInstances returns the interface for the beta Instances.
  358. func (gce *GCE) BetaInstances() BetaInstances {
  359. return gce.gceBetaInstances
  360. }
  361. // AlphaInstances returns the interface for the alpha Instances.
  362. func (gce *GCE) AlphaInstances() AlphaInstances {
  363. return gce.gceAlphaInstances
  364. }
  365. // AlphaNetworks returns the interface for the alpha Networks.
  366. func (gce *GCE) AlphaNetworks() AlphaNetworks {
  367. return gce.gceAlphaNetworks
  368. }
  369. // BetaNetworks returns the interface for the beta Networks.
  370. func (gce *GCE) BetaNetworks() BetaNetworks {
  371. return gce.gceBetaNetworks
  372. }
  373. // Networks returns the interface for the ga Networks.
  374. func (gce *GCE) Networks() Networks {
  375. return gce.gceNetworks
  376. }
  377. // AlphaNetworkEndpointGroups returns the interface for the alpha NetworkEndpointGroups.
  378. func (gce *GCE) AlphaNetworkEndpointGroups() AlphaNetworkEndpointGroups {
  379. return gce.gceAlphaNetworkEndpointGroups
  380. }
  381. // BetaNetworkEndpointGroups returns the interface for the beta NetworkEndpointGroups.
  382. func (gce *GCE) BetaNetworkEndpointGroups() BetaNetworkEndpointGroups {
  383. return gce.gceBetaNetworkEndpointGroups
  384. }
  385. // NetworkEndpointGroups returns the interface for the ga NetworkEndpointGroups.
  386. func (gce *GCE) NetworkEndpointGroups() NetworkEndpointGroups {
  387. return gce.gceNetworkEndpointGroups
  388. }
  389. // Projects returns the interface for the ga Projects.
  390. func (gce *GCE) Projects() Projects {
  391. return gce.gceProjects
  392. }
  393. // Regions returns the interface for the ga Regions.
  394. func (gce *GCE) Regions() Regions {
  395. return gce.gceRegions
  396. }
  397. // Routes returns the interface for the ga Routes.
  398. func (gce *GCE) Routes() Routes {
  399. return gce.gceRoutes
  400. }
  401. // BetaSecurityPolicies returns the interface for the beta SecurityPolicies.
  402. func (gce *GCE) BetaSecurityPolicies() BetaSecurityPolicies {
  403. return gce.gceBetaSecurityPolicies
  404. }
  405. // SslCertificates returns the interface for the ga SslCertificates.
  406. func (gce *GCE) SslCertificates() SslCertificates {
  407. return gce.gceSslCertificates
  408. }
  409. // BetaSslCertificates returns the interface for the beta SslCertificates.
  410. func (gce *GCE) BetaSslCertificates() BetaSslCertificates {
  411. return gce.gceBetaSslCertificates
  412. }
  413. // AlphaSslCertificates returns the interface for the alpha SslCertificates.
  414. func (gce *GCE) AlphaSslCertificates() AlphaSslCertificates {
  415. return gce.gceAlphaSslCertificates
  416. }
  417. // AlphaRegionSslCertificates returns the interface for the alpha RegionSslCertificates.
  418. func (gce *GCE) AlphaRegionSslCertificates() AlphaRegionSslCertificates {
  419. return gce.gceAlphaRegionSslCertificates
  420. }
  421. // BetaRegionSslCertificates returns the interface for the beta RegionSslCertificates.
  422. func (gce *GCE) BetaRegionSslCertificates() BetaRegionSslCertificates {
  423. return gce.gceBetaRegionSslCertificates
  424. }
  425. // AlphaSubnetworks returns the interface for the alpha Subnetworks.
  426. func (gce *GCE) AlphaSubnetworks() AlphaSubnetworks {
  427. return gce.gceAlphaSubnetworks
  428. }
  429. // BetaSubnetworks returns the interface for the beta Subnetworks.
  430. func (gce *GCE) BetaSubnetworks() BetaSubnetworks {
  431. return gce.gceBetaSubnetworks
  432. }
  433. // Subnetworks returns the interface for the ga Subnetworks.
  434. func (gce *GCE) Subnetworks() Subnetworks {
  435. return gce.gceSubnetworks
  436. }
  437. // AlphaTargetHttpProxies returns the interface for the alpha TargetHttpProxies.
  438. func (gce *GCE) AlphaTargetHttpProxies() AlphaTargetHttpProxies {
  439. return gce.gceAlphaTargetHttpProxies
  440. }
  441. // BetaTargetHttpProxies returns the interface for the beta TargetHttpProxies.
  442. func (gce *GCE) BetaTargetHttpProxies() BetaTargetHttpProxies {
  443. return gce.gceBetaTargetHttpProxies
  444. }
  445. // TargetHttpProxies returns the interface for the ga TargetHttpProxies.
  446. func (gce *GCE) TargetHttpProxies() TargetHttpProxies {
  447. return gce.gceTargetHttpProxies
  448. }
  449. // AlphaRegionTargetHttpProxies returns the interface for the alpha RegionTargetHttpProxies.
  450. func (gce *GCE) AlphaRegionTargetHttpProxies() AlphaRegionTargetHttpProxies {
  451. return gce.gceAlphaRegionTargetHttpProxies
  452. }
  453. // BetaRegionTargetHttpProxies returns the interface for the beta RegionTargetHttpProxies.
  454. func (gce *GCE) BetaRegionTargetHttpProxies() BetaRegionTargetHttpProxies {
  455. return gce.gceBetaRegionTargetHttpProxies
  456. }
  457. // TargetHttpsProxies returns the interface for the ga TargetHttpsProxies.
  458. func (gce *GCE) TargetHttpsProxies() TargetHttpsProxies {
  459. return gce.gceTargetHttpsProxies
  460. }
  461. // AlphaTargetHttpsProxies returns the interface for the alpha TargetHttpsProxies.
  462. func (gce *GCE) AlphaTargetHttpsProxies() AlphaTargetHttpsProxies {
  463. return gce.gceAlphaTargetHttpsProxies
  464. }
  465. // BetaTargetHttpsProxies returns the interface for the beta TargetHttpsProxies.
  466. func (gce *GCE) BetaTargetHttpsProxies() BetaTargetHttpsProxies {
  467. return gce.gceBetaTargetHttpsProxies
  468. }
  469. // AlphaRegionTargetHttpsProxies returns the interface for the alpha RegionTargetHttpsProxies.
  470. func (gce *GCE) AlphaRegionTargetHttpsProxies() AlphaRegionTargetHttpsProxies {
  471. return gce.gceAlphaRegionTargetHttpsProxies
  472. }
  473. // BetaRegionTargetHttpsProxies returns the interface for the beta RegionTargetHttpsProxies.
  474. func (gce *GCE) BetaRegionTargetHttpsProxies() BetaRegionTargetHttpsProxies {
  475. return gce.gceBetaRegionTargetHttpsProxies
  476. }
  477. // TargetPools returns the interface for the ga TargetPools.
  478. func (gce *GCE) TargetPools() TargetPools {
  479. return gce.gceTargetPools
  480. }
  481. // AlphaUrlMaps returns the interface for the alpha UrlMaps.
  482. func (gce *GCE) AlphaUrlMaps() AlphaUrlMaps {
  483. return gce.gceAlphaUrlMaps
  484. }
  485. // BetaUrlMaps returns the interface for the beta UrlMaps.
  486. func (gce *GCE) BetaUrlMaps() BetaUrlMaps {
  487. return gce.gceBetaUrlMaps
  488. }
  489. // UrlMaps returns the interface for the ga UrlMaps.
  490. func (gce *GCE) UrlMaps() UrlMaps {
  491. return gce.gceUrlMaps
  492. }
  493. // AlphaRegionUrlMaps returns the interface for the alpha RegionUrlMaps.
  494. func (gce *GCE) AlphaRegionUrlMaps() AlphaRegionUrlMaps {
  495. return gce.gceAlphaRegionUrlMaps
  496. }
  497. // BetaRegionUrlMaps returns the interface for the beta RegionUrlMaps.
  498. func (gce *GCE) BetaRegionUrlMaps() BetaRegionUrlMaps {
  499. return gce.gceBetaRegionUrlMaps
  500. }
  501. // Zones returns the interface for the ga Zones.
  502. func (gce *GCE) Zones() Zones {
  503. return gce.gceZones
  504. }
  505. // NewMockGCE returns a new mock for GCE.
  506. func NewMockGCE(projectRouter ProjectRouter) *MockGCE {
  507. mockAddressesObjs := map[meta.Key]*MockAddressesObj{}
  508. mockBackendServicesObjs := map[meta.Key]*MockBackendServicesObj{}
  509. mockDisksObjs := map[meta.Key]*MockDisksObj{}
  510. mockFirewallsObjs := map[meta.Key]*MockFirewallsObj{}
  511. mockForwardingRulesObjs := map[meta.Key]*MockForwardingRulesObj{}
  512. mockGlobalAddressesObjs := map[meta.Key]*MockGlobalAddressesObj{}
  513. mockGlobalForwardingRulesObjs := map[meta.Key]*MockGlobalForwardingRulesObj{}
  514. mockHealthChecksObjs := map[meta.Key]*MockHealthChecksObj{}
  515. mockHttpHealthChecksObjs := map[meta.Key]*MockHttpHealthChecksObj{}
  516. mockHttpsHealthChecksObjs := map[meta.Key]*MockHttpsHealthChecksObj{}
  517. mockInstanceGroupsObjs := map[meta.Key]*MockInstanceGroupsObj{}
  518. mockInstancesObjs := map[meta.Key]*MockInstancesObj{}
  519. mockNetworkEndpointGroupsObjs := map[meta.Key]*MockNetworkEndpointGroupsObj{}
  520. mockNetworksObjs := map[meta.Key]*MockNetworksObj{}
  521. mockProjectsObjs := map[meta.Key]*MockProjectsObj{}
  522. mockRegionBackendServicesObjs := map[meta.Key]*MockRegionBackendServicesObj{}
  523. mockRegionDisksObjs := map[meta.Key]*MockRegionDisksObj{}
  524. mockRegionHealthChecksObjs := map[meta.Key]*MockRegionHealthChecksObj{}
  525. mockRegionSslCertificatesObjs := map[meta.Key]*MockRegionSslCertificatesObj{}
  526. mockRegionTargetHttpProxiesObjs := map[meta.Key]*MockRegionTargetHttpProxiesObj{}
  527. mockRegionTargetHttpsProxiesObjs := map[meta.Key]*MockRegionTargetHttpsProxiesObj{}
  528. mockRegionUrlMapsObjs := map[meta.Key]*MockRegionUrlMapsObj{}
  529. mockRegionsObjs := map[meta.Key]*MockRegionsObj{}
  530. mockRoutesObjs := map[meta.Key]*MockRoutesObj{}
  531. mockSecurityPoliciesObjs := map[meta.Key]*MockSecurityPoliciesObj{}
  532. mockSslCertificatesObjs := map[meta.Key]*MockSslCertificatesObj{}
  533. mockSubnetworksObjs := map[meta.Key]*MockSubnetworksObj{}
  534. mockTargetHttpProxiesObjs := map[meta.Key]*MockTargetHttpProxiesObj{}
  535. mockTargetHttpsProxiesObjs := map[meta.Key]*MockTargetHttpsProxiesObj{}
  536. mockTargetPoolsObjs := map[meta.Key]*MockTargetPoolsObj{}
  537. mockUrlMapsObjs := map[meta.Key]*MockUrlMapsObj{}
  538. mockZonesObjs := map[meta.Key]*MockZonesObj{}
  539. mock := &MockGCE{
  540. MockAddresses: NewMockAddresses(projectRouter, mockAddressesObjs),
  541. MockAlphaAddresses: NewMockAlphaAddresses(projectRouter, mockAddressesObjs),
  542. MockBetaAddresses: NewMockBetaAddresses(projectRouter, mockAddressesObjs),
  543. MockAlphaGlobalAddresses: NewMockAlphaGlobalAddresses(projectRouter, mockGlobalAddressesObjs),
  544. MockGlobalAddresses: NewMockGlobalAddresses(projectRouter, mockGlobalAddressesObjs),
  545. MockBackendServices: NewMockBackendServices(projectRouter, mockBackendServicesObjs),
  546. MockBetaBackendServices: NewMockBetaBackendServices(projectRouter, mockBackendServicesObjs),
  547. MockAlphaBackendServices: NewMockAlphaBackendServices(projectRouter, mockBackendServicesObjs),
  548. MockRegionBackendServices: NewMockRegionBackendServices(projectRouter, mockRegionBackendServicesObjs),
  549. MockAlphaRegionBackendServices: NewMockAlphaRegionBackendServices(projectRouter, mockRegionBackendServicesObjs),
  550. MockBetaRegionBackendServices: NewMockBetaRegionBackendServices(projectRouter, mockRegionBackendServicesObjs),
  551. MockDisks: NewMockDisks(projectRouter, mockDisksObjs),
  552. MockRegionDisks: NewMockRegionDisks(projectRouter, mockRegionDisksObjs),
  553. MockFirewalls: NewMockFirewalls(projectRouter, mockFirewallsObjs),
  554. MockForwardingRules: NewMockForwardingRules(projectRouter, mockForwardingRulesObjs),
  555. MockAlphaForwardingRules: NewMockAlphaForwardingRules(projectRouter, mockForwardingRulesObjs),
  556. MockBetaForwardingRules: NewMockBetaForwardingRules(projectRouter, mockForwardingRulesObjs),
  557. MockAlphaGlobalForwardingRules: NewMockAlphaGlobalForwardingRules(projectRouter, mockGlobalForwardingRulesObjs),
  558. MockBetaGlobalForwardingRules: NewMockBetaGlobalForwardingRules(projectRouter, mockGlobalForwardingRulesObjs),
  559. MockGlobalForwardingRules: NewMockGlobalForwardingRules(projectRouter, mockGlobalForwardingRulesObjs),
  560. MockHealthChecks: NewMockHealthChecks(projectRouter, mockHealthChecksObjs),
  561. MockAlphaHealthChecks: NewMockAlphaHealthChecks(projectRouter, mockHealthChecksObjs),
  562. MockBetaHealthChecks: NewMockBetaHealthChecks(projectRouter, mockHealthChecksObjs),
  563. MockAlphaRegionHealthChecks: NewMockAlphaRegionHealthChecks(projectRouter, mockRegionHealthChecksObjs),
  564. MockBetaRegionHealthChecks: NewMockBetaRegionHealthChecks(projectRouter, mockRegionHealthChecksObjs),
  565. MockHttpHealthChecks: NewMockHttpHealthChecks(projectRouter, mockHttpHealthChecksObjs),
  566. MockHttpsHealthChecks: NewMockHttpsHealthChecks(projectRouter, mockHttpsHealthChecksObjs),
  567. MockInstanceGroups: NewMockInstanceGroups(projectRouter, mockInstanceGroupsObjs),
  568. MockInstances: NewMockInstances(projectRouter, mockInstancesObjs),
  569. MockBetaInstances: NewMockBetaInstances(projectRouter, mockInstancesObjs),
  570. MockAlphaInstances: NewMockAlphaInstances(projectRouter, mockInstancesObjs),
  571. MockAlphaNetworks: NewMockAlphaNetworks(projectRouter, mockNetworksObjs),
  572. MockBetaNetworks: NewMockBetaNetworks(projectRouter, mockNetworksObjs),
  573. MockNetworks: NewMockNetworks(projectRouter, mockNetworksObjs),
  574. MockAlphaNetworkEndpointGroups: NewMockAlphaNetworkEndpointGroups(projectRouter, mockNetworkEndpointGroupsObjs),
  575. MockBetaNetworkEndpointGroups: NewMockBetaNetworkEndpointGroups(projectRouter, mockNetworkEndpointGroupsObjs),
  576. MockNetworkEndpointGroups: NewMockNetworkEndpointGroups(projectRouter, mockNetworkEndpointGroupsObjs),
  577. MockProjects: NewMockProjects(projectRouter, mockProjectsObjs),
  578. MockRegions: NewMockRegions(projectRouter, mockRegionsObjs),
  579. MockRoutes: NewMockRoutes(projectRouter, mockRoutesObjs),
  580. MockBetaSecurityPolicies: NewMockBetaSecurityPolicies(projectRouter, mockSecurityPoliciesObjs),
  581. MockSslCertificates: NewMockSslCertificates(projectRouter, mockSslCertificatesObjs),
  582. MockBetaSslCertificates: NewMockBetaSslCertificates(projectRouter, mockSslCertificatesObjs),
  583. MockAlphaSslCertificates: NewMockAlphaSslCertificates(projectRouter, mockSslCertificatesObjs),
  584. MockAlphaRegionSslCertificates: NewMockAlphaRegionSslCertificates(projectRouter, mockRegionSslCertificatesObjs),
  585. MockBetaRegionSslCertificates: NewMockBetaRegionSslCertificates(projectRouter, mockRegionSslCertificatesObjs),
  586. MockAlphaSubnetworks: NewMockAlphaSubnetworks(projectRouter, mockSubnetworksObjs),
  587. MockBetaSubnetworks: NewMockBetaSubnetworks(projectRouter, mockSubnetworksObjs),
  588. MockSubnetworks: NewMockSubnetworks(projectRouter, mockSubnetworksObjs),
  589. MockAlphaTargetHttpProxies: NewMockAlphaTargetHttpProxies(projectRouter, mockTargetHttpProxiesObjs),
  590. MockBetaTargetHttpProxies: NewMockBetaTargetHttpProxies(projectRouter, mockTargetHttpProxiesObjs),
  591. MockTargetHttpProxies: NewMockTargetHttpProxies(projectRouter, mockTargetHttpProxiesObjs),
  592. MockAlphaRegionTargetHttpProxies: NewMockAlphaRegionTargetHttpProxies(projectRouter, mockRegionTargetHttpProxiesObjs),
  593. MockBetaRegionTargetHttpProxies: NewMockBetaRegionTargetHttpProxies(projectRouter, mockRegionTargetHttpProxiesObjs),
  594. MockTargetHttpsProxies: NewMockTargetHttpsProxies(projectRouter, mockTargetHttpsProxiesObjs),
  595. MockAlphaTargetHttpsProxies: NewMockAlphaTargetHttpsProxies(projectRouter, mockTargetHttpsProxiesObjs),
  596. MockBetaTargetHttpsProxies: NewMockBetaTargetHttpsProxies(projectRouter, mockTargetHttpsProxiesObjs),
  597. MockAlphaRegionTargetHttpsProxies: NewMockAlphaRegionTargetHttpsProxies(projectRouter, mockRegionTargetHttpsProxiesObjs),
  598. MockBetaRegionTargetHttpsProxies: NewMockBetaRegionTargetHttpsProxies(projectRouter, mockRegionTargetHttpsProxiesObjs),
  599. MockTargetPools: NewMockTargetPools(projectRouter, mockTargetPoolsObjs),
  600. MockAlphaUrlMaps: NewMockAlphaUrlMaps(projectRouter, mockUrlMapsObjs),
  601. MockBetaUrlMaps: NewMockBetaUrlMaps(projectRouter, mockUrlMapsObjs),
  602. MockUrlMaps: NewMockUrlMaps(projectRouter, mockUrlMapsObjs),
  603. MockAlphaRegionUrlMaps: NewMockAlphaRegionUrlMaps(projectRouter, mockRegionUrlMapsObjs),
  604. MockBetaRegionUrlMaps: NewMockBetaRegionUrlMaps(projectRouter, mockRegionUrlMapsObjs),
  605. MockZones: NewMockZones(projectRouter, mockZonesObjs),
  606. }
  607. return mock
  608. }
  609. // MockGCE implements Cloud.
  610. var _ Cloud = (*MockGCE)(nil)
  611. // MockGCE is the mock for the compute API.
  612. type MockGCE struct {
  613. MockAddresses *MockAddresses
  614. MockAlphaAddresses *MockAlphaAddresses
  615. MockBetaAddresses *MockBetaAddresses
  616. MockAlphaGlobalAddresses *MockAlphaGlobalAddresses
  617. MockGlobalAddresses *MockGlobalAddresses
  618. MockBackendServices *MockBackendServices
  619. MockBetaBackendServices *MockBetaBackendServices
  620. MockAlphaBackendServices *MockAlphaBackendServices
  621. MockRegionBackendServices *MockRegionBackendServices
  622. MockAlphaRegionBackendServices *MockAlphaRegionBackendServices
  623. MockBetaRegionBackendServices *MockBetaRegionBackendServices
  624. MockDisks *MockDisks
  625. MockRegionDisks *MockRegionDisks
  626. MockFirewalls *MockFirewalls
  627. MockForwardingRules *MockForwardingRules
  628. MockAlphaForwardingRules *MockAlphaForwardingRules
  629. MockBetaForwardingRules *MockBetaForwardingRules
  630. MockAlphaGlobalForwardingRules *MockAlphaGlobalForwardingRules
  631. MockBetaGlobalForwardingRules *MockBetaGlobalForwardingRules
  632. MockGlobalForwardingRules *MockGlobalForwardingRules
  633. MockHealthChecks *MockHealthChecks
  634. MockAlphaHealthChecks *MockAlphaHealthChecks
  635. MockBetaHealthChecks *MockBetaHealthChecks
  636. MockAlphaRegionHealthChecks *MockAlphaRegionHealthChecks
  637. MockBetaRegionHealthChecks *MockBetaRegionHealthChecks
  638. MockHttpHealthChecks *MockHttpHealthChecks
  639. MockHttpsHealthChecks *MockHttpsHealthChecks
  640. MockInstanceGroups *MockInstanceGroups
  641. MockInstances *MockInstances
  642. MockBetaInstances *MockBetaInstances
  643. MockAlphaInstances *MockAlphaInstances
  644. MockAlphaNetworks *MockAlphaNetworks
  645. MockBetaNetworks *MockBetaNetworks
  646. MockNetworks *MockNetworks
  647. MockAlphaNetworkEndpointGroups *MockAlphaNetworkEndpointGroups
  648. MockBetaNetworkEndpointGroups *MockBetaNetworkEndpointGroups
  649. MockNetworkEndpointGroups *MockNetworkEndpointGroups
  650. MockProjects *MockProjects
  651. MockRegions *MockRegions
  652. MockRoutes *MockRoutes
  653. MockBetaSecurityPolicies *MockBetaSecurityPolicies
  654. MockSslCertificates *MockSslCertificates
  655. MockBetaSslCertificates *MockBetaSslCertificates
  656. MockAlphaSslCertificates *MockAlphaSslCertificates
  657. MockAlphaRegionSslCertificates *MockAlphaRegionSslCertificates
  658. MockBetaRegionSslCertificates *MockBetaRegionSslCertificates
  659. MockAlphaSubnetworks *MockAlphaSubnetworks
  660. MockBetaSubnetworks *MockBetaSubnetworks
  661. MockSubnetworks *MockSubnetworks
  662. MockAlphaTargetHttpProxies *MockAlphaTargetHttpProxies
  663. MockBetaTargetHttpProxies *MockBetaTargetHttpProxies
  664. MockTargetHttpProxies *MockTargetHttpProxies
  665. MockAlphaRegionTargetHttpProxies *MockAlphaRegionTargetHttpProxies
  666. MockBetaRegionTargetHttpProxies *MockBetaRegionTargetHttpProxies
  667. MockTargetHttpsProxies *MockTargetHttpsProxies
  668. MockAlphaTargetHttpsProxies *MockAlphaTargetHttpsProxies
  669. MockBetaTargetHttpsProxies *MockBetaTargetHttpsProxies
  670. MockAlphaRegionTargetHttpsProxies *MockAlphaRegionTargetHttpsProxies
  671. MockBetaRegionTargetHttpsProxies *MockBetaRegionTargetHttpsProxies
  672. MockTargetPools *MockTargetPools
  673. MockAlphaUrlMaps *MockAlphaUrlMaps
  674. MockBetaUrlMaps *MockBetaUrlMaps
  675. MockUrlMaps *MockUrlMaps
  676. MockAlphaRegionUrlMaps *MockAlphaRegionUrlMaps
  677. MockBetaRegionUrlMaps *MockBetaRegionUrlMaps
  678. MockZones *MockZones
  679. }
  680. // Addresses returns the interface for the ga Addresses.
  681. func (mock *MockGCE) Addresses() Addresses {
  682. return mock.MockAddresses
  683. }
  684. // AlphaAddresses returns the interface for the alpha Addresses.
  685. func (mock *MockGCE) AlphaAddresses() AlphaAddresses {
  686. return mock.MockAlphaAddresses
  687. }
  688. // BetaAddresses returns the interface for the beta Addresses.
  689. func (mock *MockGCE) BetaAddresses() BetaAddresses {
  690. return mock.MockBetaAddresses
  691. }
  692. // AlphaGlobalAddresses returns the interface for the alpha GlobalAddresses.
  693. func (mock *MockGCE) AlphaGlobalAddresses() AlphaGlobalAddresses {
  694. return mock.MockAlphaGlobalAddresses
  695. }
  696. // GlobalAddresses returns the interface for the ga GlobalAddresses.
  697. func (mock *MockGCE) GlobalAddresses() GlobalAddresses {
  698. return mock.MockGlobalAddresses
  699. }
  700. // BackendServices returns the interface for the ga BackendServices.
  701. func (mock *MockGCE) BackendServices() BackendServices {
  702. return mock.MockBackendServices
  703. }
  704. // BetaBackendServices returns the interface for the beta BackendServices.
  705. func (mock *MockGCE) BetaBackendServices() BetaBackendServices {
  706. return mock.MockBetaBackendServices
  707. }
  708. // AlphaBackendServices returns the interface for the alpha BackendServices.
  709. func (mock *MockGCE) AlphaBackendServices() AlphaBackendServices {
  710. return mock.MockAlphaBackendServices
  711. }
  712. // RegionBackendServices returns the interface for the ga RegionBackendServices.
  713. func (mock *MockGCE) RegionBackendServices() RegionBackendServices {
  714. return mock.MockRegionBackendServices
  715. }
  716. // AlphaRegionBackendServices returns the interface for the alpha RegionBackendServices.
  717. func (mock *MockGCE) AlphaRegionBackendServices() AlphaRegionBackendServices {
  718. return mock.MockAlphaRegionBackendServices
  719. }
  720. // BetaRegionBackendServices returns the interface for the beta RegionBackendServices.
  721. func (mock *MockGCE) BetaRegionBackendServices() BetaRegionBackendServices {
  722. return mock.MockBetaRegionBackendServices
  723. }
  724. // Disks returns the interface for the ga Disks.
  725. func (mock *MockGCE) Disks() Disks {
  726. return mock.MockDisks
  727. }
  728. // RegionDisks returns the interface for the ga RegionDisks.
  729. func (mock *MockGCE) RegionDisks() RegionDisks {
  730. return mock.MockRegionDisks
  731. }
  732. // Firewalls returns the interface for the ga Firewalls.
  733. func (mock *MockGCE) Firewalls() Firewalls {
  734. return mock.MockFirewalls
  735. }
  736. // ForwardingRules returns the interface for the ga ForwardingRules.
  737. func (mock *MockGCE) ForwardingRules() ForwardingRules {
  738. return mock.MockForwardingRules
  739. }
  740. // AlphaForwardingRules returns the interface for the alpha ForwardingRules.
  741. func (mock *MockGCE) AlphaForwardingRules() AlphaForwardingRules {
  742. return mock.MockAlphaForwardingRules
  743. }
  744. // BetaForwardingRules returns the interface for the beta ForwardingRules.
  745. func (mock *MockGCE) BetaForwardingRules() BetaForwardingRules {
  746. return mock.MockBetaForwardingRules
  747. }
  748. // AlphaGlobalForwardingRules returns the interface for the alpha GlobalForwardingRules.
  749. func (mock *MockGCE) AlphaGlobalForwardingRules() AlphaGlobalForwardingRules {
  750. return mock.MockAlphaGlobalForwardingRules
  751. }
  752. // BetaGlobalForwardingRules returns the interface for the beta GlobalForwardingRules.
  753. func (mock *MockGCE) BetaGlobalForwardingRules() BetaGlobalForwardingRules {
  754. return mock.MockBetaGlobalForwardingRules
  755. }
  756. // GlobalForwardingRules returns the interface for the ga GlobalForwardingRules.
  757. func (mock *MockGCE) GlobalForwardingRules() GlobalForwardingRules {
  758. return mock.MockGlobalForwardingRules
  759. }
  760. // HealthChecks returns the interface for the ga HealthChecks.
  761. func (mock *MockGCE) HealthChecks() HealthChecks {
  762. return mock.MockHealthChecks
  763. }
  764. // AlphaHealthChecks returns the interface for the alpha HealthChecks.
  765. func (mock *MockGCE) AlphaHealthChecks() AlphaHealthChecks {
  766. return mock.MockAlphaHealthChecks
  767. }
  768. // BetaHealthChecks returns the interface for the beta HealthChecks.
  769. func (mock *MockGCE) BetaHealthChecks() BetaHealthChecks {
  770. return mock.MockBetaHealthChecks
  771. }
  772. // AlphaRegionHealthChecks returns the interface for the alpha RegionHealthChecks.
  773. func (mock *MockGCE) AlphaRegionHealthChecks() AlphaRegionHealthChecks {
  774. return mock.MockAlphaRegionHealthChecks
  775. }
  776. // BetaRegionHealthChecks returns the interface for the beta RegionHealthChecks.
  777. func (mock *MockGCE) BetaRegionHealthChecks() BetaRegionHealthChecks {
  778. return mock.MockBetaRegionHealthChecks
  779. }
  780. // HttpHealthChecks returns the interface for the ga HttpHealthChecks.
  781. func (mock *MockGCE) HttpHealthChecks() HttpHealthChecks {
  782. return mock.MockHttpHealthChecks
  783. }
  784. // HttpsHealthChecks returns the interface for the ga HttpsHealthChecks.
  785. func (mock *MockGCE) HttpsHealthChecks() HttpsHealthChecks {
  786. return mock.MockHttpsHealthChecks
  787. }
  788. // InstanceGroups returns the interface for the ga InstanceGroups.
  789. func (mock *MockGCE) InstanceGroups() InstanceGroups {
  790. return mock.MockInstanceGroups
  791. }
  792. // Instances returns the interface for the ga Instances.
  793. func (mock *MockGCE) Instances() Instances {
  794. return mock.MockInstances
  795. }
  796. // BetaInstances returns the interface for the beta Instances.
  797. func (mock *MockGCE) BetaInstances() BetaInstances {
  798. return mock.MockBetaInstances
  799. }
  800. // AlphaInstances returns the interface for the alpha Instances.
  801. func (mock *MockGCE) AlphaInstances() AlphaInstances {
  802. return mock.MockAlphaInstances
  803. }
  804. // AlphaNetworks returns the interface for the alpha Networks.
  805. func (mock *MockGCE) AlphaNetworks() AlphaNetworks {
  806. return mock.MockAlphaNetworks
  807. }
  808. // BetaNetworks returns the interface for the beta Networks.
  809. func (mock *MockGCE) BetaNetworks() BetaNetworks {
  810. return mock.MockBetaNetworks
  811. }
  812. // Networks returns the interface for the ga Networks.
  813. func (mock *MockGCE) Networks() Networks {
  814. return mock.MockNetworks
  815. }
  816. // AlphaNetworkEndpointGroups returns the interface for the alpha NetworkEndpointGroups.
  817. func (mock *MockGCE) AlphaNetworkEndpointGroups() AlphaNetworkEndpointGroups {
  818. return mock.MockAlphaNetworkEndpointGroups
  819. }
  820. // BetaNetworkEndpointGroups returns the interface for the beta NetworkEndpointGroups.
  821. func (mock *MockGCE) BetaNetworkEndpointGroups() BetaNetworkEndpointGroups {
  822. return mock.MockBetaNetworkEndpointGroups
  823. }
  824. // NetworkEndpointGroups returns the interface for the ga NetworkEndpointGroups.
  825. func (mock *MockGCE) NetworkEndpointGroups() NetworkEndpointGroups {
  826. return mock.MockNetworkEndpointGroups
  827. }
  828. // Projects returns the interface for the ga Projects.
  829. func (mock *MockGCE) Projects() Projects {
  830. return mock.MockProjects
  831. }
  832. // Regions returns the interface for the ga Regions.
  833. func (mock *MockGCE) Regions() Regions {
  834. return mock.MockRegions
  835. }
  836. // Routes returns the interface for the ga Routes.
  837. func (mock *MockGCE) Routes() Routes {
  838. return mock.MockRoutes
  839. }
  840. // BetaSecurityPolicies returns the interface for the beta SecurityPolicies.
  841. func (mock *MockGCE) BetaSecurityPolicies() BetaSecurityPolicies {
  842. return mock.MockBetaSecurityPolicies
  843. }
  844. // SslCertificates returns the interface for the ga SslCertificates.
  845. func (mock *MockGCE) SslCertificates() SslCertificates {
  846. return mock.MockSslCertificates
  847. }
  848. // BetaSslCertificates returns the interface for the beta SslCertificates.
  849. func (mock *MockGCE) BetaSslCertificates() BetaSslCertificates {
  850. return mock.MockBetaSslCertificates
  851. }
  852. // AlphaSslCertificates returns the interface for the alpha SslCertificates.
  853. func (mock *MockGCE) AlphaSslCertificates() AlphaSslCertificates {
  854. return mock.MockAlphaSslCertificates
  855. }
  856. // AlphaRegionSslCertificates returns the interface for the alpha RegionSslCertificates.
  857. func (mock *MockGCE) AlphaRegionSslCertificates() AlphaRegionSslCertificates {
  858. return mock.MockAlphaRegionSslCertificates
  859. }
  860. // BetaRegionSslCertificates returns the interface for the beta RegionSslCertificates.
  861. func (mock *MockGCE) BetaRegionSslCertificates() BetaRegionSslCertificates {
  862. return mock.MockBetaRegionSslCertificates
  863. }
  864. // AlphaSubnetworks returns the interface for the alpha Subnetworks.
  865. func (mock *MockGCE) AlphaSubnetworks() AlphaSubnetworks {
  866. return mock.MockAlphaSubnetworks
  867. }
  868. // BetaSubnetworks returns the interface for the beta Subnetworks.
  869. func (mock *MockGCE) BetaSubnetworks() BetaSubnetworks {
  870. return mock.MockBetaSubnetworks
  871. }
  872. // Subnetworks returns the interface for the ga Subnetworks.
  873. func (mock *MockGCE) Subnetworks() Subnetworks {
  874. return mock.MockSubnetworks
  875. }
  876. // AlphaTargetHttpProxies returns the interface for the alpha TargetHttpProxies.
  877. func (mock *MockGCE) AlphaTargetHttpProxies() AlphaTargetHttpProxies {
  878. return mock.MockAlphaTargetHttpProxies
  879. }
  880. // BetaTargetHttpProxies returns the interface for the beta TargetHttpProxies.
  881. func (mock *MockGCE) BetaTargetHttpProxies() BetaTargetHttpProxies {
  882. return mock.MockBetaTargetHttpProxies
  883. }
  884. // TargetHttpProxies returns the interface for the ga TargetHttpProxies.
  885. func (mock *MockGCE) TargetHttpProxies() TargetHttpProxies {
  886. return mock.MockTargetHttpProxies
  887. }
  888. // AlphaRegionTargetHttpProxies returns the interface for the alpha RegionTargetHttpProxies.
  889. func (mock *MockGCE) AlphaRegionTargetHttpProxies() AlphaRegionTargetHttpProxies {
  890. return mock.MockAlphaRegionTargetHttpProxies
  891. }
  892. // BetaRegionTargetHttpProxies returns the interface for the beta RegionTargetHttpProxies.
  893. func (mock *MockGCE) BetaRegionTargetHttpProxies() BetaRegionTargetHttpProxies {
  894. return mock.MockBetaRegionTargetHttpProxies
  895. }
  896. // TargetHttpsProxies returns the interface for the ga TargetHttpsProxies.
  897. func (mock *MockGCE) TargetHttpsProxies() TargetHttpsProxies {
  898. return mock.MockTargetHttpsProxies
  899. }
  900. // AlphaTargetHttpsProxies returns the interface for the alpha TargetHttpsProxies.
  901. func (mock *MockGCE) AlphaTargetHttpsProxies() AlphaTargetHttpsProxies {
  902. return mock.MockAlphaTargetHttpsProxies
  903. }
  904. // BetaTargetHttpsProxies returns the interface for the beta TargetHttpsProxies.
  905. func (mock *MockGCE) BetaTargetHttpsProxies() BetaTargetHttpsProxies {
  906. return mock.MockBetaTargetHttpsProxies
  907. }
  908. // AlphaRegionTargetHttpsProxies returns the interface for the alpha RegionTargetHttpsProxies.
  909. func (mock *MockGCE) AlphaRegionTargetHttpsProxies() AlphaRegionTargetHttpsProxies {
  910. return mock.MockAlphaRegionTargetHttpsProxies
  911. }
  912. // BetaRegionTargetHttpsProxies returns the interface for the beta RegionTargetHttpsProxies.
  913. func (mock *MockGCE) BetaRegionTargetHttpsProxies() BetaRegionTargetHttpsProxies {
  914. return mock.MockBetaRegionTargetHttpsProxies
  915. }
  916. // TargetPools returns the interface for the ga TargetPools.
  917. func (mock *MockGCE) TargetPools() TargetPools {
  918. return mock.MockTargetPools
  919. }
  920. // AlphaUrlMaps returns the interface for the alpha UrlMaps.
  921. func (mock *MockGCE) AlphaUrlMaps() AlphaUrlMaps {
  922. return mock.MockAlphaUrlMaps
  923. }
  924. // BetaUrlMaps returns the interface for the beta UrlMaps.
  925. func (mock *MockGCE) BetaUrlMaps() BetaUrlMaps {
  926. return mock.MockBetaUrlMaps
  927. }
  928. // UrlMaps returns the interface for the ga UrlMaps.
  929. func (mock *MockGCE) UrlMaps() UrlMaps {
  930. return mock.MockUrlMaps
  931. }
  932. // AlphaRegionUrlMaps returns the interface for the alpha RegionUrlMaps.
  933. func (mock *MockGCE) AlphaRegionUrlMaps() AlphaRegionUrlMaps {
  934. return mock.MockAlphaRegionUrlMaps
  935. }
  936. // BetaRegionUrlMaps returns the interface for the beta RegionUrlMaps.
  937. func (mock *MockGCE) BetaRegionUrlMaps() BetaRegionUrlMaps {
  938. return mock.MockBetaRegionUrlMaps
  939. }
  940. // Zones returns the interface for the ga Zones.
  941. func (mock *MockGCE) Zones() Zones {
  942. return mock.MockZones
  943. }
  944. // MockAddressesObj is used to store the various object versions in the shared
  945. // map of mocked objects. This allows for multiple API versions to co-exist and
  946. // share the same "view" of the objects in the backend.
  947. type MockAddressesObj struct {
  948. Obj interface{}
  949. }
  950. // ToAlpha retrieves the given version of the object.
  951. func (m *MockAddressesObj) ToAlpha() *alpha.Address {
  952. if ret, ok := m.Obj.(*alpha.Address); ok {
  953. return ret
  954. }
  955. // Convert the object via JSON copying to the type that was requested.
  956. ret := &alpha.Address{}
  957. if err := copyViaJSON(ret, m.Obj); err != nil {
  958. klog.Errorf("Could not convert %T to *alpha.Address via JSON: %v", m.Obj, err)
  959. }
  960. return ret
  961. }
  962. // ToBeta retrieves the given version of the object.
  963. func (m *MockAddressesObj) ToBeta() *beta.Address {
  964. if ret, ok := m.Obj.(*beta.Address); ok {
  965. return ret
  966. }
  967. // Convert the object via JSON copying to the type that was requested.
  968. ret := &beta.Address{}
  969. if err := copyViaJSON(ret, m.Obj); err != nil {
  970. klog.Errorf("Could not convert %T to *beta.Address via JSON: %v", m.Obj, err)
  971. }
  972. return ret
  973. }
  974. // ToGA retrieves the given version of the object.
  975. func (m *MockAddressesObj) ToGA() *ga.Address {
  976. if ret, ok := m.Obj.(*ga.Address); ok {
  977. return ret
  978. }
  979. // Convert the object via JSON copying to the type that was requested.
  980. ret := &ga.Address{}
  981. if err := copyViaJSON(ret, m.Obj); err != nil {
  982. klog.Errorf("Could not convert %T to *ga.Address via JSON: %v", m.Obj, err)
  983. }
  984. return ret
  985. }
  986. // MockBackendServicesObj is used to store the various object versions in the shared
  987. // map of mocked objects. This allows for multiple API versions to co-exist and
  988. // share the same "view" of the objects in the backend.
  989. type MockBackendServicesObj struct {
  990. Obj interface{}
  991. }
  992. // ToAlpha retrieves the given version of the object.
  993. func (m *MockBackendServicesObj) ToAlpha() *alpha.BackendService {
  994. if ret, ok := m.Obj.(*alpha.BackendService); ok {
  995. return ret
  996. }
  997. // Convert the object via JSON copying to the type that was requested.
  998. ret := &alpha.BackendService{}
  999. if err := copyViaJSON(ret, m.Obj); err != nil {
  1000. klog.Errorf("Could not convert %T to *alpha.BackendService via JSON: %v", m.Obj, err)
  1001. }
  1002. return ret
  1003. }
  1004. // ToBeta retrieves the given version of the object.
  1005. func (m *MockBackendServicesObj) ToBeta() *beta.BackendService {
  1006. if ret, ok := m.Obj.(*beta.BackendService); ok {
  1007. return ret
  1008. }
  1009. // Convert the object via JSON copying to the type that was requested.
  1010. ret := &beta.BackendService{}
  1011. if err := copyViaJSON(ret, m.Obj); err != nil {
  1012. klog.Errorf("Could not convert %T to *beta.BackendService via JSON: %v", m.Obj, err)
  1013. }
  1014. return ret
  1015. }
  1016. // ToGA retrieves the given version of the object.
  1017. func (m *MockBackendServicesObj) ToGA() *ga.BackendService {
  1018. if ret, ok := m.Obj.(*ga.BackendService); ok {
  1019. return ret
  1020. }
  1021. // Convert the object via JSON copying to the type that was requested.
  1022. ret := &ga.BackendService{}
  1023. if err := copyViaJSON(ret, m.Obj); err != nil {
  1024. klog.Errorf("Could not convert %T to *ga.BackendService via JSON: %v", m.Obj, err)
  1025. }
  1026. return ret
  1027. }
  1028. // MockDisksObj is used to store the various object versions in the shared
  1029. // map of mocked objects. This allows for multiple API versions to co-exist and
  1030. // share the same "view" of the objects in the backend.
  1031. type MockDisksObj struct {
  1032. Obj interface{}
  1033. }
  1034. // ToGA retrieves the given version of the object.
  1035. func (m *MockDisksObj) ToGA() *ga.Disk {
  1036. if ret, ok := m.Obj.(*ga.Disk); ok {
  1037. return ret
  1038. }
  1039. // Convert the object via JSON copying to the type that was requested.
  1040. ret := &ga.Disk{}
  1041. if err := copyViaJSON(ret, m.Obj); err != nil {
  1042. klog.Errorf("Could not convert %T to *ga.Disk via JSON: %v", m.Obj, err)
  1043. }
  1044. return ret
  1045. }
  1046. // MockFirewallsObj is used to store the various object versions in the shared
  1047. // map of mocked objects. This allows for multiple API versions to co-exist and
  1048. // share the same "view" of the objects in the backend.
  1049. type MockFirewallsObj struct {
  1050. Obj interface{}
  1051. }
  1052. // ToGA retrieves the given version of the object.
  1053. func (m *MockFirewallsObj) ToGA() *ga.Firewall {
  1054. if ret, ok := m.Obj.(*ga.Firewall); ok {
  1055. return ret
  1056. }
  1057. // Convert the object via JSON copying to the type that was requested.
  1058. ret := &ga.Firewall{}
  1059. if err := copyViaJSON(ret, m.Obj); err != nil {
  1060. klog.Errorf("Could not convert %T to *ga.Firewall via JSON: %v", m.Obj, err)
  1061. }
  1062. return ret
  1063. }
  1064. // MockForwardingRulesObj is used to store the various object versions in the shared
  1065. // map of mocked objects. This allows for multiple API versions to co-exist and
  1066. // share the same "view" of the objects in the backend.
  1067. type MockForwardingRulesObj struct {
  1068. Obj interface{}
  1069. }
  1070. // ToAlpha retrieves the given version of the object.
  1071. func (m *MockForwardingRulesObj) ToAlpha() *alpha.ForwardingRule {
  1072. if ret, ok := m.Obj.(*alpha.ForwardingRule); ok {
  1073. return ret
  1074. }
  1075. // Convert the object via JSON copying to the type that was requested.
  1076. ret := &alpha.ForwardingRule{}
  1077. if err := copyViaJSON(ret, m.Obj); err != nil {
  1078. klog.Errorf("Could not convert %T to *alpha.ForwardingRule via JSON: %v", m.Obj, err)
  1079. }
  1080. return ret
  1081. }
  1082. // ToBeta retrieves the given version of the object.
  1083. func (m *MockForwardingRulesObj) ToBeta() *beta.ForwardingRule {
  1084. if ret, ok := m.Obj.(*beta.ForwardingRule); ok {
  1085. return ret
  1086. }
  1087. // Convert the object via JSON copying to the type that was requested.
  1088. ret := &beta.ForwardingRule{}
  1089. if err := copyViaJSON(ret, m.Obj); err != nil {
  1090. klog.Errorf("Could not convert %T to *beta.ForwardingRule via JSON: %v", m.Obj, err)
  1091. }
  1092. return ret
  1093. }
  1094. // ToGA retrieves the given version of the object.
  1095. func (m *MockForwardingRulesObj) ToGA() *ga.ForwardingRule {
  1096. if ret, ok := m.Obj.(*ga.ForwardingRule); ok {
  1097. return ret
  1098. }
  1099. // Convert the object via JSON copying to the type that was requested.
  1100. ret := &ga.ForwardingRule{}
  1101. if err := copyViaJSON(ret, m.Obj); err != nil {
  1102. klog.Errorf("Could not convert %T to *ga.ForwardingRule via JSON: %v", m.Obj, err)
  1103. }
  1104. return ret
  1105. }
  1106. // MockGlobalAddressesObj is used to store the various object versions in the shared
  1107. // map of mocked objects. This allows for multiple API versions to co-exist and
  1108. // share the same "view" of the objects in the backend.
  1109. type MockGlobalAddressesObj struct {
  1110. Obj interface{}
  1111. }
  1112. // ToAlpha retrieves the given version of the object.
  1113. func (m *MockGlobalAddressesObj) ToAlpha() *alpha.Address {
  1114. if ret, ok := m.Obj.(*alpha.Address); ok {
  1115. return ret
  1116. }
  1117. // Convert the object via JSON copying to the type that was requested.
  1118. ret := &alpha.Address{}
  1119. if err := copyViaJSON(ret, m.Obj); err != nil {
  1120. klog.Errorf("Could not convert %T to *alpha.Address via JSON: %v", m.Obj, err)
  1121. }
  1122. return ret
  1123. }
  1124. // ToGA retrieves the given version of the object.
  1125. func (m *MockGlobalAddressesObj) ToGA() *ga.Address {
  1126. if ret, ok := m.Obj.(*ga.Address); ok {
  1127. return ret
  1128. }
  1129. // Convert the object via JSON copying to the type that was requested.
  1130. ret := &ga.Address{}
  1131. if err := copyViaJSON(ret, m.Obj); err != nil {
  1132. klog.Errorf("Could not convert %T to *ga.Address via JSON: %v", m.Obj, err)
  1133. }
  1134. return ret
  1135. }
  1136. // MockGlobalForwardingRulesObj is used to store the various object versions in the shared
  1137. // map of mocked objects. This allows for multiple API versions to co-exist and
  1138. // share the same "view" of the objects in the backend.
  1139. type MockGlobalForwardingRulesObj struct {
  1140. Obj interface{}
  1141. }
  1142. // ToAlpha retrieves the given version of the object.
  1143. func (m *MockGlobalForwardingRulesObj) ToAlpha() *alpha.ForwardingRule {
  1144. if ret, ok := m.Obj.(*alpha.ForwardingRule); ok {
  1145. return ret
  1146. }
  1147. // Convert the object via JSON copying to the type that was requested.
  1148. ret := &alpha.ForwardingRule{}
  1149. if err := copyViaJSON(ret, m.Obj); err != nil {
  1150. klog.Errorf("Could not convert %T to *alpha.ForwardingRule via JSON: %v", m.Obj, err)
  1151. }
  1152. return ret
  1153. }
  1154. // ToBeta retrieves the given version of the object.
  1155. func (m *MockGlobalForwardingRulesObj) ToBeta() *beta.ForwardingRule {
  1156. if ret, ok := m.Obj.(*beta.ForwardingRule); ok {
  1157. return ret
  1158. }
  1159. // Convert the object via JSON copying to the type that was requested.
  1160. ret := &beta.ForwardingRule{}
  1161. if err := copyViaJSON(ret, m.Obj); err != nil {
  1162. klog.Errorf("Could not convert %T to *beta.ForwardingRule via JSON: %v", m.Obj, err)
  1163. }
  1164. return ret
  1165. }
  1166. // ToGA retrieves the given version of the object.
  1167. func (m *MockGlobalForwardingRulesObj) ToGA() *ga.ForwardingRule {
  1168. if ret, ok := m.Obj.(*ga.ForwardingRule); ok {
  1169. return ret
  1170. }
  1171. // Convert the object via JSON copying to the type that was requested.
  1172. ret := &ga.ForwardingRule{}
  1173. if err := copyViaJSON(ret, m.Obj); err != nil {
  1174. klog.Errorf("Could not convert %T to *ga.ForwardingRule via JSON: %v", m.Obj, err)
  1175. }
  1176. return ret
  1177. }
  1178. // MockHealthChecksObj is used to store the various object versions in the shared
  1179. // map of mocked objects. This allows for multiple API versions to co-exist and
  1180. // share the same "view" of the objects in the backend.
  1181. type MockHealthChecksObj struct {
  1182. Obj interface{}
  1183. }
  1184. // ToAlpha retrieves the given version of the object.
  1185. func (m *MockHealthChecksObj) ToAlpha() *alpha.HealthCheck {
  1186. if ret, ok := m.Obj.(*alpha.HealthCheck); ok {
  1187. return ret
  1188. }
  1189. // Convert the object via JSON copying to the type that was requested.
  1190. ret := &alpha.HealthCheck{}
  1191. if err := copyViaJSON(ret, m.Obj); err != nil {
  1192. klog.Errorf("Could not convert %T to *alpha.HealthCheck via JSON: %v", m.Obj, err)
  1193. }
  1194. return ret
  1195. }
  1196. // ToBeta retrieves the given version of the object.
  1197. func (m *MockHealthChecksObj) ToBeta() *beta.HealthCheck {
  1198. if ret, ok := m.Obj.(*beta.HealthCheck); ok {
  1199. return ret
  1200. }
  1201. // Convert the object via JSON copying to the type that was requested.
  1202. ret := &beta.HealthCheck{}
  1203. if err := copyViaJSON(ret, m.Obj); err != nil {
  1204. klog.Errorf("Could not convert %T to *beta.HealthCheck via JSON: %v", m.Obj, err)
  1205. }
  1206. return ret
  1207. }
  1208. // ToGA retrieves the given version of the object.
  1209. func (m *MockHealthChecksObj) ToGA() *ga.HealthCheck {
  1210. if ret, ok := m.Obj.(*ga.HealthCheck); ok {
  1211. return ret
  1212. }
  1213. // Convert the object via JSON copying to the type that was requested.
  1214. ret := &ga.HealthCheck{}
  1215. if err := copyViaJSON(ret, m.Obj); err != nil {
  1216. klog.Errorf("Could not convert %T to *ga.HealthCheck via JSON: %v", m.Obj, err)
  1217. }
  1218. return ret
  1219. }
  1220. // MockHttpHealthChecksObj is used to store the various object versions in the shared
  1221. // map of mocked objects. This allows for multiple API versions to co-exist and
  1222. // share the same "view" of the objects in the backend.
  1223. type MockHttpHealthChecksObj struct {
  1224. Obj interface{}
  1225. }
  1226. // ToGA retrieves the given version of the object.
  1227. func (m *MockHttpHealthChecksObj) ToGA() *ga.HttpHealthCheck {
  1228. if ret, ok := m.Obj.(*ga.HttpHealthCheck); ok {
  1229. return ret
  1230. }
  1231. // Convert the object via JSON copying to the type that was requested.
  1232. ret := &ga.HttpHealthCheck{}
  1233. if err := copyViaJSON(ret, m.Obj); err != nil {
  1234. klog.Errorf("Could not convert %T to *ga.HttpHealthCheck via JSON: %v", m.Obj, err)
  1235. }
  1236. return ret
  1237. }
  1238. // MockHttpsHealthChecksObj is used to store the various object versions in the shared
  1239. // map of mocked objects. This allows for multiple API versions to co-exist and
  1240. // share the same "view" of the objects in the backend.
  1241. type MockHttpsHealthChecksObj struct {
  1242. Obj interface{}
  1243. }
  1244. // ToGA retrieves the given version of the object.
  1245. func (m *MockHttpsHealthChecksObj) ToGA() *ga.HttpsHealthCheck {
  1246. if ret, ok := m.Obj.(*ga.HttpsHealthCheck); ok {
  1247. return ret
  1248. }
  1249. // Convert the object via JSON copying to the type that was requested.
  1250. ret := &ga.HttpsHealthCheck{}
  1251. if err := copyViaJSON(ret, m.Obj); err != nil {
  1252. klog.Errorf("Could not convert %T to *ga.HttpsHealthCheck via JSON: %v", m.Obj, err)
  1253. }
  1254. return ret
  1255. }
  1256. // MockInstanceGroupsObj is used to store the various object versions in the shared
  1257. // map of mocked objects. This allows for multiple API versions to co-exist and
  1258. // share the same "view" of the objects in the backend.
  1259. type MockInstanceGroupsObj struct {
  1260. Obj interface{}
  1261. }
  1262. // ToGA retrieves the given version of the object.
  1263. func (m *MockInstanceGroupsObj) ToGA() *ga.InstanceGroup {
  1264. if ret, ok := m.Obj.(*ga.InstanceGroup); ok {
  1265. return ret
  1266. }
  1267. // Convert the object via JSON copying to the type that was requested.
  1268. ret := &ga.InstanceGroup{}
  1269. if err := copyViaJSON(ret, m.Obj); err != nil {
  1270. klog.Errorf("Could not convert %T to *ga.InstanceGroup via JSON: %v", m.Obj, err)
  1271. }
  1272. return ret
  1273. }
  1274. // MockInstancesObj is used to store the various object versions in the shared
  1275. // map of mocked objects. This allows for multiple API versions to co-exist and
  1276. // share the same "view" of the objects in the backend.
  1277. type MockInstancesObj struct {
  1278. Obj interface{}
  1279. }
  1280. // ToAlpha retrieves the given version of the object.
  1281. func (m *MockInstancesObj) ToAlpha() *alpha.Instance {
  1282. if ret, ok := m.Obj.(*alpha.Instance); ok {
  1283. return ret
  1284. }
  1285. // Convert the object via JSON copying to the type that was requested.
  1286. ret := &alpha.Instance{}
  1287. if err := copyViaJSON(ret, m.Obj); err != nil {
  1288. klog.Errorf("Could not convert %T to *alpha.Instance via JSON: %v", m.Obj, err)
  1289. }
  1290. return ret
  1291. }
  1292. // ToBeta retrieves the given version of the object.
  1293. func (m *MockInstancesObj) ToBeta() *beta.Instance {
  1294. if ret, ok := m.Obj.(*beta.Instance); ok {
  1295. return ret
  1296. }
  1297. // Convert the object via JSON copying to the type that was requested.
  1298. ret := &beta.Instance{}
  1299. if err := copyViaJSON(ret, m.Obj); err != nil {
  1300. klog.Errorf("Could not convert %T to *beta.Instance via JSON: %v", m.Obj, err)
  1301. }
  1302. return ret
  1303. }
  1304. // ToGA retrieves the given version of the object.
  1305. func (m *MockInstancesObj) ToGA() *ga.Instance {
  1306. if ret, ok := m.Obj.(*ga.Instance); ok {
  1307. return ret
  1308. }
  1309. // Convert the object via JSON copying to the type that was requested.
  1310. ret := &ga.Instance{}
  1311. if err := copyViaJSON(ret, m.Obj); err != nil {
  1312. klog.Errorf("Could not convert %T to *ga.Instance via JSON: %v", m.Obj, err)
  1313. }
  1314. return ret
  1315. }
  1316. // MockNetworkEndpointGroupsObj is used to store the various object versions in the shared
  1317. // map of mocked objects. This allows for multiple API versions to co-exist and
  1318. // share the same "view" of the objects in the backend.
  1319. type MockNetworkEndpointGroupsObj struct {
  1320. Obj interface{}
  1321. }
  1322. // ToAlpha retrieves the given version of the object.
  1323. func (m *MockNetworkEndpointGroupsObj) ToAlpha() *alpha.NetworkEndpointGroup {
  1324. if ret, ok := m.Obj.(*alpha.NetworkEndpointGroup); ok {
  1325. return ret
  1326. }
  1327. // Convert the object via JSON copying to the type that was requested.
  1328. ret := &alpha.NetworkEndpointGroup{}
  1329. if err := copyViaJSON(ret, m.Obj); err != nil {
  1330. klog.Errorf("Could not convert %T to *alpha.NetworkEndpointGroup via JSON: %v", m.Obj, err)
  1331. }
  1332. return ret
  1333. }
  1334. // ToBeta retrieves the given version of the object.
  1335. func (m *MockNetworkEndpointGroupsObj) ToBeta() *beta.NetworkEndpointGroup {
  1336. if ret, ok := m.Obj.(*beta.NetworkEndpointGroup); ok {
  1337. return ret
  1338. }
  1339. // Convert the object via JSON copying to the type that was requested.
  1340. ret := &beta.NetworkEndpointGroup{}
  1341. if err := copyViaJSON(ret, m.Obj); err != nil {
  1342. klog.Errorf("Could not convert %T to *beta.NetworkEndpointGroup via JSON: %v", m.Obj, err)
  1343. }
  1344. return ret
  1345. }
  1346. // ToGA retrieves the given version of the object.
  1347. func (m *MockNetworkEndpointGroupsObj) ToGA() *ga.NetworkEndpointGroup {
  1348. if ret, ok := m.Obj.(*ga.NetworkEndpointGroup); ok {
  1349. return ret
  1350. }
  1351. // Convert the object via JSON copying to the type that was requested.
  1352. ret := &ga.NetworkEndpointGroup{}
  1353. if err := copyViaJSON(ret, m.Obj); err != nil {
  1354. klog.Errorf("Could not convert %T to *ga.NetworkEndpointGroup via JSON: %v", m.Obj, err)
  1355. }
  1356. return ret
  1357. }
  1358. // MockNetworksObj is used to store the various object versions in the shared
  1359. // map of mocked objects. This allows for multiple API versions to co-exist and
  1360. // share the same "view" of the objects in the backend.
  1361. type MockNetworksObj struct {
  1362. Obj interface{}
  1363. }
  1364. // ToAlpha retrieves the given version of the object.
  1365. func (m *MockNetworksObj) ToAlpha() *alpha.Network {
  1366. if ret, ok := m.Obj.(*alpha.Network); ok {
  1367. return ret
  1368. }
  1369. // Convert the object via JSON copying to the type that was requested.
  1370. ret := &alpha.Network{}
  1371. if err := copyViaJSON(ret, m.Obj); err != nil {
  1372. klog.Errorf("Could not convert %T to *alpha.Network via JSON: %v", m.Obj, err)
  1373. }
  1374. return ret
  1375. }
  1376. // ToBeta retrieves the given version of the object.
  1377. func (m *MockNetworksObj) ToBeta() *beta.Network {
  1378. if ret, ok := m.Obj.(*beta.Network); ok {
  1379. return ret
  1380. }
  1381. // Convert the object via JSON copying to the type that was requested.
  1382. ret := &beta.Network{}
  1383. if err := copyViaJSON(ret, m.Obj); err != nil {
  1384. klog.Errorf("Could not convert %T to *beta.Network via JSON: %v", m.Obj, err)
  1385. }
  1386. return ret
  1387. }
  1388. // ToGA retrieves the given version of the object.
  1389. func (m *MockNetworksObj) ToGA() *ga.Network {
  1390. if ret, ok := m.Obj.(*ga.Network); ok {
  1391. return ret
  1392. }
  1393. // Convert the object via JSON copying to the type that was requested.
  1394. ret := &ga.Network{}
  1395. if err := copyViaJSON(ret, m.Obj); err != nil {
  1396. klog.Errorf("Could not convert %T to *ga.Network via JSON: %v", m.Obj, err)
  1397. }
  1398. return ret
  1399. }
  1400. // MockProjectsObj is used to store the various object versions in the shared
  1401. // map of mocked objects. This allows for multiple API versions to co-exist and
  1402. // share the same "view" of the objects in the backend.
  1403. type MockProjectsObj struct {
  1404. Obj interface{}
  1405. }
  1406. // ToGA retrieves the given version of the object.
  1407. func (m *MockProjectsObj) ToGA() *ga.Project {
  1408. if ret, ok := m.Obj.(*ga.Project); ok {
  1409. return ret
  1410. }
  1411. // Convert the object via JSON copying to the type that was requested.
  1412. ret := &ga.Project{}
  1413. if err := copyViaJSON(ret, m.Obj); err != nil {
  1414. klog.Errorf("Could not convert %T to *ga.Project via JSON: %v", m.Obj, err)
  1415. }
  1416. return ret
  1417. }
  1418. // MockRegionBackendServicesObj is used to store the various object versions in the shared
  1419. // map of mocked objects. This allows for multiple API versions to co-exist and
  1420. // share the same "view" of the objects in the backend.
  1421. type MockRegionBackendServicesObj struct {
  1422. Obj interface{}
  1423. }
  1424. // ToAlpha retrieves the given version of the object.
  1425. func (m *MockRegionBackendServicesObj) ToAlpha() *alpha.BackendService {
  1426. if ret, ok := m.Obj.(*alpha.BackendService); ok {
  1427. return ret
  1428. }
  1429. // Convert the object via JSON copying to the type that was requested.
  1430. ret := &alpha.BackendService{}
  1431. if err := copyViaJSON(ret, m.Obj); err != nil {
  1432. klog.Errorf("Could not convert %T to *alpha.BackendService via JSON: %v", m.Obj, err)
  1433. }
  1434. return ret
  1435. }
  1436. // ToBeta retrieves the given version of the object.
  1437. func (m *MockRegionBackendServicesObj) ToBeta() *beta.BackendService {
  1438. if ret, ok := m.Obj.(*beta.BackendService); ok {
  1439. return ret
  1440. }
  1441. // Convert the object via JSON copying to the type that was requested.
  1442. ret := &beta.BackendService{}
  1443. if err := copyViaJSON(ret, m.Obj); err != nil {
  1444. klog.Errorf("Could not convert %T to *beta.BackendService via JSON: %v", m.Obj, err)
  1445. }
  1446. return ret
  1447. }
  1448. // ToGA retrieves the given version of the object.
  1449. func (m *MockRegionBackendServicesObj) ToGA() *ga.BackendService {
  1450. if ret, ok := m.Obj.(*ga.BackendService); ok {
  1451. return ret
  1452. }
  1453. // Convert the object via JSON copying to the type that was requested.
  1454. ret := &ga.BackendService{}
  1455. if err := copyViaJSON(ret, m.Obj); err != nil {
  1456. klog.Errorf("Could not convert %T to *ga.BackendService via JSON: %v", m.Obj, err)
  1457. }
  1458. return ret
  1459. }
  1460. // MockRegionDisksObj is used to store the various object versions in the shared
  1461. // map of mocked objects. This allows for multiple API versions to co-exist and
  1462. // share the same "view" of the objects in the backend.
  1463. type MockRegionDisksObj struct {
  1464. Obj interface{}
  1465. }
  1466. // ToGA retrieves the given version of the object.
  1467. func (m *MockRegionDisksObj) ToGA() *ga.Disk {
  1468. if ret, ok := m.Obj.(*ga.Disk); ok {
  1469. return ret
  1470. }
  1471. // Convert the object via JSON copying to the type that was requested.
  1472. ret := &ga.Disk{}
  1473. if err := copyViaJSON(ret, m.Obj); err != nil {
  1474. klog.Errorf("Could not convert %T to *ga.Disk via JSON: %v", m.Obj, err)
  1475. }
  1476. return ret
  1477. }
  1478. // MockRegionHealthChecksObj is used to store the various object versions in the shared
  1479. // map of mocked objects. This allows for multiple API versions to co-exist and
  1480. // share the same "view" of the objects in the backend.
  1481. type MockRegionHealthChecksObj struct {
  1482. Obj interface{}
  1483. }
  1484. // ToAlpha retrieves the given version of the object.
  1485. func (m *MockRegionHealthChecksObj) ToAlpha() *alpha.HealthCheck {
  1486. if ret, ok := m.Obj.(*alpha.HealthCheck); ok {
  1487. return ret
  1488. }
  1489. // Convert the object via JSON copying to the type that was requested.
  1490. ret := &alpha.HealthCheck{}
  1491. if err := copyViaJSON(ret, m.Obj); err != nil {
  1492. klog.Errorf("Could not convert %T to *alpha.HealthCheck via JSON: %v", m.Obj, err)
  1493. }
  1494. return ret
  1495. }
  1496. // ToBeta retrieves the given version of the object.
  1497. func (m *MockRegionHealthChecksObj) ToBeta() *beta.HealthCheck {
  1498. if ret, ok := m.Obj.(*beta.HealthCheck); ok {
  1499. return ret
  1500. }
  1501. // Convert the object via JSON copying to the type that was requested.
  1502. ret := &beta.HealthCheck{}
  1503. if err := copyViaJSON(ret, m.Obj); err != nil {
  1504. klog.Errorf("Could not convert %T to *beta.HealthCheck via JSON: %v", m.Obj, err)
  1505. }
  1506. return ret
  1507. }
  1508. // MockRegionSslCertificatesObj is used to store the various object versions in the shared
  1509. // map of mocked objects. This allows for multiple API versions to co-exist and
  1510. // share the same "view" of the objects in the backend.
  1511. type MockRegionSslCertificatesObj struct {
  1512. Obj interface{}
  1513. }
  1514. // ToAlpha retrieves the given version of the object.
  1515. func (m *MockRegionSslCertificatesObj) ToAlpha() *alpha.SslCertificate {
  1516. if ret, ok := m.Obj.(*alpha.SslCertificate); ok {
  1517. return ret
  1518. }
  1519. // Convert the object via JSON copying to the type that was requested.
  1520. ret := &alpha.SslCertificate{}
  1521. if err := copyViaJSON(ret, m.Obj); err != nil {
  1522. klog.Errorf("Could not convert %T to *alpha.SslCertificate via JSON: %v", m.Obj, err)
  1523. }
  1524. return ret
  1525. }
  1526. // ToBeta retrieves the given version of the object.
  1527. func (m *MockRegionSslCertificatesObj) ToBeta() *beta.SslCertificate {
  1528. if ret, ok := m.Obj.(*beta.SslCertificate); ok {
  1529. return ret
  1530. }
  1531. // Convert the object via JSON copying to the type that was requested.
  1532. ret := &beta.SslCertificate{}
  1533. if err := copyViaJSON(ret, m.Obj); err != nil {
  1534. klog.Errorf("Could not convert %T to *beta.SslCertificate via JSON: %v", m.Obj, err)
  1535. }
  1536. return ret
  1537. }
  1538. // MockRegionTargetHttpProxiesObj is used to store the various object versions in the shared
  1539. // map of mocked objects. This allows for multiple API versions to co-exist and
  1540. // share the same "view" of the objects in the backend.
  1541. type MockRegionTargetHttpProxiesObj struct {
  1542. Obj interface{}
  1543. }
  1544. // ToAlpha retrieves the given version of the object.
  1545. func (m *MockRegionTargetHttpProxiesObj) ToAlpha() *alpha.TargetHttpProxy {
  1546. if ret, ok := m.Obj.(*alpha.TargetHttpProxy); ok {
  1547. return ret
  1548. }
  1549. // Convert the object via JSON copying to the type that was requested.
  1550. ret := &alpha.TargetHttpProxy{}
  1551. if err := copyViaJSON(ret, m.Obj); err != nil {
  1552. klog.Errorf("Could not convert %T to *alpha.TargetHttpProxy via JSON: %v", m.Obj, err)
  1553. }
  1554. return ret
  1555. }
  1556. // ToBeta retrieves the given version of the object.
  1557. func (m *MockRegionTargetHttpProxiesObj) ToBeta() *beta.TargetHttpProxy {
  1558. if ret, ok := m.Obj.(*beta.TargetHttpProxy); ok {
  1559. return ret
  1560. }
  1561. // Convert the object via JSON copying to the type that was requested.
  1562. ret := &beta.TargetHttpProxy{}
  1563. if err := copyViaJSON(ret, m.Obj); err != nil {
  1564. klog.Errorf("Could not convert %T to *beta.TargetHttpProxy via JSON: %v", m.Obj, err)
  1565. }
  1566. return ret
  1567. }
  1568. // MockRegionTargetHttpsProxiesObj is used to store the various object versions in the shared
  1569. // map of mocked objects. This allows for multiple API versions to co-exist and
  1570. // share the same "view" of the objects in the backend.
  1571. type MockRegionTargetHttpsProxiesObj struct {
  1572. Obj interface{}
  1573. }
  1574. // ToAlpha retrieves the given version of the object.
  1575. func (m *MockRegionTargetHttpsProxiesObj) ToAlpha() *alpha.TargetHttpsProxy {
  1576. if ret, ok := m.Obj.(*alpha.TargetHttpsProxy); ok {
  1577. return ret
  1578. }
  1579. // Convert the object via JSON copying to the type that was requested.
  1580. ret := &alpha.TargetHttpsProxy{}
  1581. if err := copyViaJSON(ret, m.Obj); err != nil {
  1582. klog.Errorf("Could not convert %T to *alpha.TargetHttpsProxy via JSON: %v", m.Obj, err)
  1583. }
  1584. return ret
  1585. }
  1586. // ToBeta retrieves the given version of the object.
  1587. func (m *MockRegionTargetHttpsProxiesObj) ToBeta() *beta.TargetHttpsProxy {
  1588. if ret, ok := m.Obj.(*beta.TargetHttpsProxy); ok {
  1589. return ret
  1590. }
  1591. // Convert the object via JSON copying to the type that was requested.
  1592. ret := &beta.TargetHttpsProxy{}
  1593. if err := copyViaJSON(ret, m.Obj); err != nil {
  1594. klog.Errorf("Could not convert %T to *beta.TargetHttpsProxy via JSON: %v", m.Obj, err)
  1595. }
  1596. return ret
  1597. }
  1598. // MockRegionUrlMapsObj is used to store the various object versions in the shared
  1599. // map of mocked objects. This allows for multiple API versions to co-exist and
  1600. // share the same "view" of the objects in the backend.
  1601. type MockRegionUrlMapsObj struct {
  1602. Obj interface{}
  1603. }
  1604. // ToAlpha retrieves the given version of the object.
  1605. func (m *MockRegionUrlMapsObj) ToAlpha() *alpha.UrlMap {
  1606. if ret, ok := m.Obj.(*alpha.UrlMap); ok {
  1607. return ret
  1608. }
  1609. // Convert the object via JSON copying to the type that was requested.
  1610. ret := &alpha.UrlMap{}
  1611. if err := copyViaJSON(ret, m.Obj); err != nil {
  1612. klog.Errorf("Could not convert %T to *alpha.UrlMap via JSON: %v", m.Obj, err)
  1613. }
  1614. return ret
  1615. }
  1616. // ToBeta retrieves the given version of the object.
  1617. func (m *MockRegionUrlMapsObj) ToBeta() *beta.UrlMap {
  1618. if ret, ok := m.Obj.(*beta.UrlMap); ok {
  1619. return ret
  1620. }
  1621. // Convert the object via JSON copying to the type that was requested.
  1622. ret := &beta.UrlMap{}
  1623. if err := copyViaJSON(ret, m.Obj); err != nil {
  1624. klog.Errorf("Could not convert %T to *beta.UrlMap via JSON: %v", m.Obj, err)
  1625. }
  1626. return ret
  1627. }
  1628. // MockRegionsObj is used to store the various object versions in the shared
  1629. // map of mocked objects. This allows for multiple API versions to co-exist and
  1630. // share the same "view" of the objects in the backend.
  1631. type MockRegionsObj struct {
  1632. Obj interface{}
  1633. }
  1634. // ToGA retrieves the given version of the object.
  1635. func (m *MockRegionsObj) ToGA() *ga.Region {
  1636. if ret, ok := m.Obj.(*ga.Region); ok {
  1637. return ret
  1638. }
  1639. // Convert the object via JSON copying to the type that was requested.
  1640. ret := &ga.Region{}
  1641. if err := copyViaJSON(ret, m.Obj); err != nil {
  1642. klog.Errorf("Could not convert %T to *ga.Region via JSON: %v", m.Obj, err)
  1643. }
  1644. return ret
  1645. }
  1646. // MockRoutesObj is used to store the various object versions in the shared
  1647. // map of mocked objects. This allows for multiple API versions to co-exist and
  1648. // share the same "view" of the objects in the backend.
  1649. type MockRoutesObj struct {
  1650. Obj interface{}
  1651. }
  1652. // ToGA retrieves the given version of the object.
  1653. func (m *MockRoutesObj) ToGA() *ga.Route {
  1654. if ret, ok := m.Obj.(*ga.Route); ok {
  1655. return ret
  1656. }
  1657. // Convert the object via JSON copying to the type that was requested.
  1658. ret := &ga.Route{}
  1659. if err := copyViaJSON(ret, m.Obj); err != nil {
  1660. klog.Errorf("Could not convert %T to *ga.Route via JSON: %v", m.Obj, err)
  1661. }
  1662. return ret
  1663. }
  1664. // MockSecurityPoliciesObj is used to store the various object versions in the shared
  1665. // map of mocked objects. This allows for multiple API versions to co-exist and
  1666. // share the same "view" of the objects in the backend.
  1667. type MockSecurityPoliciesObj struct {
  1668. Obj interface{}
  1669. }
  1670. // ToBeta retrieves the given version of the object.
  1671. func (m *MockSecurityPoliciesObj) ToBeta() *beta.SecurityPolicy {
  1672. if ret, ok := m.Obj.(*beta.SecurityPolicy); ok {
  1673. return ret
  1674. }
  1675. // Convert the object via JSON copying to the type that was requested.
  1676. ret := &beta.SecurityPolicy{}
  1677. if err := copyViaJSON(ret, m.Obj); err != nil {
  1678. klog.Errorf("Could not convert %T to *beta.SecurityPolicy via JSON: %v", m.Obj, err)
  1679. }
  1680. return ret
  1681. }
  1682. // MockSslCertificatesObj is used to store the various object versions in the shared
  1683. // map of mocked objects. This allows for multiple API versions to co-exist and
  1684. // share the same "view" of the objects in the backend.
  1685. type MockSslCertificatesObj struct {
  1686. Obj interface{}
  1687. }
  1688. // ToAlpha retrieves the given version of the object.
  1689. func (m *MockSslCertificatesObj) ToAlpha() *alpha.SslCertificate {
  1690. if ret, ok := m.Obj.(*alpha.SslCertificate); ok {
  1691. return ret
  1692. }
  1693. // Convert the object via JSON copying to the type that was requested.
  1694. ret := &alpha.SslCertificate{}
  1695. if err := copyViaJSON(ret, m.Obj); err != nil {
  1696. klog.Errorf("Could not convert %T to *alpha.SslCertificate via JSON: %v", m.Obj, err)
  1697. }
  1698. return ret
  1699. }
  1700. // ToBeta retrieves the given version of the object.
  1701. func (m *MockSslCertificatesObj) ToBeta() *beta.SslCertificate {
  1702. if ret, ok := m.Obj.(*beta.SslCertificate); ok {
  1703. return ret
  1704. }
  1705. // Convert the object via JSON copying to the type that was requested.
  1706. ret := &beta.SslCertificate{}
  1707. if err := copyViaJSON(ret, m.Obj); err != nil {
  1708. klog.Errorf("Could not convert %T to *beta.SslCertificate via JSON: %v", m.Obj, err)
  1709. }
  1710. return ret
  1711. }
  1712. // ToGA retrieves the given version of the object.
  1713. func (m *MockSslCertificatesObj) ToGA() *ga.SslCertificate {
  1714. if ret, ok := m.Obj.(*ga.SslCertificate); ok {
  1715. return ret
  1716. }
  1717. // Convert the object via JSON copying to the type that was requested.
  1718. ret := &ga.SslCertificate{}
  1719. if err := copyViaJSON(ret, m.Obj); err != nil {
  1720. klog.Errorf("Could not convert %T to *ga.SslCertificate via JSON: %v", m.Obj, err)
  1721. }
  1722. return ret
  1723. }
  1724. // MockSubnetworksObj is used to store the various object versions in the shared
  1725. // map of mocked objects. This allows for multiple API versions to co-exist and
  1726. // share the same "view" of the objects in the backend.
  1727. type MockSubnetworksObj struct {
  1728. Obj interface{}
  1729. }
  1730. // ToAlpha retrieves the given version of the object.
  1731. func (m *MockSubnetworksObj) ToAlpha() *alpha.Subnetwork {
  1732. if ret, ok := m.Obj.(*alpha.Subnetwork); ok {
  1733. return ret
  1734. }
  1735. // Convert the object via JSON copying to the type that was requested.
  1736. ret := &alpha.Subnetwork{}
  1737. if err := copyViaJSON(ret, m.Obj); err != nil {
  1738. klog.Errorf("Could not convert %T to *alpha.Subnetwork via JSON: %v", m.Obj, err)
  1739. }
  1740. return ret
  1741. }
  1742. // ToBeta retrieves the given version of the object.
  1743. func (m *MockSubnetworksObj) ToBeta() *beta.Subnetwork {
  1744. if ret, ok := m.Obj.(*beta.Subnetwork); ok {
  1745. return ret
  1746. }
  1747. // Convert the object via JSON copying to the type that was requested.
  1748. ret := &beta.Subnetwork{}
  1749. if err := copyViaJSON(ret, m.Obj); err != nil {
  1750. klog.Errorf("Could not convert %T to *beta.Subnetwork via JSON: %v", m.Obj, err)
  1751. }
  1752. return ret
  1753. }
  1754. // ToGA retrieves the given version of the object.
  1755. func (m *MockSubnetworksObj) ToGA() *ga.Subnetwork {
  1756. if ret, ok := m.Obj.(*ga.Subnetwork); ok {
  1757. return ret
  1758. }
  1759. // Convert the object via JSON copying to the type that was requested.
  1760. ret := &ga.Subnetwork{}
  1761. if err := copyViaJSON(ret, m.Obj); err != nil {
  1762. klog.Errorf("Could not convert %T to *ga.Subnetwork via JSON: %v", m.Obj, err)
  1763. }
  1764. return ret
  1765. }
  1766. // MockTargetHttpProxiesObj is used to store the various object versions in the shared
  1767. // map of mocked objects. This allows for multiple API versions to co-exist and
  1768. // share the same "view" of the objects in the backend.
  1769. type MockTargetHttpProxiesObj struct {
  1770. Obj interface{}
  1771. }
  1772. // ToAlpha retrieves the given version of the object.
  1773. func (m *MockTargetHttpProxiesObj) ToAlpha() *alpha.TargetHttpProxy {
  1774. if ret, ok := m.Obj.(*alpha.TargetHttpProxy); ok {
  1775. return ret
  1776. }
  1777. // Convert the object via JSON copying to the type that was requested.
  1778. ret := &alpha.TargetHttpProxy{}
  1779. if err := copyViaJSON(ret, m.Obj); err != nil {
  1780. klog.Errorf("Could not convert %T to *alpha.TargetHttpProxy via JSON: %v", m.Obj, err)
  1781. }
  1782. return ret
  1783. }
  1784. // ToBeta retrieves the given version of the object.
  1785. func (m *MockTargetHttpProxiesObj) ToBeta() *beta.TargetHttpProxy {
  1786. if ret, ok := m.Obj.(*beta.TargetHttpProxy); ok {
  1787. return ret
  1788. }
  1789. // Convert the object via JSON copying to the type that was requested.
  1790. ret := &beta.TargetHttpProxy{}
  1791. if err := copyViaJSON(ret, m.Obj); err != nil {
  1792. klog.Errorf("Could not convert %T to *beta.TargetHttpProxy via JSON: %v", m.Obj, err)
  1793. }
  1794. return ret
  1795. }
  1796. // ToGA retrieves the given version of the object.
  1797. func (m *MockTargetHttpProxiesObj) ToGA() *ga.TargetHttpProxy {
  1798. if ret, ok := m.Obj.(*ga.TargetHttpProxy); ok {
  1799. return ret
  1800. }
  1801. // Convert the object via JSON copying to the type that was requested.
  1802. ret := &ga.TargetHttpProxy{}
  1803. if err := copyViaJSON(ret, m.Obj); err != nil {
  1804. klog.Errorf("Could not convert %T to *ga.TargetHttpProxy via JSON: %v", m.Obj, err)
  1805. }
  1806. return ret
  1807. }
  1808. // MockTargetHttpsProxiesObj is used to store the various object versions in the shared
  1809. // map of mocked objects. This allows for multiple API versions to co-exist and
  1810. // share the same "view" of the objects in the backend.
  1811. type MockTargetHttpsProxiesObj struct {
  1812. Obj interface{}
  1813. }
  1814. // ToAlpha retrieves the given version of the object.
  1815. func (m *MockTargetHttpsProxiesObj) ToAlpha() *alpha.TargetHttpsProxy {
  1816. if ret, ok := m.Obj.(*alpha.TargetHttpsProxy); ok {
  1817. return ret
  1818. }
  1819. // Convert the object via JSON copying to the type that was requested.
  1820. ret := &alpha.TargetHttpsProxy{}
  1821. if err := copyViaJSON(ret, m.Obj); err != nil {
  1822. klog.Errorf("Could not convert %T to *alpha.TargetHttpsProxy via JSON: %v", m.Obj, err)
  1823. }
  1824. return ret
  1825. }
  1826. // ToBeta retrieves the given version of the object.
  1827. func (m *MockTargetHttpsProxiesObj) ToBeta() *beta.TargetHttpsProxy {
  1828. if ret, ok := m.Obj.(*beta.TargetHttpsProxy); ok {
  1829. return ret
  1830. }
  1831. // Convert the object via JSON copying to the type that was requested.
  1832. ret := &beta.TargetHttpsProxy{}
  1833. if err := copyViaJSON(ret, m.Obj); err != nil {
  1834. klog.Errorf("Could not convert %T to *beta.TargetHttpsProxy via JSON: %v", m.Obj, err)
  1835. }
  1836. return ret
  1837. }
  1838. // ToGA retrieves the given version of the object.
  1839. func (m *MockTargetHttpsProxiesObj) ToGA() *ga.TargetHttpsProxy {
  1840. if ret, ok := m.Obj.(*ga.TargetHttpsProxy); ok {
  1841. return ret
  1842. }
  1843. // Convert the object via JSON copying to the type that was requested.
  1844. ret := &ga.TargetHttpsProxy{}
  1845. if err := copyViaJSON(ret, m.Obj); err != nil {
  1846. klog.Errorf("Could not convert %T to *ga.TargetHttpsProxy via JSON: %v", m.Obj, err)
  1847. }
  1848. return ret
  1849. }
  1850. // MockTargetPoolsObj is used to store the various object versions in the shared
  1851. // map of mocked objects. This allows for multiple API versions to co-exist and
  1852. // share the same "view" of the objects in the backend.
  1853. type MockTargetPoolsObj struct {
  1854. Obj interface{}
  1855. }
  1856. // ToGA retrieves the given version of the object.
  1857. func (m *MockTargetPoolsObj) ToGA() *ga.TargetPool {
  1858. if ret, ok := m.Obj.(*ga.TargetPool); ok {
  1859. return ret
  1860. }
  1861. // Convert the object via JSON copying to the type that was requested.
  1862. ret := &ga.TargetPool{}
  1863. if err := copyViaJSON(ret, m.Obj); err != nil {
  1864. klog.Errorf("Could not convert %T to *ga.TargetPool via JSON: %v", m.Obj, err)
  1865. }
  1866. return ret
  1867. }
  1868. // MockUrlMapsObj is used to store the various object versions in the shared
  1869. // map of mocked objects. This allows for multiple API versions to co-exist and
  1870. // share the same "view" of the objects in the backend.
  1871. type MockUrlMapsObj struct {
  1872. Obj interface{}
  1873. }
  1874. // ToAlpha retrieves the given version of the object.
  1875. func (m *MockUrlMapsObj) ToAlpha() *alpha.UrlMap {
  1876. if ret, ok := m.Obj.(*alpha.UrlMap); ok {
  1877. return ret
  1878. }
  1879. // Convert the object via JSON copying to the type that was requested.
  1880. ret := &alpha.UrlMap{}
  1881. if err := copyViaJSON(ret, m.Obj); err != nil {
  1882. klog.Errorf("Could not convert %T to *alpha.UrlMap via JSON: %v", m.Obj, err)
  1883. }
  1884. return ret
  1885. }
  1886. // ToBeta retrieves the given version of the object.
  1887. func (m *MockUrlMapsObj) ToBeta() *beta.UrlMap {
  1888. if ret, ok := m.Obj.(*beta.UrlMap); ok {
  1889. return ret
  1890. }
  1891. // Convert the object via JSON copying to the type that was requested.
  1892. ret := &beta.UrlMap{}
  1893. if err := copyViaJSON(ret, m.Obj); err != nil {
  1894. klog.Errorf("Could not convert %T to *beta.UrlMap via JSON: %v", m.Obj, err)
  1895. }
  1896. return ret
  1897. }
  1898. // ToGA retrieves the given version of the object.
  1899. func (m *MockUrlMapsObj) ToGA() *ga.UrlMap {
  1900. if ret, ok := m.Obj.(*ga.UrlMap); ok {
  1901. return ret
  1902. }
  1903. // Convert the object via JSON copying to the type that was requested.
  1904. ret := &ga.UrlMap{}
  1905. if err := copyViaJSON(ret, m.Obj); err != nil {
  1906. klog.Errorf("Could not convert %T to *ga.UrlMap via JSON: %v", m.Obj, err)
  1907. }
  1908. return ret
  1909. }
  1910. // MockZonesObj is used to store the various object versions in the shared
  1911. // map of mocked objects. This allows for multiple API versions to co-exist and
  1912. // share the same "view" of the objects in the backend.
  1913. type MockZonesObj struct {
  1914. Obj interface{}
  1915. }
  1916. // ToGA retrieves the given version of the object.
  1917. func (m *MockZonesObj) ToGA() *ga.Zone {
  1918. if ret, ok := m.Obj.(*ga.Zone); ok {
  1919. return ret
  1920. }
  1921. // Convert the object via JSON copying to the type that was requested.
  1922. ret := &ga.Zone{}
  1923. if err := copyViaJSON(ret, m.Obj); err != nil {
  1924. klog.Errorf("Could not convert %T to *ga.Zone via JSON: %v", m.Obj, err)
  1925. }
  1926. return ret
  1927. }
  1928. // Addresses is an interface that allows for mocking of Addresses.
  1929. type Addresses interface {
  1930. Get(ctx context.Context, key *meta.Key) (*ga.Address, error)
  1931. List(ctx context.Context, region string, fl *filter.F) ([]*ga.Address, error)
  1932. Insert(ctx context.Context, key *meta.Key, obj *ga.Address) error
  1933. Delete(ctx context.Context, key *meta.Key) error
  1934. AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*ga.Address, error)
  1935. }
  1936. // NewMockAddresses returns a new mock for Addresses.
  1937. func NewMockAddresses(pr ProjectRouter, objs map[meta.Key]*MockAddressesObj) *MockAddresses {
  1938. mock := &MockAddresses{
  1939. ProjectRouter: pr,
  1940. Objects: objs,
  1941. GetError: map[meta.Key]error{},
  1942. InsertError: map[meta.Key]error{},
  1943. DeleteError: map[meta.Key]error{},
  1944. }
  1945. return mock
  1946. }
  1947. // MockAddresses is the mock for Addresses.
  1948. type MockAddresses struct {
  1949. Lock sync.Mutex
  1950. ProjectRouter ProjectRouter
  1951. // Objects maintained by the mock.
  1952. Objects map[meta.Key]*MockAddressesObj
  1953. // If an entry exists for the given key and operation, then the error
  1954. // will be returned instead of the operation.
  1955. GetError map[meta.Key]error
  1956. ListError *error
  1957. InsertError map[meta.Key]error
  1958. DeleteError map[meta.Key]error
  1959. AggregatedListError *error
  1960. // xxxHook allow you to intercept the standard processing of the mock in
  1961. // order to add your own logic. Return (true, _, _) to prevent the normal
  1962. // execution flow of the mock. Return (false, nil, nil) to continue with
  1963. // normal mock behavior/ after the hook function executes.
  1964. GetHook func(ctx context.Context, key *meta.Key, m *MockAddresses) (bool, *ga.Address, error)
  1965. ListHook func(ctx context.Context, region string, fl *filter.F, m *MockAddresses) (bool, []*ga.Address, error)
  1966. InsertHook func(ctx context.Context, key *meta.Key, obj *ga.Address, m *MockAddresses) (bool, error)
  1967. DeleteHook func(ctx context.Context, key *meta.Key, m *MockAddresses) (bool, error)
  1968. AggregatedListHook func(ctx context.Context, fl *filter.F, m *MockAddresses) (bool, map[string][]*ga.Address, error)
  1969. // X is extra state that can be used as part of the mock. Generated code
  1970. // will not use this field.
  1971. X interface{}
  1972. }
  1973. // Get returns the object from the mock.
  1974. func (m *MockAddresses) Get(ctx context.Context, key *meta.Key) (*ga.Address, error) {
  1975. if m.GetHook != nil {
  1976. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  1977. klog.V(5).Infof("MockAddresses.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  1978. return obj, err
  1979. }
  1980. }
  1981. if !key.Valid() {
  1982. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  1983. }
  1984. m.Lock.Lock()
  1985. defer m.Lock.Unlock()
  1986. if err, ok := m.GetError[*key]; ok {
  1987. klog.V(5).Infof("MockAddresses.Get(%v, %s) = nil, %v", ctx, key, err)
  1988. return nil, err
  1989. }
  1990. if obj, ok := m.Objects[*key]; ok {
  1991. typedObj := obj.ToGA()
  1992. klog.V(5).Infof("MockAddresses.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  1993. return typedObj, nil
  1994. }
  1995. err := &googleapi.Error{
  1996. Code: http.StatusNotFound,
  1997. Message: fmt.Sprintf("MockAddresses %v not found", key),
  1998. }
  1999. klog.V(5).Infof("MockAddresses.Get(%v, %s) = nil, %v", ctx, key, err)
  2000. return nil, err
  2001. }
  2002. // List all of the objects in the mock in the given region.
  2003. func (m *MockAddresses) List(ctx context.Context, region string, fl *filter.F) ([]*ga.Address, error) {
  2004. if m.ListHook != nil {
  2005. if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept {
  2006. klog.V(5).Infof("MockAddresses.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err)
  2007. return objs, err
  2008. }
  2009. }
  2010. m.Lock.Lock()
  2011. defer m.Lock.Unlock()
  2012. if m.ListError != nil {
  2013. err := *m.ListError
  2014. klog.V(5).Infof("MockAddresses.List(%v, %q, %v) = nil, %v", ctx, region, fl, err)
  2015. return nil, *m.ListError
  2016. }
  2017. var objs []*ga.Address
  2018. for key, obj := range m.Objects {
  2019. if key.Region != region {
  2020. continue
  2021. }
  2022. if !fl.Match(obj.ToGA()) {
  2023. continue
  2024. }
  2025. objs = append(objs, obj.ToGA())
  2026. }
  2027. klog.V(5).Infof("MockAddresses.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs))
  2028. return objs, nil
  2029. }
  2030. // Insert is a mock for inserting/creating a new object.
  2031. func (m *MockAddresses) Insert(ctx context.Context, key *meta.Key, obj *ga.Address) error {
  2032. if m.InsertHook != nil {
  2033. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  2034. klog.V(5).Infof("MockAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  2035. return err
  2036. }
  2037. }
  2038. if !key.Valid() {
  2039. return fmt.Errorf("invalid GCE key (%+v)", key)
  2040. }
  2041. m.Lock.Lock()
  2042. defer m.Lock.Unlock()
  2043. if err, ok := m.InsertError[*key]; ok {
  2044. klog.V(5).Infof("MockAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  2045. return err
  2046. }
  2047. if _, ok := m.Objects[*key]; ok {
  2048. err := &googleapi.Error{
  2049. Code: http.StatusConflict,
  2050. Message: fmt.Sprintf("MockAddresses %v exists", key),
  2051. }
  2052. klog.V(5).Infof("MockAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  2053. return err
  2054. }
  2055. obj.Name = key.Name
  2056. projectID := m.ProjectRouter.ProjectID(ctx, "ga", "addresses")
  2057. obj.SelfLink = SelfLink(meta.VersionGA, projectID, "addresses", key)
  2058. m.Objects[*key] = &MockAddressesObj{obj}
  2059. klog.V(5).Infof("MockAddresses.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  2060. return nil
  2061. }
  2062. // Delete is a mock for deleting the object.
  2063. func (m *MockAddresses) Delete(ctx context.Context, key *meta.Key) error {
  2064. if m.DeleteHook != nil {
  2065. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  2066. klog.V(5).Infof("MockAddresses.Delete(%v, %v) = %v", ctx, key, err)
  2067. return err
  2068. }
  2069. }
  2070. if !key.Valid() {
  2071. return fmt.Errorf("invalid GCE key (%+v)", key)
  2072. }
  2073. m.Lock.Lock()
  2074. defer m.Lock.Unlock()
  2075. if err, ok := m.DeleteError[*key]; ok {
  2076. klog.V(5).Infof("MockAddresses.Delete(%v, %v) = %v", ctx, key, err)
  2077. return err
  2078. }
  2079. if _, ok := m.Objects[*key]; !ok {
  2080. err := &googleapi.Error{
  2081. Code: http.StatusNotFound,
  2082. Message: fmt.Sprintf("MockAddresses %v not found", key),
  2083. }
  2084. klog.V(5).Infof("MockAddresses.Delete(%v, %v) = %v", ctx, key, err)
  2085. return err
  2086. }
  2087. delete(m.Objects, *key)
  2088. klog.V(5).Infof("MockAddresses.Delete(%v, %v) = nil", ctx, key)
  2089. return nil
  2090. }
  2091. // AggregatedList is a mock for AggregatedList.
  2092. func (m *MockAddresses) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*ga.Address, error) {
  2093. if m.AggregatedListHook != nil {
  2094. if intercept, objs, err := m.AggregatedListHook(ctx, fl, m); intercept {
  2095. klog.V(5).Infof("MockAddresses.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  2096. return objs, err
  2097. }
  2098. }
  2099. m.Lock.Lock()
  2100. defer m.Lock.Unlock()
  2101. if m.AggregatedListError != nil {
  2102. err := *m.AggregatedListError
  2103. klog.V(5).Infof("MockAddresses.AggregatedList(%v, %v) = nil, %v", ctx, fl, err)
  2104. return nil, err
  2105. }
  2106. objs := map[string][]*ga.Address{}
  2107. for _, obj := range m.Objects {
  2108. res, err := ParseResourceURL(obj.ToGA().SelfLink)
  2109. location := res.Key.Region
  2110. if err != nil {
  2111. klog.V(5).Infof("MockAddresses.AggregatedList(%v, %v) = nil, %v", ctx, fl, err)
  2112. return nil, err
  2113. }
  2114. if !fl.Match(obj.ToGA()) {
  2115. continue
  2116. }
  2117. objs[location] = append(objs[location], obj.ToGA())
  2118. }
  2119. klog.V(5).Infof("MockAddresses.AggregatedList(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  2120. return objs, nil
  2121. }
  2122. // Obj wraps the object for use in the mock.
  2123. func (m *MockAddresses) Obj(o *ga.Address) *MockAddressesObj {
  2124. return &MockAddressesObj{o}
  2125. }
  2126. // GCEAddresses is a simplifying adapter for the GCE Addresses.
  2127. type GCEAddresses struct {
  2128. s *Service
  2129. }
  2130. // Get the Address named by key.
  2131. func (g *GCEAddresses) Get(ctx context.Context, key *meta.Key) (*ga.Address, error) {
  2132. klog.V(5).Infof("GCEAddresses.Get(%v, %v): called", ctx, key)
  2133. if !key.Valid() {
  2134. klog.V(2).Infof("GCEAddresses.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  2135. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  2136. }
  2137. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Addresses")
  2138. rk := &RateLimitKey{
  2139. ProjectID: projectID,
  2140. Operation: "Get",
  2141. Version: meta.Version("ga"),
  2142. Service: "Addresses",
  2143. }
  2144. klog.V(5).Infof("GCEAddresses.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  2145. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  2146. klog.V(4).Infof("GCEAddresses.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  2147. return nil, err
  2148. }
  2149. call := g.s.GA.Addresses.Get(projectID, key.Region, key.Name)
  2150. call.Context(ctx)
  2151. v, err := call.Do()
  2152. klog.V(4).Infof("GCEAddresses.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  2153. return v, err
  2154. }
  2155. // List all Address objects.
  2156. func (g *GCEAddresses) List(ctx context.Context, region string, fl *filter.F) ([]*ga.Address, error) {
  2157. klog.V(5).Infof("GCEAddresses.List(%v, %v, %v) called", ctx, region, fl)
  2158. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Addresses")
  2159. rk := &RateLimitKey{
  2160. ProjectID: projectID,
  2161. Operation: "List",
  2162. Version: meta.Version("ga"),
  2163. Service: "Addresses",
  2164. }
  2165. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  2166. return nil, err
  2167. }
  2168. klog.V(5).Infof("GCEAddresses.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk)
  2169. call := g.s.GA.Addresses.List(projectID, region)
  2170. if fl != filter.None {
  2171. call.Filter(fl.String())
  2172. }
  2173. var all []*ga.Address
  2174. f := func(l *ga.AddressList) error {
  2175. klog.V(5).Infof("GCEAddresses.List(%v, ..., %v): page %+v", ctx, fl, l)
  2176. all = append(all, l.Items...)
  2177. return nil
  2178. }
  2179. if err := call.Pages(ctx, f); err != nil {
  2180. klog.V(4).Infof("GCEAddresses.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  2181. return nil, err
  2182. }
  2183. if klog.V(4) {
  2184. klog.V(4).Infof("GCEAddresses.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  2185. } else if klog.V(5) {
  2186. var asStr []string
  2187. for _, o := range all {
  2188. asStr = append(asStr, fmt.Sprintf("%+v", o))
  2189. }
  2190. klog.V(5).Infof("GCEAddresses.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  2191. }
  2192. return all, nil
  2193. }
  2194. // Insert Address with key of value obj.
  2195. func (g *GCEAddresses) Insert(ctx context.Context, key *meta.Key, obj *ga.Address) error {
  2196. klog.V(5).Infof("GCEAddresses.Insert(%v, %v, %+v): called", ctx, key, obj)
  2197. if !key.Valid() {
  2198. klog.V(2).Infof("GCEAddresses.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  2199. return fmt.Errorf("invalid GCE key (%+v)", key)
  2200. }
  2201. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Addresses")
  2202. rk := &RateLimitKey{
  2203. ProjectID: projectID,
  2204. Operation: "Insert",
  2205. Version: meta.Version("ga"),
  2206. Service: "Addresses",
  2207. }
  2208. klog.V(5).Infof("GCEAddresses.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  2209. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  2210. klog.V(4).Infof("GCEAddresses.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  2211. return err
  2212. }
  2213. obj.Name = key.Name
  2214. call := g.s.GA.Addresses.Insert(projectID, key.Region, obj)
  2215. call.Context(ctx)
  2216. op, err := call.Do()
  2217. if err != nil {
  2218. klog.V(4).Infof("GCEAddresses.Insert(%v, %v, ...) = %+v", ctx, key, err)
  2219. return err
  2220. }
  2221. err = g.s.WaitForCompletion(ctx, op)
  2222. klog.V(4).Infof("GCEAddresses.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  2223. return err
  2224. }
  2225. // Delete the Address referenced by key.
  2226. func (g *GCEAddresses) Delete(ctx context.Context, key *meta.Key) error {
  2227. klog.V(5).Infof("GCEAddresses.Delete(%v, %v): called", ctx, key)
  2228. if !key.Valid() {
  2229. klog.V(2).Infof("GCEAddresses.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  2230. return fmt.Errorf("invalid GCE key (%+v)", key)
  2231. }
  2232. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Addresses")
  2233. rk := &RateLimitKey{
  2234. ProjectID: projectID,
  2235. Operation: "Delete",
  2236. Version: meta.Version("ga"),
  2237. Service: "Addresses",
  2238. }
  2239. klog.V(5).Infof("GCEAddresses.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  2240. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  2241. klog.V(4).Infof("GCEAddresses.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  2242. return err
  2243. }
  2244. call := g.s.GA.Addresses.Delete(projectID, key.Region, key.Name)
  2245. call.Context(ctx)
  2246. op, err := call.Do()
  2247. if err != nil {
  2248. klog.V(4).Infof("GCEAddresses.Delete(%v, %v) = %v", ctx, key, err)
  2249. return err
  2250. }
  2251. err = g.s.WaitForCompletion(ctx, op)
  2252. klog.V(4).Infof("GCEAddresses.Delete(%v, %v) = %v", ctx, key, err)
  2253. return err
  2254. }
  2255. // AggregatedList lists all resources of the given type across all locations.
  2256. func (g *GCEAddresses) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*ga.Address, error) {
  2257. klog.V(5).Infof("GCEAddresses.AggregatedList(%v, %v) called", ctx, fl)
  2258. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Addresses")
  2259. rk := &RateLimitKey{
  2260. ProjectID: projectID,
  2261. Operation: "AggregatedList",
  2262. Version: meta.Version("ga"),
  2263. Service: "Addresses",
  2264. }
  2265. klog.V(5).Infof("GCEAddresses.AggregatedList(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  2266. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  2267. klog.V(5).Infof("GCEAddresses.AggregatedList(%v, %v): RateLimiter error: %v", ctx, fl, err)
  2268. return nil, err
  2269. }
  2270. call := g.s.GA.Addresses.AggregatedList(projectID)
  2271. call.Context(ctx)
  2272. if fl != filter.None {
  2273. call.Filter(fl.String())
  2274. }
  2275. all := map[string][]*ga.Address{}
  2276. f := func(l *ga.AddressAggregatedList) error {
  2277. for k, v := range l.Items {
  2278. klog.V(5).Infof("GCEAddresses.AggregatedList(%v, %v): page[%v]%+v", ctx, fl, k, v)
  2279. all[k] = append(all[k], v.Addresses...)
  2280. }
  2281. return nil
  2282. }
  2283. if err := call.Pages(ctx, f); err != nil {
  2284. klog.V(4).Infof("GCEAddresses.AggregatedList(%v, %v) = %v, %v", ctx, fl, nil, err)
  2285. return nil, err
  2286. }
  2287. if klog.V(4) {
  2288. klog.V(4).Infof("GCEAddresses.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(all), nil)
  2289. } else if klog.V(5) {
  2290. var asStr []string
  2291. for _, o := range all {
  2292. asStr = append(asStr, fmt.Sprintf("%+v", o))
  2293. }
  2294. klog.V(5).Infof("GCEAddresses.AggregatedList(%v, %v) = %v, %v", ctx, fl, asStr, nil)
  2295. }
  2296. return all, nil
  2297. }
  2298. // AlphaAddresses is an interface that allows for mocking of Addresses.
  2299. type AlphaAddresses interface {
  2300. Get(ctx context.Context, key *meta.Key) (*alpha.Address, error)
  2301. List(ctx context.Context, region string, fl *filter.F) ([]*alpha.Address, error)
  2302. Insert(ctx context.Context, key *meta.Key, obj *alpha.Address) error
  2303. Delete(ctx context.Context, key *meta.Key) error
  2304. AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*alpha.Address, error)
  2305. }
  2306. // NewMockAlphaAddresses returns a new mock for Addresses.
  2307. func NewMockAlphaAddresses(pr ProjectRouter, objs map[meta.Key]*MockAddressesObj) *MockAlphaAddresses {
  2308. mock := &MockAlphaAddresses{
  2309. ProjectRouter: pr,
  2310. Objects: objs,
  2311. GetError: map[meta.Key]error{},
  2312. InsertError: map[meta.Key]error{},
  2313. DeleteError: map[meta.Key]error{},
  2314. }
  2315. return mock
  2316. }
  2317. // MockAlphaAddresses is the mock for Addresses.
  2318. type MockAlphaAddresses struct {
  2319. Lock sync.Mutex
  2320. ProjectRouter ProjectRouter
  2321. // Objects maintained by the mock.
  2322. Objects map[meta.Key]*MockAddressesObj
  2323. // If an entry exists for the given key and operation, then the error
  2324. // will be returned instead of the operation.
  2325. GetError map[meta.Key]error
  2326. ListError *error
  2327. InsertError map[meta.Key]error
  2328. DeleteError map[meta.Key]error
  2329. AggregatedListError *error
  2330. // xxxHook allow you to intercept the standard processing of the mock in
  2331. // order to add your own logic. Return (true, _, _) to prevent the normal
  2332. // execution flow of the mock. Return (false, nil, nil) to continue with
  2333. // normal mock behavior/ after the hook function executes.
  2334. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaAddresses) (bool, *alpha.Address, error)
  2335. ListHook func(ctx context.Context, region string, fl *filter.F, m *MockAlphaAddresses) (bool, []*alpha.Address, error)
  2336. InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.Address, m *MockAlphaAddresses) (bool, error)
  2337. DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaAddresses) (bool, error)
  2338. AggregatedListHook func(ctx context.Context, fl *filter.F, m *MockAlphaAddresses) (bool, map[string][]*alpha.Address, error)
  2339. // X is extra state that can be used as part of the mock. Generated code
  2340. // will not use this field.
  2341. X interface{}
  2342. }
  2343. // Get returns the object from the mock.
  2344. func (m *MockAlphaAddresses) Get(ctx context.Context, key *meta.Key) (*alpha.Address, error) {
  2345. if m.GetHook != nil {
  2346. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  2347. klog.V(5).Infof("MockAlphaAddresses.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  2348. return obj, err
  2349. }
  2350. }
  2351. if !key.Valid() {
  2352. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  2353. }
  2354. m.Lock.Lock()
  2355. defer m.Lock.Unlock()
  2356. if err, ok := m.GetError[*key]; ok {
  2357. klog.V(5).Infof("MockAlphaAddresses.Get(%v, %s) = nil, %v", ctx, key, err)
  2358. return nil, err
  2359. }
  2360. if obj, ok := m.Objects[*key]; ok {
  2361. typedObj := obj.ToAlpha()
  2362. klog.V(5).Infof("MockAlphaAddresses.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  2363. return typedObj, nil
  2364. }
  2365. err := &googleapi.Error{
  2366. Code: http.StatusNotFound,
  2367. Message: fmt.Sprintf("MockAlphaAddresses %v not found", key),
  2368. }
  2369. klog.V(5).Infof("MockAlphaAddresses.Get(%v, %s) = nil, %v", ctx, key, err)
  2370. return nil, err
  2371. }
  2372. // List all of the objects in the mock in the given region.
  2373. func (m *MockAlphaAddresses) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.Address, error) {
  2374. if m.ListHook != nil {
  2375. if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept {
  2376. klog.V(5).Infof("MockAlphaAddresses.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err)
  2377. return objs, err
  2378. }
  2379. }
  2380. m.Lock.Lock()
  2381. defer m.Lock.Unlock()
  2382. if m.ListError != nil {
  2383. err := *m.ListError
  2384. klog.V(5).Infof("MockAlphaAddresses.List(%v, %q, %v) = nil, %v", ctx, region, fl, err)
  2385. return nil, *m.ListError
  2386. }
  2387. var objs []*alpha.Address
  2388. for key, obj := range m.Objects {
  2389. if key.Region != region {
  2390. continue
  2391. }
  2392. if !fl.Match(obj.ToAlpha()) {
  2393. continue
  2394. }
  2395. objs = append(objs, obj.ToAlpha())
  2396. }
  2397. klog.V(5).Infof("MockAlphaAddresses.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs))
  2398. return objs, nil
  2399. }
  2400. // Insert is a mock for inserting/creating a new object.
  2401. func (m *MockAlphaAddresses) Insert(ctx context.Context, key *meta.Key, obj *alpha.Address) error {
  2402. if m.InsertHook != nil {
  2403. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  2404. klog.V(5).Infof("MockAlphaAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  2405. return err
  2406. }
  2407. }
  2408. if !key.Valid() {
  2409. return fmt.Errorf("invalid GCE key (%+v)", key)
  2410. }
  2411. m.Lock.Lock()
  2412. defer m.Lock.Unlock()
  2413. if err, ok := m.InsertError[*key]; ok {
  2414. klog.V(5).Infof("MockAlphaAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  2415. return err
  2416. }
  2417. if _, ok := m.Objects[*key]; ok {
  2418. err := &googleapi.Error{
  2419. Code: http.StatusConflict,
  2420. Message: fmt.Sprintf("MockAlphaAddresses %v exists", key),
  2421. }
  2422. klog.V(5).Infof("MockAlphaAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  2423. return err
  2424. }
  2425. obj.Name = key.Name
  2426. projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "addresses")
  2427. obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "addresses", key)
  2428. m.Objects[*key] = &MockAddressesObj{obj}
  2429. klog.V(5).Infof("MockAlphaAddresses.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  2430. return nil
  2431. }
  2432. // Delete is a mock for deleting the object.
  2433. func (m *MockAlphaAddresses) Delete(ctx context.Context, key *meta.Key) error {
  2434. if m.DeleteHook != nil {
  2435. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  2436. klog.V(5).Infof("MockAlphaAddresses.Delete(%v, %v) = %v", ctx, key, err)
  2437. return err
  2438. }
  2439. }
  2440. if !key.Valid() {
  2441. return fmt.Errorf("invalid GCE key (%+v)", key)
  2442. }
  2443. m.Lock.Lock()
  2444. defer m.Lock.Unlock()
  2445. if err, ok := m.DeleteError[*key]; ok {
  2446. klog.V(5).Infof("MockAlphaAddresses.Delete(%v, %v) = %v", ctx, key, err)
  2447. return err
  2448. }
  2449. if _, ok := m.Objects[*key]; !ok {
  2450. err := &googleapi.Error{
  2451. Code: http.StatusNotFound,
  2452. Message: fmt.Sprintf("MockAlphaAddresses %v not found", key),
  2453. }
  2454. klog.V(5).Infof("MockAlphaAddresses.Delete(%v, %v) = %v", ctx, key, err)
  2455. return err
  2456. }
  2457. delete(m.Objects, *key)
  2458. klog.V(5).Infof("MockAlphaAddresses.Delete(%v, %v) = nil", ctx, key)
  2459. return nil
  2460. }
  2461. // AggregatedList is a mock for AggregatedList.
  2462. func (m *MockAlphaAddresses) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*alpha.Address, error) {
  2463. if m.AggregatedListHook != nil {
  2464. if intercept, objs, err := m.AggregatedListHook(ctx, fl, m); intercept {
  2465. klog.V(5).Infof("MockAlphaAddresses.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  2466. return objs, err
  2467. }
  2468. }
  2469. m.Lock.Lock()
  2470. defer m.Lock.Unlock()
  2471. if m.AggregatedListError != nil {
  2472. err := *m.AggregatedListError
  2473. klog.V(5).Infof("MockAlphaAddresses.AggregatedList(%v, %v) = nil, %v", ctx, fl, err)
  2474. return nil, err
  2475. }
  2476. objs := map[string][]*alpha.Address{}
  2477. for _, obj := range m.Objects {
  2478. res, err := ParseResourceURL(obj.ToAlpha().SelfLink)
  2479. location := res.Key.Region
  2480. if err != nil {
  2481. klog.V(5).Infof("MockAlphaAddresses.AggregatedList(%v, %v) = nil, %v", ctx, fl, err)
  2482. return nil, err
  2483. }
  2484. if !fl.Match(obj.ToAlpha()) {
  2485. continue
  2486. }
  2487. objs[location] = append(objs[location], obj.ToAlpha())
  2488. }
  2489. klog.V(5).Infof("MockAlphaAddresses.AggregatedList(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  2490. return objs, nil
  2491. }
  2492. // Obj wraps the object for use in the mock.
  2493. func (m *MockAlphaAddresses) Obj(o *alpha.Address) *MockAddressesObj {
  2494. return &MockAddressesObj{o}
  2495. }
  2496. // GCEAlphaAddresses is a simplifying adapter for the GCE Addresses.
  2497. type GCEAlphaAddresses struct {
  2498. s *Service
  2499. }
  2500. // Get the Address named by key.
  2501. func (g *GCEAlphaAddresses) Get(ctx context.Context, key *meta.Key) (*alpha.Address, error) {
  2502. klog.V(5).Infof("GCEAlphaAddresses.Get(%v, %v): called", ctx, key)
  2503. if !key.Valid() {
  2504. klog.V(2).Infof("GCEAlphaAddresses.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  2505. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  2506. }
  2507. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Addresses")
  2508. rk := &RateLimitKey{
  2509. ProjectID: projectID,
  2510. Operation: "Get",
  2511. Version: meta.Version("alpha"),
  2512. Service: "Addresses",
  2513. }
  2514. klog.V(5).Infof("GCEAlphaAddresses.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  2515. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  2516. klog.V(4).Infof("GCEAlphaAddresses.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  2517. return nil, err
  2518. }
  2519. call := g.s.Alpha.Addresses.Get(projectID, key.Region, key.Name)
  2520. call.Context(ctx)
  2521. v, err := call.Do()
  2522. klog.V(4).Infof("GCEAlphaAddresses.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  2523. return v, err
  2524. }
  2525. // List all Address objects.
  2526. func (g *GCEAlphaAddresses) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.Address, error) {
  2527. klog.V(5).Infof("GCEAlphaAddresses.List(%v, %v, %v) called", ctx, region, fl)
  2528. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Addresses")
  2529. rk := &RateLimitKey{
  2530. ProjectID: projectID,
  2531. Operation: "List",
  2532. Version: meta.Version("alpha"),
  2533. Service: "Addresses",
  2534. }
  2535. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  2536. return nil, err
  2537. }
  2538. klog.V(5).Infof("GCEAlphaAddresses.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk)
  2539. call := g.s.Alpha.Addresses.List(projectID, region)
  2540. if fl != filter.None {
  2541. call.Filter(fl.String())
  2542. }
  2543. var all []*alpha.Address
  2544. f := func(l *alpha.AddressList) error {
  2545. klog.V(5).Infof("GCEAlphaAddresses.List(%v, ..., %v): page %+v", ctx, fl, l)
  2546. all = append(all, l.Items...)
  2547. return nil
  2548. }
  2549. if err := call.Pages(ctx, f); err != nil {
  2550. klog.V(4).Infof("GCEAlphaAddresses.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  2551. return nil, err
  2552. }
  2553. if klog.V(4) {
  2554. klog.V(4).Infof("GCEAlphaAddresses.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  2555. } else if klog.V(5) {
  2556. var asStr []string
  2557. for _, o := range all {
  2558. asStr = append(asStr, fmt.Sprintf("%+v", o))
  2559. }
  2560. klog.V(5).Infof("GCEAlphaAddresses.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  2561. }
  2562. return all, nil
  2563. }
  2564. // Insert Address with key of value obj.
  2565. func (g *GCEAlphaAddresses) Insert(ctx context.Context, key *meta.Key, obj *alpha.Address) error {
  2566. klog.V(5).Infof("GCEAlphaAddresses.Insert(%v, %v, %+v): called", ctx, key, obj)
  2567. if !key.Valid() {
  2568. klog.V(2).Infof("GCEAlphaAddresses.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  2569. return fmt.Errorf("invalid GCE key (%+v)", key)
  2570. }
  2571. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Addresses")
  2572. rk := &RateLimitKey{
  2573. ProjectID: projectID,
  2574. Operation: "Insert",
  2575. Version: meta.Version("alpha"),
  2576. Service: "Addresses",
  2577. }
  2578. klog.V(5).Infof("GCEAlphaAddresses.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  2579. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  2580. klog.V(4).Infof("GCEAlphaAddresses.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  2581. return err
  2582. }
  2583. obj.Name = key.Name
  2584. call := g.s.Alpha.Addresses.Insert(projectID, key.Region, obj)
  2585. call.Context(ctx)
  2586. op, err := call.Do()
  2587. if err != nil {
  2588. klog.V(4).Infof("GCEAlphaAddresses.Insert(%v, %v, ...) = %+v", ctx, key, err)
  2589. return err
  2590. }
  2591. err = g.s.WaitForCompletion(ctx, op)
  2592. klog.V(4).Infof("GCEAlphaAddresses.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  2593. return err
  2594. }
  2595. // Delete the Address referenced by key.
  2596. func (g *GCEAlphaAddresses) Delete(ctx context.Context, key *meta.Key) error {
  2597. klog.V(5).Infof("GCEAlphaAddresses.Delete(%v, %v): called", ctx, key)
  2598. if !key.Valid() {
  2599. klog.V(2).Infof("GCEAlphaAddresses.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  2600. return fmt.Errorf("invalid GCE key (%+v)", key)
  2601. }
  2602. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Addresses")
  2603. rk := &RateLimitKey{
  2604. ProjectID: projectID,
  2605. Operation: "Delete",
  2606. Version: meta.Version("alpha"),
  2607. Service: "Addresses",
  2608. }
  2609. klog.V(5).Infof("GCEAlphaAddresses.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  2610. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  2611. klog.V(4).Infof("GCEAlphaAddresses.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  2612. return err
  2613. }
  2614. call := g.s.Alpha.Addresses.Delete(projectID, key.Region, key.Name)
  2615. call.Context(ctx)
  2616. op, err := call.Do()
  2617. if err != nil {
  2618. klog.V(4).Infof("GCEAlphaAddresses.Delete(%v, %v) = %v", ctx, key, err)
  2619. return err
  2620. }
  2621. err = g.s.WaitForCompletion(ctx, op)
  2622. klog.V(4).Infof("GCEAlphaAddresses.Delete(%v, %v) = %v", ctx, key, err)
  2623. return err
  2624. }
  2625. // AggregatedList lists all resources of the given type across all locations.
  2626. func (g *GCEAlphaAddresses) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*alpha.Address, error) {
  2627. klog.V(5).Infof("GCEAlphaAddresses.AggregatedList(%v, %v) called", ctx, fl)
  2628. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Addresses")
  2629. rk := &RateLimitKey{
  2630. ProjectID: projectID,
  2631. Operation: "AggregatedList",
  2632. Version: meta.Version("alpha"),
  2633. Service: "Addresses",
  2634. }
  2635. klog.V(5).Infof("GCEAlphaAddresses.AggregatedList(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  2636. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  2637. klog.V(5).Infof("GCEAlphaAddresses.AggregatedList(%v, %v): RateLimiter error: %v", ctx, fl, err)
  2638. return nil, err
  2639. }
  2640. call := g.s.Alpha.Addresses.AggregatedList(projectID)
  2641. call.Context(ctx)
  2642. if fl != filter.None {
  2643. call.Filter(fl.String())
  2644. }
  2645. all := map[string][]*alpha.Address{}
  2646. f := func(l *alpha.AddressAggregatedList) error {
  2647. for k, v := range l.Items {
  2648. klog.V(5).Infof("GCEAlphaAddresses.AggregatedList(%v, %v): page[%v]%+v", ctx, fl, k, v)
  2649. all[k] = append(all[k], v.Addresses...)
  2650. }
  2651. return nil
  2652. }
  2653. if err := call.Pages(ctx, f); err != nil {
  2654. klog.V(4).Infof("GCEAlphaAddresses.AggregatedList(%v, %v) = %v, %v", ctx, fl, nil, err)
  2655. return nil, err
  2656. }
  2657. if klog.V(4) {
  2658. klog.V(4).Infof("GCEAlphaAddresses.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(all), nil)
  2659. } else if klog.V(5) {
  2660. var asStr []string
  2661. for _, o := range all {
  2662. asStr = append(asStr, fmt.Sprintf("%+v", o))
  2663. }
  2664. klog.V(5).Infof("GCEAlphaAddresses.AggregatedList(%v, %v) = %v, %v", ctx, fl, asStr, nil)
  2665. }
  2666. return all, nil
  2667. }
  2668. // BetaAddresses is an interface that allows for mocking of Addresses.
  2669. type BetaAddresses interface {
  2670. Get(ctx context.Context, key *meta.Key) (*beta.Address, error)
  2671. List(ctx context.Context, region string, fl *filter.F) ([]*beta.Address, error)
  2672. Insert(ctx context.Context, key *meta.Key, obj *beta.Address) error
  2673. Delete(ctx context.Context, key *meta.Key) error
  2674. AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*beta.Address, error)
  2675. }
  2676. // NewMockBetaAddresses returns a new mock for Addresses.
  2677. func NewMockBetaAddresses(pr ProjectRouter, objs map[meta.Key]*MockAddressesObj) *MockBetaAddresses {
  2678. mock := &MockBetaAddresses{
  2679. ProjectRouter: pr,
  2680. Objects: objs,
  2681. GetError: map[meta.Key]error{},
  2682. InsertError: map[meta.Key]error{},
  2683. DeleteError: map[meta.Key]error{},
  2684. }
  2685. return mock
  2686. }
  2687. // MockBetaAddresses is the mock for Addresses.
  2688. type MockBetaAddresses struct {
  2689. Lock sync.Mutex
  2690. ProjectRouter ProjectRouter
  2691. // Objects maintained by the mock.
  2692. Objects map[meta.Key]*MockAddressesObj
  2693. // If an entry exists for the given key and operation, then the error
  2694. // will be returned instead of the operation.
  2695. GetError map[meta.Key]error
  2696. ListError *error
  2697. InsertError map[meta.Key]error
  2698. DeleteError map[meta.Key]error
  2699. AggregatedListError *error
  2700. // xxxHook allow you to intercept the standard processing of the mock in
  2701. // order to add your own logic. Return (true, _, _) to prevent the normal
  2702. // execution flow of the mock. Return (false, nil, nil) to continue with
  2703. // normal mock behavior/ after the hook function executes.
  2704. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaAddresses) (bool, *beta.Address, error)
  2705. ListHook func(ctx context.Context, region string, fl *filter.F, m *MockBetaAddresses) (bool, []*beta.Address, error)
  2706. InsertHook func(ctx context.Context, key *meta.Key, obj *beta.Address, m *MockBetaAddresses) (bool, error)
  2707. DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaAddresses) (bool, error)
  2708. AggregatedListHook func(ctx context.Context, fl *filter.F, m *MockBetaAddresses) (bool, map[string][]*beta.Address, error)
  2709. // X is extra state that can be used as part of the mock. Generated code
  2710. // will not use this field.
  2711. X interface{}
  2712. }
  2713. // Get returns the object from the mock.
  2714. func (m *MockBetaAddresses) Get(ctx context.Context, key *meta.Key) (*beta.Address, error) {
  2715. if m.GetHook != nil {
  2716. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  2717. klog.V(5).Infof("MockBetaAddresses.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  2718. return obj, err
  2719. }
  2720. }
  2721. if !key.Valid() {
  2722. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  2723. }
  2724. m.Lock.Lock()
  2725. defer m.Lock.Unlock()
  2726. if err, ok := m.GetError[*key]; ok {
  2727. klog.V(5).Infof("MockBetaAddresses.Get(%v, %s) = nil, %v", ctx, key, err)
  2728. return nil, err
  2729. }
  2730. if obj, ok := m.Objects[*key]; ok {
  2731. typedObj := obj.ToBeta()
  2732. klog.V(5).Infof("MockBetaAddresses.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  2733. return typedObj, nil
  2734. }
  2735. err := &googleapi.Error{
  2736. Code: http.StatusNotFound,
  2737. Message: fmt.Sprintf("MockBetaAddresses %v not found", key),
  2738. }
  2739. klog.V(5).Infof("MockBetaAddresses.Get(%v, %s) = nil, %v", ctx, key, err)
  2740. return nil, err
  2741. }
  2742. // List all of the objects in the mock in the given region.
  2743. func (m *MockBetaAddresses) List(ctx context.Context, region string, fl *filter.F) ([]*beta.Address, error) {
  2744. if m.ListHook != nil {
  2745. if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept {
  2746. klog.V(5).Infof("MockBetaAddresses.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err)
  2747. return objs, err
  2748. }
  2749. }
  2750. m.Lock.Lock()
  2751. defer m.Lock.Unlock()
  2752. if m.ListError != nil {
  2753. err := *m.ListError
  2754. klog.V(5).Infof("MockBetaAddresses.List(%v, %q, %v) = nil, %v", ctx, region, fl, err)
  2755. return nil, *m.ListError
  2756. }
  2757. var objs []*beta.Address
  2758. for key, obj := range m.Objects {
  2759. if key.Region != region {
  2760. continue
  2761. }
  2762. if !fl.Match(obj.ToBeta()) {
  2763. continue
  2764. }
  2765. objs = append(objs, obj.ToBeta())
  2766. }
  2767. klog.V(5).Infof("MockBetaAddresses.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs))
  2768. return objs, nil
  2769. }
  2770. // Insert is a mock for inserting/creating a new object.
  2771. func (m *MockBetaAddresses) Insert(ctx context.Context, key *meta.Key, obj *beta.Address) error {
  2772. if m.InsertHook != nil {
  2773. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  2774. klog.V(5).Infof("MockBetaAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  2775. return err
  2776. }
  2777. }
  2778. if !key.Valid() {
  2779. return fmt.Errorf("invalid GCE key (%+v)", key)
  2780. }
  2781. m.Lock.Lock()
  2782. defer m.Lock.Unlock()
  2783. if err, ok := m.InsertError[*key]; ok {
  2784. klog.V(5).Infof("MockBetaAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  2785. return err
  2786. }
  2787. if _, ok := m.Objects[*key]; ok {
  2788. err := &googleapi.Error{
  2789. Code: http.StatusConflict,
  2790. Message: fmt.Sprintf("MockBetaAddresses %v exists", key),
  2791. }
  2792. klog.V(5).Infof("MockBetaAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  2793. return err
  2794. }
  2795. obj.Name = key.Name
  2796. projectID := m.ProjectRouter.ProjectID(ctx, "beta", "addresses")
  2797. obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "addresses", key)
  2798. m.Objects[*key] = &MockAddressesObj{obj}
  2799. klog.V(5).Infof("MockBetaAddresses.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  2800. return nil
  2801. }
  2802. // Delete is a mock for deleting the object.
  2803. func (m *MockBetaAddresses) Delete(ctx context.Context, key *meta.Key) error {
  2804. if m.DeleteHook != nil {
  2805. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  2806. klog.V(5).Infof("MockBetaAddresses.Delete(%v, %v) = %v", ctx, key, err)
  2807. return err
  2808. }
  2809. }
  2810. if !key.Valid() {
  2811. return fmt.Errorf("invalid GCE key (%+v)", key)
  2812. }
  2813. m.Lock.Lock()
  2814. defer m.Lock.Unlock()
  2815. if err, ok := m.DeleteError[*key]; ok {
  2816. klog.V(5).Infof("MockBetaAddresses.Delete(%v, %v) = %v", ctx, key, err)
  2817. return err
  2818. }
  2819. if _, ok := m.Objects[*key]; !ok {
  2820. err := &googleapi.Error{
  2821. Code: http.StatusNotFound,
  2822. Message: fmt.Sprintf("MockBetaAddresses %v not found", key),
  2823. }
  2824. klog.V(5).Infof("MockBetaAddresses.Delete(%v, %v) = %v", ctx, key, err)
  2825. return err
  2826. }
  2827. delete(m.Objects, *key)
  2828. klog.V(5).Infof("MockBetaAddresses.Delete(%v, %v) = nil", ctx, key)
  2829. return nil
  2830. }
  2831. // AggregatedList is a mock for AggregatedList.
  2832. func (m *MockBetaAddresses) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*beta.Address, error) {
  2833. if m.AggregatedListHook != nil {
  2834. if intercept, objs, err := m.AggregatedListHook(ctx, fl, m); intercept {
  2835. klog.V(5).Infof("MockBetaAddresses.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  2836. return objs, err
  2837. }
  2838. }
  2839. m.Lock.Lock()
  2840. defer m.Lock.Unlock()
  2841. if m.AggregatedListError != nil {
  2842. err := *m.AggregatedListError
  2843. klog.V(5).Infof("MockBetaAddresses.AggregatedList(%v, %v) = nil, %v", ctx, fl, err)
  2844. return nil, err
  2845. }
  2846. objs := map[string][]*beta.Address{}
  2847. for _, obj := range m.Objects {
  2848. res, err := ParseResourceURL(obj.ToBeta().SelfLink)
  2849. location := res.Key.Region
  2850. if err != nil {
  2851. klog.V(5).Infof("MockBetaAddresses.AggregatedList(%v, %v) = nil, %v", ctx, fl, err)
  2852. return nil, err
  2853. }
  2854. if !fl.Match(obj.ToBeta()) {
  2855. continue
  2856. }
  2857. objs[location] = append(objs[location], obj.ToBeta())
  2858. }
  2859. klog.V(5).Infof("MockBetaAddresses.AggregatedList(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  2860. return objs, nil
  2861. }
  2862. // Obj wraps the object for use in the mock.
  2863. func (m *MockBetaAddresses) Obj(o *beta.Address) *MockAddressesObj {
  2864. return &MockAddressesObj{o}
  2865. }
  2866. // GCEBetaAddresses is a simplifying adapter for the GCE Addresses.
  2867. type GCEBetaAddresses struct {
  2868. s *Service
  2869. }
  2870. // Get the Address named by key.
  2871. func (g *GCEBetaAddresses) Get(ctx context.Context, key *meta.Key) (*beta.Address, error) {
  2872. klog.V(5).Infof("GCEBetaAddresses.Get(%v, %v): called", ctx, key)
  2873. if !key.Valid() {
  2874. klog.V(2).Infof("GCEBetaAddresses.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  2875. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  2876. }
  2877. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Addresses")
  2878. rk := &RateLimitKey{
  2879. ProjectID: projectID,
  2880. Operation: "Get",
  2881. Version: meta.Version("beta"),
  2882. Service: "Addresses",
  2883. }
  2884. klog.V(5).Infof("GCEBetaAddresses.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  2885. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  2886. klog.V(4).Infof("GCEBetaAddresses.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  2887. return nil, err
  2888. }
  2889. call := g.s.Beta.Addresses.Get(projectID, key.Region, key.Name)
  2890. call.Context(ctx)
  2891. v, err := call.Do()
  2892. klog.V(4).Infof("GCEBetaAddresses.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  2893. return v, err
  2894. }
  2895. // List all Address objects.
  2896. func (g *GCEBetaAddresses) List(ctx context.Context, region string, fl *filter.F) ([]*beta.Address, error) {
  2897. klog.V(5).Infof("GCEBetaAddresses.List(%v, %v, %v) called", ctx, region, fl)
  2898. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Addresses")
  2899. rk := &RateLimitKey{
  2900. ProjectID: projectID,
  2901. Operation: "List",
  2902. Version: meta.Version("beta"),
  2903. Service: "Addresses",
  2904. }
  2905. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  2906. return nil, err
  2907. }
  2908. klog.V(5).Infof("GCEBetaAddresses.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk)
  2909. call := g.s.Beta.Addresses.List(projectID, region)
  2910. if fl != filter.None {
  2911. call.Filter(fl.String())
  2912. }
  2913. var all []*beta.Address
  2914. f := func(l *beta.AddressList) error {
  2915. klog.V(5).Infof("GCEBetaAddresses.List(%v, ..., %v): page %+v", ctx, fl, l)
  2916. all = append(all, l.Items...)
  2917. return nil
  2918. }
  2919. if err := call.Pages(ctx, f); err != nil {
  2920. klog.V(4).Infof("GCEBetaAddresses.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  2921. return nil, err
  2922. }
  2923. if klog.V(4) {
  2924. klog.V(4).Infof("GCEBetaAddresses.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  2925. } else if klog.V(5) {
  2926. var asStr []string
  2927. for _, o := range all {
  2928. asStr = append(asStr, fmt.Sprintf("%+v", o))
  2929. }
  2930. klog.V(5).Infof("GCEBetaAddresses.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  2931. }
  2932. return all, nil
  2933. }
  2934. // Insert Address with key of value obj.
  2935. func (g *GCEBetaAddresses) Insert(ctx context.Context, key *meta.Key, obj *beta.Address) error {
  2936. klog.V(5).Infof("GCEBetaAddresses.Insert(%v, %v, %+v): called", ctx, key, obj)
  2937. if !key.Valid() {
  2938. klog.V(2).Infof("GCEBetaAddresses.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  2939. return fmt.Errorf("invalid GCE key (%+v)", key)
  2940. }
  2941. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Addresses")
  2942. rk := &RateLimitKey{
  2943. ProjectID: projectID,
  2944. Operation: "Insert",
  2945. Version: meta.Version("beta"),
  2946. Service: "Addresses",
  2947. }
  2948. klog.V(5).Infof("GCEBetaAddresses.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  2949. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  2950. klog.V(4).Infof("GCEBetaAddresses.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  2951. return err
  2952. }
  2953. obj.Name = key.Name
  2954. call := g.s.Beta.Addresses.Insert(projectID, key.Region, obj)
  2955. call.Context(ctx)
  2956. op, err := call.Do()
  2957. if err != nil {
  2958. klog.V(4).Infof("GCEBetaAddresses.Insert(%v, %v, ...) = %+v", ctx, key, err)
  2959. return err
  2960. }
  2961. err = g.s.WaitForCompletion(ctx, op)
  2962. klog.V(4).Infof("GCEBetaAddresses.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  2963. return err
  2964. }
  2965. // Delete the Address referenced by key.
  2966. func (g *GCEBetaAddresses) Delete(ctx context.Context, key *meta.Key) error {
  2967. klog.V(5).Infof("GCEBetaAddresses.Delete(%v, %v): called", ctx, key)
  2968. if !key.Valid() {
  2969. klog.V(2).Infof("GCEBetaAddresses.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  2970. return fmt.Errorf("invalid GCE key (%+v)", key)
  2971. }
  2972. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Addresses")
  2973. rk := &RateLimitKey{
  2974. ProjectID: projectID,
  2975. Operation: "Delete",
  2976. Version: meta.Version("beta"),
  2977. Service: "Addresses",
  2978. }
  2979. klog.V(5).Infof("GCEBetaAddresses.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  2980. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  2981. klog.V(4).Infof("GCEBetaAddresses.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  2982. return err
  2983. }
  2984. call := g.s.Beta.Addresses.Delete(projectID, key.Region, key.Name)
  2985. call.Context(ctx)
  2986. op, err := call.Do()
  2987. if err != nil {
  2988. klog.V(4).Infof("GCEBetaAddresses.Delete(%v, %v) = %v", ctx, key, err)
  2989. return err
  2990. }
  2991. err = g.s.WaitForCompletion(ctx, op)
  2992. klog.V(4).Infof("GCEBetaAddresses.Delete(%v, %v) = %v", ctx, key, err)
  2993. return err
  2994. }
  2995. // AggregatedList lists all resources of the given type across all locations.
  2996. func (g *GCEBetaAddresses) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*beta.Address, error) {
  2997. klog.V(5).Infof("GCEBetaAddresses.AggregatedList(%v, %v) called", ctx, fl)
  2998. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Addresses")
  2999. rk := &RateLimitKey{
  3000. ProjectID: projectID,
  3001. Operation: "AggregatedList",
  3002. Version: meta.Version("beta"),
  3003. Service: "Addresses",
  3004. }
  3005. klog.V(5).Infof("GCEBetaAddresses.AggregatedList(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  3006. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  3007. klog.V(5).Infof("GCEBetaAddresses.AggregatedList(%v, %v): RateLimiter error: %v", ctx, fl, err)
  3008. return nil, err
  3009. }
  3010. call := g.s.Beta.Addresses.AggregatedList(projectID)
  3011. call.Context(ctx)
  3012. if fl != filter.None {
  3013. call.Filter(fl.String())
  3014. }
  3015. all := map[string][]*beta.Address{}
  3016. f := func(l *beta.AddressAggregatedList) error {
  3017. for k, v := range l.Items {
  3018. klog.V(5).Infof("GCEBetaAddresses.AggregatedList(%v, %v): page[%v]%+v", ctx, fl, k, v)
  3019. all[k] = append(all[k], v.Addresses...)
  3020. }
  3021. return nil
  3022. }
  3023. if err := call.Pages(ctx, f); err != nil {
  3024. klog.V(4).Infof("GCEBetaAddresses.AggregatedList(%v, %v) = %v, %v", ctx, fl, nil, err)
  3025. return nil, err
  3026. }
  3027. if klog.V(4) {
  3028. klog.V(4).Infof("GCEBetaAddresses.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(all), nil)
  3029. } else if klog.V(5) {
  3030. var asStr []string
  3031. for _, o := range all {
  3032. asStr = append(asStr, fmt.Sprintf("%+v", o))
  3033. }
  3034. klog.V(5).Infof("GCEBetaAddresses.AggregatedList(%v, %v) = %v, %v", ctx, fl, asStr, nil)
  3035. }
  3036. return all, nil
  3037. }
  3038. // AlphaGlobalAddresses is an interface that allows for mocking of GlobalAddresses.
  3039. type AlphaGlobalAddresses interface {
  3040. Get(ctx context.Context, key *meta.Key) (*alpha.Address, error)
  3041. List(ctx context.Context, fl *filter.F) ([]*alpha.Address, error)
  3042. Insert(ctx context.Context, key *meta.Key, obj *alpha.Address) error
  3043. Delete(ctx context.Context, key *meta.Key) error
  3044. }
  3045. // NewMockAlphaGlobalAddresses returns a new mock for GlobalAddresses.
  3046. func NewMockAlphaGlobalAddresses(pr ProjectRouter, objs map[meta.Key]*MockGlobalAddressesObj) *MockAlphaGlobalAddresses {
  3047. mock := &MockAlphaGlobalAddresses{
  3048. ProjectRouter: pr,
  3049. Objects: objs,
  3050. GetError: map[meta.Key]error{},
  3051. InsertError: map[meta.Key]error{},
  3052. DeleteError: map[meta.Key]error{},
  3053. }
  3054. return mock
  3055. }
  3056. // MockAlphaGlobalAddresses is the mock for GlobalAddresses.
  3057. type MockAlphaGlobalAddresses struct {
  3058. Lock sync.Mutex
  3059. ProjectRouter ProjectRouter
  3060. // Objects maintained by the mock.
  3061. Objects map[meta.Key]*MockGlobalAddressesObj
  3062. // If an entry exists for the given key and operation, then the error
  3063. // will be returned instead of the operation.
  3064. GetError map[meta.Key]error
  3065. ListError *error
  3066. InsertError map[meta.Key]error
  3067. DeleteError map[meta.Key]error
  3068. // xxxHook allow you to intercept the standard processing of the mock in
  3069. // order to add your own logic. Return (true, _, _) to prevent the normal
  3070. // execution flow of the mock. Return (false, nil, nil) to continue with
  3071. // normal mock behavior/ after the hook function executes.
  3072. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaGlobalAddresses) (bool, *alpha.Address, error)
  3073. ListHook func(ctx context.Context, fl *filter.F, m *MockAlphaGlobalAddresses) (bool, []*alpha.Address, error)
  3074. InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.Address, m *MockAlphaGlobalAddresses) (bool, error)
  3075. DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaGlobalAddresses) (bool, error)
  3076. // X is extra state that can be used as part of the mock. Generated code
  3077. // will not use this field.
  3078. X interface{}
  3079. }
  3080. // Get returns the object from the mock.
  3081. func (m *MockAlphaGlobalAddresses) Get(ctx context.Context, key *meta.Key) (*alpha.Address, error) {
  3082. if m.GetHook != nil {
  3083. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  3084. klog.V(5).Infof("MockAlphaGlobalAddresses.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  3085. return obj, err
  3086. }
  3087. }
  3088. if !key.Valid() {
  3089. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  3090. }
  3091. m.Lock.Lock()
  3092. defer m.Lock.Unlock()
  3093. if err, ok := m.GetError[*key]; ok {
  3094. klog.V(5).Infof("MockAlphaGlobalAddresses.Get(%v, %s) = nil, %v", ctx, key, err)
  3095. return nil, err
  3096. }
  3097. if obj, ok := m.Objects[*key]; ok {
  3098. typedObj := obj.ToAlpha()
  3099. klog.V(5).Infof("MockAlphaGlobalAddresses.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  3100. return typedObj, nil
  3101. }
  3102. err := &googleapi.Error{
  3103. Code: http.StatusNotFound,
  3104. Message: fmt.Sprintf("MockAlphaGlobalAddresses %v not found", key),
  3105. }
  3106. klog.V(5).Infof("MockAlphaGlobalAddresses.Get(%v, %s) = nil, %v", ctx, key, err)
  3107. return nil, err
  3108. }
  3109. // List all of the objects in the mock.
  3110. func (m *MockAlphaGlobalAddresses) List(ctx context.Context, fl *filter.F) ([]*alpha.Address, error) {
  3111. if m.ListHook != nil {
  3112. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  3113. klog.V(5).Infof("MockAlphaGlobalAddresses.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  3114. return objs, err
  3115. }
  3116. }
  3117. m.Lock.Lock()
  3118. defer m.Lock.Unlock()
  3119. if m.ListError != nil {
  3120. err := *m.ListError
  3121. klog.V(5).Infof("MockAlphaGlobalAddresses.List(%v, %v) = nil, %v", ctx, fl, err)
  3122. return nil, *m.ListError
  3123. }
  3124. var objs []*alpha.Address
  3125. for _, obj := range m.Objects {
  3126. if !fl.Match(obj.ToAlpha()) {
  3127. continue
  3128. }
  3129. objs = append(objs, obj.ToAlpha())
  3130. }
  3131. klog.V(5).Infof("MockAlphaGlobalAddresses.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  3132. return objs, nil
  3133. }
  3134. // Insert is a mock for inserting/creating a new object.
  3135. func (m *MockAlphaGlobalAddresses) Insert(ctx context.Context, key *meta.Key, obj *alpha.Address) error {
  3136. if m.InsertHook != nil {
  3137. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  3138. klog.V(5).Infof("MockAlphaGlobalAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  3139. return err
  3140. }
  3141. }
  3142. if !key.Valid() {
  3143. return fmt.Errorf("invalid GCE key (%+v)", key)
  3144. }
  3145. m.Lock.Lock()
  3146. defer m.Lock.Unlock()
  3147. if err, ok := m.InsertError[*key]; ok {
  3148. klog.V(5).Infof("MockAlphaGlobalAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  3149. return err
  3150. }
  3151. if _, ok := m.Objects[*key]; ok {
  3152. err := &googleapi.Error{
  3153. Code: http.StatusConflict,
  3154. Message: fmt.Sprintf("MockAlphaGlobalAddresses %v exists", key),
  3155. }
  3156. klog.V(5).Infof("MockAlphaGlobalAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  3157. return err
  3158. }
  3159. obj.Name = key.Name
  3160. projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "addresses")
  3161. obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "addresses", key)
  3162. m.Objects[*key] = &MockGlobalAddressesObj{obj}
  3163. klog.V(5).Infof("MockAlphaGlobalAddresses.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  3164. return nil
  3165. }
  3166. // Delete is a mock for deleting the object.
  3167. func (m *MockAlphaGlobalAddresses) Delete(ctx context.Context, key *meta.Key) error {
  3168. if m.DeleteHook != nil {
  3169. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  3170. klog.V(5).Infof("MockAlphaGlobalAddresses.Delete(%v, %v) = %v", ctx, key, err)
  3171. return err
  3172. }
  3173. }
  3174. if !key.Valid() {
  3175. return fmt.Errorf("invalid GCE key (%+v)", key)
  3176. }
  3177. m.Lock.Lock()
  3178. defer m.Lock.Unlock()
  3179. if err, ok := m.DeleteError[*key]; ok {
  3180. klog.V(5).Infof("MockAlphaGlobalAddresses.Delete(%v, %v) = %v", ctx, key, err)
  3181. return err
  3182. }
  3183. if _, ok := m.Objects[*key]; !ok {
  3184. err := &googleapi.Error{
  3185. Code: http.StatusNotFound,
  3186. Message: fmt.Sprintf("MockAlphaGlobalAddresses %v not found", key),
  3187. }
  3188. klog.V(5).Infof("MockAlphaGlobalAddresses.Delete(%v, %v) = %v", ctx, key, err)
  3189. return err
  3190. }
  3191. delete(m.Objects, *key)
  3192. klog.V(5).Infof("MockAlphaGlobalAddresses.Delete(%v, %v) = nil", ctx, key)
  3193. return nil
  3194. }
  3195. // Obj wraps the object for use in the mock.
  3196. func (m *MockAlphaGlobalAddresses) Obj(o *alpha.Address) *MockGlobalAddressesObj {
  3197. return &MockGlobalAddressesObj{o}
  3198. }
  3199. // GCEAlphaGlobalAddresses is a simplifying adapter for the GCE GlobalAddresses.
  3200. type GCEAlphaGlobalAddresses struct {
  3201. s *Service
  3202. }
  3203. // Get the Address named by key.
  3204. func (g *GCEAlphaGlobalAddresses) Get(ctx context.Context, key *meta.Key) (*alpha.Address, error) {
  3205. klog.V(5).Infof("GCEAlphaGlobalAddresses.Get(%v, %v): called", ctx, key)
  3206. if !key.Valid() {
  3207. klog.V(2).Infof("GCEAlphaGlobalAddresses.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  3208. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  3209. }
  3210. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "GlobalAddresses")
  3211. rk := &RateLimitKey{
  3212. ProjectID: projectID,
  3213. Operation: "Get",
  3214. Version: meta.Version("alpha"),
  3215. Service: "GlobalAddresses",
  3216. }
  3217. klog.V(5).Infof("GCEAlphaGlobalAddresses.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  3218. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  3219. klog.V(4).Infof("GCEAlphaGlobalAddresses.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  3220. return nil, err
  3221. }
  3222. call := g.s.Alpha.GlobalAddresses.Get(projectID, key.Name)
  3223. call.Context(ctx)
  3224. v, err := call.Do()
  3225. klog.V(4).Infof("GCEAlphaGlobalAddresses.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  3226. return v, err
  3227. }
  3228. // List all Address objects.
  3229. func (g *GCEAlphaGlobalAddresses) List(ctx context.Context, fl *filter.F) ([]*alpha.Address, error) {
  3230. klog.V(5).Infof("GCEAlphaGlobalAddresses.List(%v, %v) called", ctx, fl)
  3231. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "GlobalAddresses")
  3232. rk := &RateLimitKey{
  3233. ProjectID: projectID,
  3234. Operation: "List",
  3235. Version: meta.Version("alpha"),
  3236. Service: "GlobalAddresses",
  3237. }
  3238. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  3239. return nil, err
  3240. }
  3241. klog.V(5).Infof("GCEAlphaGlobalAddresses.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  3242. call := g.s.Alpha.GlobalAddresses.List(projectID)
  3243. if fl != filter.None {
  3244. call.Filter(fl.String())
  3245. }
  3246. var all []*alpha.Address
  3247. f := func(l *alpha.AddressList) error {
  3248. klog.V(5).Infof("GCEAlphaGlobalAddresses.List(%v, ..., %v): page %+v", ctx, fl, l)
  3249. all = append(all, l.Items...)
  3250. return nil
  3251. }
  3252. if err := call.Pages(ctx, f); err != nil {
  3253. klog.V(4).Infof("GCEAlphaGlobalAddresses.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  3254. return nil, err
  3255. }
  3256. if klog.V(4) {
  3257. klog.V(4).Infof("GCEAlphaGlobalAddresses.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  3258. } else if klog.V(5) {
  3259. var asStr []string
  3260. for _, o := range all {
  3261. asStr = append(asStr, fmt.Sprintf("%+v", o))
  3262. }
  3263. klog.V(5).Infof("GCEAlphaGlobalAddresses.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  3264. }
  3265. return all, nil
  3266. }
  3267. // Insert Address with key of value obj.
  3268. func (g *GCEAlphaGlobalAddresses) Insert(ctx context.Context, key *meta.Key, obj *alpha.Address) error {
  3269. klog.V(5).Infof("GCEAlphaGlobalAddresses.Insert(%v, %v, %+v): called", ctx, key, obj)
  3270. if !key.Valid() {
  3271. klog.V(2).Infof("GCEAlphaGlobalAddresses.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  3272. return fmt.Errorf("invalid GCE key (%+v)", key)
  3273. }
  3274. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "GlobalAddresses")
  3275. rk := &RateLimitKey{
  3276. ProjectID: projectID,
  3277. Operation: "Insert",
  3278. Version: meta.Version("alpha"),
  3279. Service: "GlobalAddresses",
  3280. }
  3281. klog.V(5).Infof("GCEAlphaGlobalAddresses.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  3282. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  3283. klog.V(4).Infof("GCEAlphaGlobalAddresses.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  3284. return err
  3285. }
  3286. obj.Name = key.Name
  3287. call := g.s.Alpha.GlobalAddresses.Insert(projectID, obj)
  3288. call.Context(ctx)
  3289. op, err := call.Do()
  3290. if err != nil {
  3291. klog.V(4).Infof("GCEAlphaGlobalAddresses.Insert(%v, %v, ...) = %+v", ctx, key, err)
  3292. return err
  3293. }
  3294. err = g.s.WaitForCompletion(ctx, op)
  3295. klog.V(4).Infof("GCEAlphaGlobalAddresses.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  3296. return err
  3297. }
  3298. // Delete the Address referenced by key.
  3299. func (g *GCEAlphaGlobalAddresses) Delete(ctx context.Context, key *meta.Key) error {
  3300. klog.V(5).Infof("GCEAlphaGlobalAddresses.Delete(%v, %v): called", ctx, key)
  3301. if !key.Valid() {
  3302. klog.V(2).Infof("GCEAlphaGlobalAddresses.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  3303. return fmt.Errorf("invalid GCE key (%+v)", key)
  3304. }
  3305. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "GlobalAddresses")
  3306. rk := &RateLimitKey{
  3307. ProjectID: projectID,
  3308. Operation: "Delete",
  3309. Version: meta.Version("alpha"),
  3310. Service: "GlobalAddresses",
  3311. }
  3312. klog.V(5).Infof("GCEAlphaGlobalAddresses.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  3313. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  3314. klog.V(4).Infof("GCEAlphaGlobalAddresses.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  3315. return err
  3316. }
  3317. call := g.s.Alpha.GlobalAddresses.Delete(projectID, key.Name)
  3318. call.Context(ctx)
  3319. op, err := call.Do()
  3320. if err != nil {
  3321. klog.V(4).Infof("GCEAlphaGlobalAddresses.Delete(%v, %v) = %v", ctx, key, err)
  3322. return err
  3323. }
  3324. err = g.s.WaitForCompletion(ctx, op)
  3325. klog.V(4).Infof("GCEAlphaGlobalAddresses.Delete(%v, %v) = %v", ctx, key, err)
  3326. return err
  3327. }
  3328. // GlobalAddresses is an interface that allows for mocking of GlobalAddresses.
  3329. type GlobalAddresses interface {
  3330. Get(ctx context.Context, key *meta.Key) (*ga.Address, error)
  3331. List(ctx context.Context, fl *filter.F) ([]*ga.Address, error)
  3332. Insert(ctx context.Context, key *meta.Key, obj *ga.Address) error
  3333. Delete(ctx context.Context, key *meta.Key) error
  3334. }
  3335. // NewMockGlobalAddresses returns a new mock for GlobalAddresses.
  3336. func NewMockGlobalAddresses(pr ProjectRouter, objs map[meta.Key]*MockGlobalAddressesObj) *MockGlobalAddresses {
  3337. mock := &MockGlobalAddresses{
  3338. ProjectRouter: pr,
  3339. Objects: objs,
  3340. GetError: map[meta.Key]error{},
  3341. InsertError: map[meta.Key]error{},
  3342. DeleteError: map[meta.Key]error{},
  3343. }
  3344. return mock
  3345. }
  3346. // MockGlobalAddresses is the mock for GlobalAddresses.
  3347. type MockGlobalAddresses struct {
  3348. Lock sync.Mutex
  3349. ProjectRouter ProjectRouter
  3350. // Objects maintained by the mock.
  3351. Objects map[meta.Key]*MockGlobalAddressesObj
  3352. // If an entry exists for the given key and operation, then the error
  3353. // will be returned instead of the operation.
  3354. GetError map[meta.Key]error
  3355. ListError *error
  3356. InsertError map[meta.Key]error
  3357. DeleteError map[meta.Key]error
  3358. // xxxHook allow you to intercept the standard processing of the mock in
  3359. // order to add your own logic. Return (true, _, _) to prevent the normal
  3360. // execution flow of the mock. Return (false, nil, nil) to continue with
  3361. // normal mock behavior/ after the hook function executes.
  3362. GetHook func(ctx context.Context, key *meta.Key, m *MockGlobalAddresses) (bool, *ga.Address, error)
  3363. ListHook func(ctx context.Context, fl *filter.F, m *MockGlobalAddresses) (bool, []*ga.Address, error)
  3364. InsertHook func(ctx context.Context, key *meta.Key, obj *ga.Address, m *MockGlobalAddresses) (bool, error)
  3365. DeleteHook func(ctx context.Context, key *meta.Key, m *MockGlobalAddresses) (bool, error)
  3366. // X is extra state that can be used as part of the mock. Generated code
  3367. // will not use this field.
  3368. X interface{}
  3369. }
  3370. // Get returns the object from the mock.
  3371. func (m *MockGlobalAddresses) Get(ctx context.Context, key *meta.Key) (*ga.Address, error) {
  3372. if m.GetHook != nil {
  3373. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  3374. klog.V(5).Infof("MockGlobalAddresses.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  3375. return obj, err
  3376. }
  3377. }
  3378. if !key.Valid() {
  3379. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  3380. }
  3381. m.Lock.Lock()
  3382. defer m.Lock.Unlock()
  3383. if err, ok := m.GetError[*key]; ok {
  3384. klog.V(5).Infof("MockGlobalAddresses.Get(%v, %s) = nil, %v", ctx, key, err)
  3385. return nil, err
  3386. }
  3387. if obj, ok := m.Objects[*key]; ok {
  3388. typedObj := obj.ToGA()
  3389. klog.V(5).Infof("MockGlobalAddresses.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  3390. return typedObj, nil
  3391. }
  3392. err := &googleapi.Error{
  3393. Code: http.StatusNotFound,
  3394. Message: fmt.Sprintf("MockGlobalAddresses %v not found", key),
  3395. }
  3396. klog.V(5).Infof("MockGlobalAddresses.Get(%v, %s) = nil, %v", ctx, key, err)
  3397. return nil, err
  3398. }
  3399. // List all of the objects in the mock.
  3400. func (m *MockGlobalAddresses) List(ctx context.Context, fl *filter.F) ([]*ga.Address, error) {
  3401. if m.ListHook != nil {
  3402. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  3403. klog.V(5).Infof("MockGlobalAddresses.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  3404. return objs, err
  3405. }
  3406. }
  3407. m.Lock.Lock()
  3408. defer m.Lock.Unlock()
  3409. if m.ListError != nil {
  3410. err := *m.ListError
  3411. klog.V(5).Infof("MockGlobalAddresses.List(%v, %v) = nil, %v", ctx, fl, err)
  3412. return nil, *m.ListError
  3413. }
  3414. var objs []*ga.Address
  3415. for _, obj := range m.Objects {
  3416. if !fl.Match(obj.ToGA()) {
  3417. continue
  3418. }
  3419. objs = append(objs, obj.ToGA())
  3420. }
  3421. klog.V(5).Infof("MockGlobalAddresses.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  3422. return objs, nil
  3423. }
  3424. // Insert is a mock for inserting/creating a new object.
  3425. func (m *MockGlobalAddresses) Insert(ctx context.Context, key *meta.Key, obj *ga.Address) error {
  3426. if m.InsertHook != nil {
  3427. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  3428. klog.V(5).Infof("MockGlobalAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  3429. return err
  3430. }
  3431. }
  3432. if !key.Valid() {
  3433. return fmt.Errorf("invalid GCE key (%+v)", key)
  3434. }
  3435. m.Lock.Lock()
  3436. defer m.Lock.Unlock()
  3437. if err, ok := m.InsertError[*key]; ok {
  3438. klog.V(5).Infof("MockGlobalAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  3439. return err
  3440. }
  3441. if _, ok := m.Objects[*key]; ok {
  3442. err := &googleapi.Error{
  3443. Code: http.StatusConflict,
  3444. Message: fmt.Sprintf("MockGlobalAddresses %v exists", key),
  3445. }
  3446. klog.V(5).Infof("MockGlobalAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  3447. return err
  3448. }
  3449. obj.Name = key.Name
  3450. projectID := m.ProjectRouter.ProjectID(ctx, "ga", "addresses")
  3451. obj.SelfLink = SelfLink(meta.VersionGA, projectID, "addresses", key)
  3452. m.Objects[*key] = &MockGlobalAddressesObj{obj}
  3453. klog.V(5).Infof("MockGlobalAddresses.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  3454. return nil
  3455. }
  3456. // Delete is a mock for deleting the object.
  3457. func (m *MockGlobalAddresses) Delete(ctx context.Context, key *meta.Key) error {
  3458. if m.DeleteHook != nil {
  3459. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  3460. klog.V(5).Infof("MockGlobalAddresses.Delete(%v, %v) = %v", ctx, key, err)
  3461. return err
  3462. }
  3463. }
  3464. if !key.Valid() {
  3465. return fmt.Errorf("invalid GCE key (%+v)", key)
  3466. }
  3467. m.Lock.Lock()
  3468. defer m.Lock.Unlock()
  3469. if err, ok := m.DeleteError[*key]; ok {
  3470. klog.V(5).Infof("MockGlobalAddresses.Delete(%v, %v) = %v", ctx, key, err)
  3471. return err
  3472. }
  3473. if _, ok := m.Objects[*key]; !ok {
  3474. err := &googleapi.Error{
  3475. Code: http.StatusNotFound,
  3476. Message: fmt.Sprintf("MockGlobalAddresses %v not found", key),
  3477. }
  3478. klog.V(5).Infof("MockGlobalAddresses.Delete(%v, %v) = %v", ctx, key, err)
  3479. return err
  3480. }
  3481. delete(m.Objects, *key)
  3482. klog.V(5).Infof("MockGlobalAddresses.Delete(%v, %v) = nil", ctx, key)
  3483. return nil
  3484. }
  3485. // Obj wraps the object for use in the mock.
  3486. func (m *MockGlobalAddresses) Obj(o *ga.Address) *MockGlobalAddressesObj {
  3487. return &MockGlobalAddressesObj{o}
  3488. }
  3489. // GCEGlobalAddresses is a simplifying adapter for the GCE GlobalAddresses.
  3490. type GCEGlobalAddresses struct {
  3491. s *Service
  3492. }
  3493. // Get the Address named by key.
  3494. func (g *GCEGlobalAddresses) Get(ctx context.Context, key *meta.Key) (*ga.Address, error) {
  3495. klog.V(5).Infof("GCEGlobalAddresses.Get(%v, %v): called", ctx, key)
  3496. if !key.Valid() {
  3497. klog.V(2).Infof("GCEGlobalAddresses.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  3498. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  3499. }
  3500. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "GlobalAddresses")
  3501. rk := &RateLimitKey{
  3502. ProjectID: projectID,
  3503. Operation: "Get",
  3504. Version: meta.Version("ga"),
  3505. Service: "GlobalAddresses",
  3506. }
  3507. klog.V(5).Infof("GCEGlobalAddresses.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  3508. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  3509. klog.V(4).Infof("GCEGlobalAddresses.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  3510. return nil, err
  3511. }
  3512. call := g.s.GA.GlobalAddresses.Get(projectID, key.Name)
  3513. call.Context(ctx)
  3514. v, err := call.Do()
  3515. klog.V(4).Infof("GCEGlobalAddresses.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  3516. return v, err
  3517. }
  3518. // List all Address objects.
  3519. func (g *GCEGlobalAddresses) List(ctx context.Context, fl *filter.F) ([]*ga.Address, error) {
  3520. klog.V(5).Infof("GCEGlobalAddresses.List(%v, %v) called", ctx, fl)
  3521. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "GlobalAddresses")
  3522. rk := &RateLimitKey{
  3523. ProjectID: projectID,
  3524. Operation: "List",
  3525. Version: meta.Version("ga"),
  3526. Service: "GlobalAddresses",
  3527. }
  3528. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  3529. return nil, err
  3530. }
  3531. klog.V(5).Infof("GCEGlobalAddresses.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  3532. call := g.s.GA.GlobalAddresses.List(projectID)
  3533. if fl != filter.None {
  3534. call.Filter(fl.String())
  3535. }
  3536. var all []*ga.Address
  3537. f := func(l *ga.AddressList) error {
  3538. klog.V(5).Infof("GCEGlobalAddresses.List(%v, ..., %v): page %+v", ctx, fl, l)
  3539. all = append(all, l.Items...)
  3540. return nil
  3541. }
  3542. if err := call.Pages(ctx, f); err != nil {
  3543. klog.V(4).Infof("GCEGlobalAddresses.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  3544. return nil, err
  3545. }
  3546. if klog.V(4) {
  3547. klog.V(4).Infof("GCEGlobalAddresses.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  3548. } else if klog.V(5) {
  3549. var asStr []string
  3550. for _, o := range all {
  3551. asStr = append(asStr, fmt.Sprintf("%+v", o))
  3552. }
  3553. klog.V(5).Infof("GCEGlobalAddresses.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  3554. }
  3555. return all, nil
  3556. }
  3557. // Insert Address with key of value obj.
  3558. func (g *GCEGlobalAddresses) Insert(ctx context.Context, key *meta.Key, obj *ga.Address) error {
  3559. klog.V(5).Infof("GCEGlobalAddresses.Insert(%v, %v, %+v): called", ctx, key, obj)
  3560. if !key.Valid() {
  3561. klog.V(2).Infof("GCEGlobalAddresses.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  3562. return fmt.Errorf("invalid GCE key (%+v)", key)
  3563. }
  3564. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "GlobalAddresses")
  3565. rk := &RateLimitKey{
  3566. ProjectID: projectID,
  3567. Operation: "Insert",
  3568. Version: meta.Version("ga"),
  3569. Service: "GlobalAddresses",
  3570. }
  3571. klog.V(5).Infof("GCEGlobalAddresses.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  3572. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  3573. klog.V(4).Infof("GCEGlobalAddresses.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  3574. return err
  3575. }
  3576. obj.Name = key.Name
  3577. call := g.s.GA.GlobalAddresses.Insert(projectID, obj)
  3578. call.Context(ctx)
  3579. op, err := call.Do()
  3580. if err != nil {
  3581. klog.V(4).Infof("GCEGlobalAddresses.Insert(%v, %v, ...) = %+v", ctx, key, err)
  3582. return err
  3583. }
  3584. err = g.s.WaitForCompletion(ctx, op)
  3585. klog.V(4).Infof("GCEGlobalAddresses.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  3586. return err
  3587. }
  3588. // Delete the Address referenced by key.
  3589. func (g *GCEGlobalAddresses) Delete(ctx context.Context, key *meta.Key) error {
  3590. klog.V(5).Infof("GCEGlobalAddresses.Delete(%v, %v): called", ctx, key)
  3591. if !key.Valid() {
  3592. klog.V(2).Infof("GCEGlobalAddresses.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  3593. return fmt.Errorf("invalid GCE key (%+v)", key)
  3594. }
  3595. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "GlobalAddresses")
  3596. rk := &RateLimitKey{
  3597. ProjectID: projectID,
  3598. Operation: "Delete",
  3599. Version: meta.Version("ga"),
  3600. Service: "GlobalAddresses",
  3601. }
  3602. klog.V(5).Infof("GCEGlobalAddresses.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  3603. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  3604. klog.V(4).Infof("GCEGlobalAddresses.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  3605. return err
  3606. }
  3607. call := g.s.GA.GlobalAddresses.Delete(projectID, key.Name)
  3608. call.Context(ctx)
  3609. op, err := call.Do()
  3610. if err != nil {
  3611. klog.V(4).Infof("GCEGlobalAddresses.Delete(%v, %v) = %v", ctx, key, err)
  3612. return err
  3613. }
  3614. err = g.s.WaitForCompletion(ctx, op)
  3615. klog.V(4).Infof("GCEGlobalAddresses.Delete(%v, %v) = %v", ctx, key, err)
  3616. return err
  3617. }
  3618. // BackendServices is an interface that allows for mocking of BackendServices.
  3619. type BackendServices interface {
  3620. Get(ctx context.Context, key *meta.Key) (*ga.BackendService, error)
  3621. List(ctx context.Context, fl *filter.F) ([]*ga.BackendService, error)
  3622. Insert(ctx context.Context, key *meta.Key, obj *ga.BackendService) error
  3623. Delete(ctx context.Context, key *meta.Key) error
  3624. GetHealth(context.Context, *meta.Key, *ga.ResourceGroupReference) (*ga.BackendServiceGroupHealth, error)
  3625. Patch(context.Context, *meta.Key, *ga.BackendService) error
  3626. Update(context.Context, *meta.Key, *ga.BackendService) error
  3627. }
  3628. // NewMockBackendServices returns a new mock for BackendServices.
  3629. func NewMockBackendServices(pr ProjectRouter, objs map[meta.Key]*MockBackendServicesObj) *MockBackendServices {
  3630. mock := &MockBackendServices{
  3631. ProjectRouter: pr,
  3632. Objects: objs,
  3633. GetError: map[meta.Key]error{},
  3634. InsertError: map[meta.Key]error{},
  3635. DeleteError: map[meta.Key]error{},
  3636. }
  3637. return mock
  3638. }
  3639. // MockBackendServices is the mock for BackendServices.
  3640. type MockBackendServices struct {
  3641. Lock sync.Mutex
  3642. ProjectRouter ProjectRouter
  3643. // Objects maintained by the mock.
  3644. Objects map[meta.Key]*MockBackendServicesObj
  3645. // If an entry exists for the given key and operation, then the error
  3646. // will be returned instead of the operation.
  3647. GetError map[meta.Key]error
  3648. ListError *error
  3649. InsertError map[meta.Key]error
  3650. DeleteError map[meta.Key]error
  3651. // xxxHook allow you to intercept the standard processing of the mock in
  3652. // order to add your own logic. Return (true, _, _) to prevent the normal
  3653. // execution flow of the mock. Return (false, nil, nil) to continue with
  3654. // normal mock behavior/ after the hook function executes.
  3655. GetHook func(ctx context.Context, key *meta.Key, m *MockBackendServices) (bool, *ga.BackendService, error)
  3656. ListHook func(ctx context.Context, fl *filter.F, m *MockBackendServices) (bool, []*ga.BackendService, error)
  3657. InsertHook func(ctx context.Context, key *meta.Key, obj *ga.BackendService, m *MockBackendServices) (bool, error)
  3658. DeleteHook func(ctx context.Context, key *meta.Key, m *MockBackendServices) (bool, error)
  3659. GetHealthHook func(context.Context, *meta.Key, *ga.ResourceGroupReference, *MockBackendServices) (*ga.BackendServiceGroupHealth, error)
  3660. PatchHook func(context.Context, *meta.Key, *ga.BackendService, *MockBackendServices) error
  3661. UpdateHook func(context.Context, *meta.Key, *ga.BackendService, *MockBackendServices) error
  3662. // X is extra state that can be used as part of the mock. Generated code
  3663. // will not use this field.
  3664. X interface{}
  3665. }
  3666. // Get returns the object from the mock.
  3667. func (m *MockBackendServices) Get(ctx context.Context, key *meta.Key) (*ga.BackendService, error) {
  3668. if m.GetHook != nil {
  3669. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  3670. klog.V(5).Infof("MockBackendServices.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  3671. return obj, err
  3672. }
  3673. }
  3674. if !key.Valid() {
  3675. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  3676. }
  3677. m.Lock.Lock()
  3678. defer m.Lock.Unlock()
  3679. if err, ok := m.GetError[*key]; ok {
  3680. klog.V(5).Infof("MockBackendServices.Get(%v, %s) = nil, %v", ctx, key, err)
  3681. return nil, err
  3682. }
  3683. if obj, ok := m.Objects[*key]; ok {
  3684. typedObj := obj.ToGA()
  3685. klog.V(5).Infof("MockBackendServices.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  3686. return typedObj, nil
  3687. }
  3688. err := &googleapi.Error{
  3689. Code: http.StatusNotFound,
  3690. Message: fmt.Sprintf("MockBackendServices %v not found", key),
  3691. }
  3692. klog.V(5).Infof("MockBackendServices.Get(%v, %s) = nil, %v", ctx, key, err)
  3693. return nil, err
  3694. }
  3695. // List all of the objects in the mock.
  3696. func (m *MockBackendServices) List(ctx context.Context, fl *filter.F) ([]*ga.BackendService, error) {
  3697. if m.ListHook != nil {
  3698. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  3699. klog.V(5).Infof("MockBackendServices.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  3700. return objs, err
  3701. }
  3702. }
  3703. m.Lock.Lock()
  3704. defer m.Lock.Unlock()
  3705. if m.ListError != nil {
  3706. err := *m.ListError
  3707. klog.V(5).Infof("MockBackendServices.List(%v, %v) = nil, %v", ctx, fl, err)
  3708. return nil, *m.ListError
  3709. }
  3710. var objs []*ga.BackendService
  3711. for _, obj := range m.Objects {
  3712. if !fl.Match(obj.ToGA()) {
  3713. continue
  3714. }
  3715. objs = append(objs, obj.ToGA())
  3716. }
  3717. klog.V(5).Infof("MockBackendServices.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  3718. return objs, nil
  3719. }
  3720. // Insert is a mock for inserting/creating a new object.
  3721. func (m *MockBackendServices) Insert(ctx context.Context, key *meta.Key, obj *ga.BackendService) error {
  3722. if m.InsertHook != nil {
  3723. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  3724. klog.V(5).Infof("MockBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  3725. return err
  3726. }
  3727. }
  3728. if !key.Valid() {
  3729. return fmt.Errorf("invalid GCE key (%+v)", key)
  3730. }
  3731. m.Lock.Lock()
  3732. defer m.Lock.Unlock()
  3733. if err, ok := m.InsertError[*key]; ok {
  3734. klog.V(5).Infof("MockBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  3735. return err
  3736. }
  3737. if _, ok := m.Objects[*key]; ok {
  3738. err := &googleapi.Error{
  3739. Code: http.StatusConflict,
  3740. Message: fmt.Sprintf("MockBackendServices %v exists", key),
  3741. }
  3742. klog.V(5).Infof("MockBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  3743. return err
  3744. }
  3745. obj.Name = key.Name
  3746. projectID := m.ProjectRouter.ProjectID(ctx, "ga", "backendServices")
  3747. obj.SelfLink = SelfLink(meta.VersionGA, projectID, "backendServices", key)
  3748. m.Objects[*key] = &MockBackendServicesObj{obj}
  3749. klog.V(5).Infof("MockBackendServices.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  3750. return nil
  3751. }
  3752. // Delete is a mock for deleting the object.
  3753. func (m *MockBackendServices) Delete(ctx context.Context, key *meta.Key) error {
  3754. if m.DeleteHook != nil {
  3755. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  3756. klog.V(5).Infof("MockBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  3757. return err
  3758. }
  3759. }
  3760. if !key.Valid() {
  3761. return fmt.Errorf("invalid GCE key (%+v)", key)
  3762. }
  3763. m.Lock.Lock()
  3764. defer m.Lock.Unlock()
  3765. if err, ok := m.DeleteError[*key]; ok {
  3766. klog.V(5).Infof("MockBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  3767. return err
  3768. }
  3769. if _, ok := m.Objects[*key]; !ok {
  3770. err := &googleapi.Error{
  3771. Code: http.StatusNotFound,
  3772. Message: fmt.Sprintf("MockBackendServices %v not found", key),
  3773. }
  3774. klog.V(5).Infof("MockBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  3775. return err
  3776. }
  3777. delete(m.Objects, *key)
  3778. klog.V(5).Infof("MockBackendServices.Delete(%v, %v) = nil", ctx, key)
  3779. return nil
  3780. }
  3781. // Obj wraps the object for use in the mock.
  3782. func (m *MockBackendServices) Obj(o *ga.BackendService) *MockBackendServicesObj {
  3783. return &MockBackendServicesObj{o}
  3784. }
  3785. // GetHealth is a mock for the corresponding method.
  3786. func (m *MockBackendServices) GetHealth(ctx context.Context, key *meta.Key, arg0 *ga.ResourceGroupReference) (*ga.BackendServiceGroupHealth, error) {
  3787. if m.GetHealthHook != nil {
  3788. return m.GetHealthHook(ctx, key, arg0, m)
  3789. }
  3790. return nil, fmt.Errorf("GetHealthHook must be set")
  3791. }
  3792. // Patch is a mock for the corresponding method.
  3793. func (m *MockBackendServices) Patch(ctx context.Context, key *meta.Key, arg0 *ga.BackendService) error {
  3794. if m.PatchHook != nil {
  3795. return m.PatchHook(ctx, key, arg0, m)
  3796. }
  3797. return nil
  3798. }
  3799. // Update is a mock for the corresponding method.
  3800. func (m *MockBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *ga.BackendService) error {
  3801. if m.UpdateHook != nil {
  3802. return m.UpdateHook(ctx, key, arg0, m)
  3803. }
  3804. return nil
  3805. }
  3806. // GCEBackendServices is a simplifying adapter for the GCE BackendServices.
  3807. type GCEBackendServices struct {
  3808. s *Service
  3809. }
  3810. // Get the BackendService named by key.
  3811. func (g *GCEBackendServices) Get(ctx context.Context, key *meta.Key) (*ga.BackendService, error) {
  3812. klog.V(5).Infof("GCEBackendServices.Get(%v, %v): called", ctx, key)
  3813. if !key.Valid() {
  3814. klog.V(2).Infof("GCEBackendServices.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  3815. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  3816. }
  3817. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "BackendServices")
  3818. rk := &RateLimitKey{
  3819. ProjectID: projectID,
  3820. Operation: "Get",
  3821. Version: meta.Version("ga"),
  3822. Service: "BackendServices",
  3823. }
  3824. klog.V(5).Infof("GCEBackendServices.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  3825. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  3826. klog.V(4).Infof("GCEBackendServices.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  3827. return nil, err
  3828. }
  3829. call := g.s.GA.BackendServices.Get(projectID, key.Name)
  3830. call.Context(ctx)
  3831. v, err := call.Do()
  3832. klog.V(4).Infof("GCEBackendServices.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  3833. return v, err
  3834. }
  3835. // List all BackendService objects.
  3836. func (g *GCEBackendServices) List(ctx context.Context, fl *filter.F) ([]*ga.BackendService, error) {
  3837. klog.V(5).Infof("GCEBackendServices.List(%v, %v) called", ctx, fl)
  3838. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "BackendServices")
  3839. rk := &RateLimitKey{
  3840. ProjectID: projectID,
  3841. Operation: "List",
  3842. Version: meta.Version("ga"),
  3843. Service: "BackendServices",
  3844. }
  3845. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  3846. return nil, err
  3847. }
  3848. klog.V(5).Infof("GCEBackendServices.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  3849. call := g.s.GA.BackendServices.List(projectID)
  3850. if fl != filter.None {
  3851. call.Filter(fl.String())
  3852. }
  3853. var all []*ga.BackendService
  3854. f := func(l *ga.BackendServiceList) error {
  3855. klog.V(5).Infof("GCEBackendServices.List(%v, ..., %v): page %+v", ctx, fl, l)
  3856. all = append(all, l.Items...)
  3857. return nil
  3858. }
  3859. if err := call.Pages(ctx, f); err != nil {
  3860. klog.V(4).Infof("GCEBackendServices.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  3861. return nil, err
  3862. }
  3863. if klog.V(4) {
  3864. klog.V(4).Infof("GCEBackendServices.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  3865. } else if klog.V(5) {
  3866. var asStr []string
  3867. for _, o := range all {
  3868. asStr = append(asStr, fmt.Sprintf("%+v", o))
  3869. }
  3870. klog.V(5).Infof("GCEBackendServices.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  3871. }
  3872. return all, nil
  3873. }
  3874. // Insert BackendService with key of value obj.
  3875. func (g *GCEBackendServices) Insert(ctx context.Context, key *meta.Key, obj *ga.BackendService) error {
  3876. klog.V(5).Infof("GCEBackendServices.Insert(%v, %v, %+v): called", ctx, key, obj)
  3877. if !key.Valid() {
  3878. klog.V(2).Infof("GCEBackendServices.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  3879. return fmt.Errorf("invalid GCE key (%+v)", key)
  3880. }
  3881. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "BackendServices")
  3882. rk := &RateLimitKey{
  3883. ProjectID: projectID,
  3884. Operation: "Insert",
  3885. Version: meta.Version("ga"),
  3886. Service: "BackendServices",
  3887. }
  3888. klog.V(5).Infof("GCEBackendServices.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  3889. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  3890. klog.V(4).Infof("GCEBackendServices.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  3891. return err
  3892. }
  3893. obj.Name = key.Name
  3894. call := g.s.GA.BackendServices.Insert(projectID, obj)
  3895. call.Context(ctx)
  3896. op, err := call.Do()
  3897. if err != nil {
  3898. klog.V(4).Infof("GCEBackendServices.Insert(%v, %v, ...) = %+v", ctx, key, err)
  3899. return err
  3900. }
  3901. err = g.s.WaitForCompletion(ctx, op)
  3902. klog.V(4).Infof("GCEBackendServices.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  3903. return err
  3904. }
  3905. // Delete the BackendService referenced by key.
  3906. func (g *GCEBackendServices) Delete(ctx context.Context, key *meta.Key) error {
  3907. klog.V(5).Infof("GCEBackendServices.Delete(%v, %v): called", ctx, key)
  3908. if !key.Valid() {
  3909. klog.V(2).Infof("GCEBackendServices.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  3910. return fmt.Errorf("invalid GCE key (%+v)", key)
  3911. }
  3912. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "BackendServices")
  3913. rk := &RateLimitKey{
  3914. ProjectID: projectID,
  3915. Operation: "Delete",
  3916. Version: meta.Version("ga"),
  3917. Service: "BackendServices",
  3918. }
  3919. klog.V(5).Infof("GCEBackendServices.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  3920. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  3921. klog.V(4).Infof("GCEBackendServices.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  3922. return err
  3923. }
  3924. call := g.s.GA.BackendServices.Delete(projectID, key.Name)
  3925. call.Context(ctx)
  3926. op, err := call.Do()
  3927. if err != nil {
  3928. klog.V(4).Infof("GCEBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  3929. return err
  3930. }
  3931. err = g.s.WaitForCompletion(ctx, op)
  3932. klog.V(4).Infof("GCEBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  3933. return err
  3934. }
  3935. // GetHealth is a method on GCEBackendServices.
  3936. func (g *GCEBackendServices) GetHealth(ctx context.Context, key *meta.Key, arg0 *ga.ResourceGroupReference) (*ga.BackendServiceGroupHealth, error) {
  3937. klog.V(5).Infof("GCEBackendServices.GetHealth(%v, %v, ...): called", ctx, key)
  3938. if !key.Valid() {
  3939. klog.V(2).Infof("GCEBackendServices.GetHealth(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  3940. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  3941. }
  3942. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "BackendServices")
  3943. rk := &RateLimitKey{
  3944. ProjectID: projectID,
  3945. Operation: "GetHealth",
  3946. Version: meta.Version("ga"),
  3947. Service: "BackendServices",
  3948. }
  3949. klog.V(5).Infof("GCEBackendServices.GetHealth(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  3950. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  3951. klog.V(4).Infof("GCEBackendServices.GetHealth(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  3952. return nil, err
  3953. }
  3954. call := g.s.GA.BackendServices.GetHealth(projectID, key.Name, arg0)
  3955. call.Context(ctx)
  3956. v, err := call.Do()
  3957. klog.V(4).Infof("GCEBackendServices.GetHealth(%v, %v, ...) = %+v, %v", ctx, key, v, err)
  3958. return v, err
  3959. }
  3960. // Patch is a method on GCEBackendServices.
  3961. func (g *GCEBackendServices) Patch(ctx context.Context, key *meta.Key, arg0 *ga.BackendService) error {
  3962. klog.V(5).Infof("GCEBackendServices.Patch(%v, %v, ...): called", ctx, key)
  3963. if !key.Valid() {
  3964. klog.V(2).Infof("GCEBackendServices.Patch(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  3965. return fmt.Errorf("invalid GCE key (%+v)", key)
  3966. }
  3967. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "BackendServices")
  3968. rk := &RateLimitKey{
  3969. ProjectID: projectID,
  3970. Operation: "Patch",
  3971. Version: meta.Version("ga"),
  3972. Service: "BackendServices",
  3973. }
  3974. klog.V(5).Infof("GCEBackendServices.Patch(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  3975. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  3976. klog.V(4).Infof("GCEBackendServices.Patch(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  3977. return err
  3978. }
  3979. call := g.s.GA.BackendServices.Patch(projectID, key.Name, arg0)
  3980. call.Context(ctx)
  3981. op, err := call.Do()
  3982. if err != nil {
  3983. klog.V(4).Infof("GCEBackendServices.Patch(%v, %v, ...) = %+v", ctx, key, err)
  3984. return err
  3985. }
  3986. err = g.s.WaitForCompletion(ctx, op)
  3987. klog.V(4).Infof("GCEBackendServices.Patch(%v, %v, ...) = %+v", ctx, key, err)
  3988. return err
  3989. }
  3990. // Update is a method on GCEBackendServices.
  3991. func (g *GCEBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *ga.BackendService) error {
  3992. klog.V(5).Infof("GCEBackendServices.Update(%v, %v, ...): called", ctx, key)
  3993. if !key.Valid() {
  3994. klog.V(2).Infof("GCEBackendServices.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  3995. return fmt.Errorf("invalid GCE key (%+v)", key)
  3996. }
  3997. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "BackendServices")
  3998. rk := &RateLimitKey{
  3999. ProjectID: projectID,
  4000. Operation: "Update",
  4001. Version: meta.Version("ga"),
  4002. Service: "BackendServices",
  4003. }
  4004. klog.V(5).Infof("GCEBackendServices.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  4005. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  4006. klog.V(4).Infof("GCEBackendServices.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  4007. return err
  4008. }
  4009. call := g.s.GA.BackendServices.Update(projectID, key.Name, arg0)
  4010. call.Context(ctx)
  4011. op, err := call.Do()
  4012. if err != nil {
  4013. klog.V(4).Infof("GCEBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err)
  4014. return err
  4015. }
  4016. err = g.s.WaitForCompletion(ctx, op)
  4017. klog.V(4).Infof("GCEBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err)
  4018. return err
  4019. }
  4020. // BetaBackendServices is an interface that allows for mocking of BackendServices.
  4021. type BetaBackendServices interface {
  4022. Get(ctx context.Context, key *meta.Key) (*beta.BackendService, error)
  4023. List(ctx context.Context, fl *filter.F) ([]*beta.BackendService, error)
  4024. Insert(ctx context.Context, key *meta.Key, obj *beta.BackendService) error
  4025. Delete(ctx context.Context, key *meta.Key) error
  4026. SetSecurityPolicy(context.Context, *meta.Key, *beta.SecurityPolicyReference) error
  4027. Update(context.Context, *meta.Key, *beta.BackendService) error
  4028. }
  4029. // NewMockBetaBackendServices returns a new mock for BackendServices.
  4030. func NewMockBetaBackendServices(pr ProjectRouter, objs map[meta.Key]*MockBackendServicesObj) *MockBetaBackendServices {
  4031. mock := &MockBetaBackendServices{
  4032. ProjectRouter: pr,
  4033. Objects: objs,
  4034. GetError: map[meta.Key]error{},
  4035. InsertError: map[meta.Key]error{},
  4036. DeleteError: map[meta.Key]error{},
  4037. }
  4038. return mock
  4039. }
  4040. // MockBetaBackendServices is the mock for BackendServices.
  4041. type MockBetaBackendServices struct {
  4042. Lock sync.Mutex
  4043. ProjectRouter ProjectRouter
  4044. // Objects maintained by the mock.
  4045. Objects map[meta.Key]*MockBackendServicesObj
  4046. // If an entry exists for the given key and operation, then the error
  4047. // will be returned instead of the operation.
  4048. GetError map[meta.Key]error
  4049. ListError *error
  4050. InsertError map[meta.Key]error
  4051. DeleteError map[meta.Key]error
  4052. // xxxHook allow you to intercept the standard processing of the mock in
  4053. // order to add your own logic. Return (true, _, _) to prevent the normal
  4054. // execution flow of the mock. Return (false, nil, nil) to continue with
  4055. // normal mock behavior/ after the hook function executes.
  4056. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaBackendServices) (bool, *beta.BackendService, error)
  4057. ListHook func(ctx context.Context, fl *filter.F, m *MockBetaBackendServices) (bool, []*beta.BackendService, error)
  4058. InsertHook func(ctx context.Context, key *meta.Key, obj *beta.BackendService, m *MockBetaBackendServices) (bool, error)
  4059. DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaBackendServices) (bool, error)
  4060. SetSecurityPolicyHook func(context.Context, *meta.Key, *beta.SecurityPolicyReference, *MockBetaBackendServices) error
  4061. UpdateHook func(context.Context, *meta.Key, *beta.BackendService, *MockBetaBackendServices) error
  4062. // X is extra state that can be used as part of the mock. Generated code
  4063. // will not use this field.
  4064. X interface{}
  4065. }
  4066. // Get returns the object from the mock.
  4067. func (m *MockBetaBackendServices) Get(ctx context.Context, key *meta.Key) (*beta.BackendService, error) {
  4068. if m.GetHook != nil {
  4069. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  4070. klog.V(5).Infof("MockBetaBackendServices.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  4071. return obj, err
  4072. }
  4073. }
  4074. if !key.Valid() {
  4075. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  4076. }
  4077. m.Lock.Lock()
  4078. defer m.Lock.Unlock()
  4079. if err, ok := m.GetError[*key]; ok {
  4080. klog.V(5).Infof("MockBetaBackendServices.Get(%v, %s) = nil, %v", ctx, key, err)
  4081. return nil, err
  4082. }
  4083. if obj, ok := m.Objects[*key]; ok {
  4084. typedObj := obj.ToBeta()
  4085. klog.V(5).Infof("MockBetaBackendServices.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  4086. return typedObj, nil
  4087. }
  4088. err := &googleapi.Error{
  4089. Code: http.StatusNotFound,
  4090. Message: fmt.Sprintf("MockBetaBackendServices %v not found", key),
  4091. }
  4092. klog.V(5).Infof("MockBetaBackendServices.Get(%v, %s) = nil, %v", ctx, key, err)
  4093. return nil, err
  4094. }
  4095. // List all of the objects in the mock.
  4096. func (m *MockBetaBackendServices) List(ctx context.Context, fl *filter.F) ([]*beta.BackendService, error) {
  4097. if m.ListHook != nil {
  4098. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  4099. klog.V(5).Infof("MockBetaBackendServices.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  4100. return objs, err
  4101. }
  4102. }
  4103. m.Lock.Lock()
  4104. defer m.Lock.Unlock()
  4105. if m.ListError != nil {
  4106. err := *m.ListError
  4107. klog.V(5).Infof("MockBetaBackendServices.List(%v, %v) = nil, %v", ctx, fl, err)
  4108. return nil, *m.ListError
  4109. }
  4110. var objs []*beta.BackendService
  4111. for _, obj := range m.Objects {
  4112. if !fl.Match(obj.ToBeta()) {
  4113. continue
  4114. }
  4115. objs = append(objs, obj.ToBeta())
  4116. }
  4117. klog.V(5).Infof("MockBetaBackendServices.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  4118. return objs, nil
  4119. }
  4120. // Insert is a mock for inserting/creating a new object.
  4121. func (m *MockBetaBackendServices) Insert(ctx context.Context, key *meta.Key, obj *beta.BackendService) error {
  4122. if m.InsertHook != nil {
  4123. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  4124. klog.V(5).Infof("MockBetaBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  4125. return err
  4126. }
  4127. }
  4128. if !key.Valid() {
  4129. return fmt.Errorf("invalid GCE key (%+v)", key)
  4130. }
  4131. m.Lock.Lock()
  4132. defer m.Lock.Unlock()
  4133. if err, ok := m.InsertError[*key]; ok {
  4134. klog.V(5).Infof("MockBetaBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  4135. return err
  4136. }
  4137. if _, ok := m.Objects[*key]; ok {
  4138. err := &googleapi.Error{
  4139. Code: http.StatusConflict,
  4140. Message: fmt.Sprintf("MockBetaBackendServices %v exists", key),
  4141. }
  4142. klog.V(5).Infof("MockBetaBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  4143. return err
  4144. }
  4145. obj.Name = key.Name
  4146. projectID := m.ProjectRouter.ProjectID(ctx, "beta", "backendServices")
  4147. obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "backendServices", key)
  4148. m.Objects[*key] = &MockBackendServicesObj{obj}
  4149. klog.V(5).Infof("MockBetaBackendServices.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  4150. return nil
  4151. }
  4152. // Delete is a mock for deleting the object.
  4153. func (m *MockBetaBackendServices) Delete(ctx context.Context, key *meta.Key) error {
  4154. if m.DeleteHook != nil {
  4155. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  4156. klog.V(5).Infof("MockBetaBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  4157. return err
  4158. }
  4159. }
  4160. if !key.Valid() {
  4161. return fmt.Errorf("invalid GCE key (%+v)", key)
  4162. }
  4163. m.Lock.Lock()
  4164. defer m.Lock.Unlock()
  4165. if err, ok := m.DeleteError[*key]; ok {
  4166. klog.V(5).Infof("MockBetaBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  4167. return err
  4168. }
  4169. if _, ok := m.Objects[*key]; !ok {
  4170. err := &googleapi.Error{
  4171. Code: http.StatusNotFound,
  4172. Message: fmt.Sprintf("MockBetaBackendServices %v not found", key),
  4173. }
  4174. klog.V(5).Infof("MockBetaBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  4175. return err
  4176. }
  4177. delete(m.Objects, *key)
  4178. klog.V(5).Infof("MockBetaBackendServices.Delete(%v, %v) = nil", ctx, key)
  4179. return nil
  4180. }
  4181. // Obj wraps the object for use in the mock.
  4182. func (m *MockBetaBackendServices) Obj(o *beta.BackendService) *MockBackendServicesObj {
  4183. return &MockBackendServicesObj{o}
  4184. }
  4185. // SetSecurityPolicy is a mock for the corresponding method.
  4186. func (m *MockBetaBackendServices) SetSecurityPolicy(ctx context.Context, key *meta.Key, arg0 *beta.SecurityPolicyReference) error {
  4187. if m.SetSecurityPolicyHook != nil {
  4188. return m.SetSecurityPolicyHook(ctx, key, arg0, m)
  4189. }
  4190. return nil
  4191. }
  4192. // Update is a mock for the corresponding method.
  4193. func (m *MockBetaBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *beta.BackendService) error {
  4194. if m.UpdateHook != nil {
  4195. return m.UpdateHook(ctx, key, arg0, m)
  4196. }
  4197. return nil
  4198. }
  4199. // GCEBetaBackendServices is a simplifying adapter for the GCE BackendServices.
  4200. type GCEBetaBackendServices struct {
  4201. s *Service
  4202. }
  4203. // Get the BackendService named by key.
  4204. func (g *GCEBetaBackendServices) Get(ctx context.Context, key *meta.Key) (*beta.BackendService, error) {
  4205. klog.V(5).Infof("GCEBetaBackendServices.Get(%v, %v): called", ctx, key)
  4206. if !key.Valid() {
  4207. klog.V(2).Infof("GCEBetaBackendServices.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  4208. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  4209. }
  4210. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "BackendServices")
  4211. rk := &RateLimitKey{
  4212. ProjectID: projectID,
  4213. Operation: "Get",
  4214. Version: meta.Version("beta"),
  4215. Service: "BackendServices",
  4216. }
  4217. klog.V(5).Infof("GCEBetaBackendServices.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  4218. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  4219. klog.V(4).Infof("GCEBetaBackendServices.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  4220. return nil, err
  4221. }
  4222. call := g.s.Beta.BackendServices.Get(projectID, key.Name)
  4223. call.Context(ctx)
  4224. v, err := call.Do()
  4225. klog.V(4).Infof("GCEBetaBackendServices.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  4226. return v, err
  4227. }
  4228. // List all BackendService objects.
  4229. func (g *GCEBetaBackendServices) List(ctx context.Context, fl *filter.F) ([]*beta.BackendService, error) {
  4230. klog.V(5).Infof("GCEBetaBackendServices.List(%v, %v) called", ctx, fl)
  4231. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "BackendServices")
  4232. rk := &RateLimitKey{
  4233. ProjectID: projectID,
  4234. Operation: "List",
  4235. Version: meta.Version("beta"),
  4236. Service: "BackendServices",
  4237. }
  4238. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  4239. return nil, err
  4240. }
  4241. klog.V(5).Infof("GCEBetaBackendServices.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  4242. call := g.s.Beta.BackendServices.List(projectID)
  4243. if fl != filter.None {
  4244. call.Filter(fl.String())
  4245. }
  4246. var all []*beta.BackendService
  4247. f := func(l *beta.BackendServiceList) error {
  4248. klog.V(5).Infof("GCEBetaBackendServices.List(%v, ..., %v): page %+v", ctx, fl, l)
  4249. all = append(all, l.Items...)
  4250. return nil
  4251. }
  4252. if err := call.Pages(ctx, f); err != nil {
  4253. klog.V(4).Infof("GCEBetaBackendServices.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  4254. return nil, err
  4255. }
  4256. if klog.V(4) {
  4257. klog.V(4).Infof("GCEBetaBackendServices.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  4258. } else if klog.V(5) {
  4259. var asStr []string
  4260. for _, o := range all {
  4261. asStr = append(asStr, fmt.Sprintf("%+v", o))
  4262. }
  4263. klog.V(5).Infof("GCEBetaBackendServices.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  4264. }
  4265. return all, nil
  4266. }
  4267. // Insert BackendService with key of value obj.
  4268. func (g *GCEBetaBackendServices) Insert(ctx context.Context, key *meta.Key, obj *beta.BackendService) error {
  4269. klog.V(5).Infof("GCEBetaBackendServices.Insert(%v, %v, %+v): called", ctx, key, obj)
  4270. if !key.Valid() {
  4271. klog.V(2).Infof("GCEBetaBackendServices.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  4272. return fmt.Errorf("invalid GCE key (%+v)", key)
  4273. }
  4274. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "BackendServices")
  4275. rk := &RateLimitKey{
  4276. ProjectID: projectID,
  4277. Operation: "Insert",
  4278. Version: meta.Version("beta"),
  4279. Service: "BackendServices",
  4280. }
  4281. klog.V(5).Infof("GCEBetaBackendServices.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  4282. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  4283. klog.V(4).Infof("GCEBetaBackendServices.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  4284. return err
  4285. }
  4286. obj.Name = key.Name
  4287. call := g.s.Beta.BackendServices.Insert(projectID, obj)
  4288. call.Context(ctx)
  4289. op, err := call.Do()
  4290. if err != nil {
  4291. klog.V(4).Infof("GCEBetaBackendServices.Insert(%v, %v, ...) = %+v", ctx, key, err)
  4292. return err
  4293. }
  4294. err = g.s.WaitForCompletion(ctx, op)
  4295. klog.V(4).Infof("GCEBetaBackendServices.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  4296. return err
  4297. }
  4298. // Delete the BackendService referenced by key.
  4299. func (g *GCEBetaBackendServices) Delete(ctx context.Context, key *meta.Key) error {
  4300. klog.V(5).Infof("GCEBetaBackendServices.Delete(%v, %v): called", ctx, key)
  4301. if !key.Valid() {
  4302. klog.V(2).Infof("GCEBetaBackendServices.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  4303. return fmt.Errorf("invalid GCE key (%+v)", key)
  4304. }
  4305. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "BackendServices")
  4306. rk := &RateLimitKey{
  4307. ProjectID: projectID,
  4308. Operation: "Delete",
  4309. Version: meta.Version("beta"),
  4310. Service: "BackendServices",
  4311. }
  4312. klog.V(5).Infof("GCEBetaBackendServices.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  4313. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  4314. klog.V(4).Infof("GCEBetaBackendServices.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  4315. return err
  4316. }
  4317. call := g.s.Beta.BackendServices.Delete(projectID, key.Name)
  4318. call.Context(ctx)
  4319. op, err := call.Do()
  4320. if err != nil {
  4321. klog.V(4).Infof("GCEBetaBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  4322. return err
  4323. }
  4324. err = g.s.WaitForCompletion(ctx, op)
  4325. klog.V(4).Infof("GCEBetaBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  4326. return err
  4327. }
  4328. // SetSecurityPolicy is a method on GCEBetaBackendServices.
  4329. func (g *GCEBetaBackendServices) SetSecurityPolicy(ctx context.Context, key *meta.Key, arg0 *beta.SecurityPolicyReference) error {
  4330. klog.V(5).Infof("GCEBetaBackendServices.SetSecurityPolicy(%v, %v, ...): called", ctx, key)
  4331. if !key.Valid() {
  4332. klog.V(2).Infof("GCEBetaBackendServices.SetSecurityPolicy(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  4333. return fmt.Errorf("invalid GCE key (%+v)", key)
  4334. }
  4335. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "BackendServices")
  4336. rk := &RateLimitKey{
  4337. ProjectID: projectID,
  4338. Operation: "SetSecurityPolicy",
  4339. Version: meta.Version("beta"),
  4340. Service: "BackendServices",
  4341. }
  4342. klog.V(5).Infof("GCEBetaBackendServices.SetSecurityPolicy(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  4343. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  4344. klog.V(4).Infof("GCEBetaBackendServices.SetSecurityPolicy(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  4345. return err
  4346. }
  4347. call := g.s.Beta.BackendServices.SetSecurityPolicy(projectID, key.Name, arg0)
  4348. call.Context(ctx)
  4349. op, err := call.Do()
  4350. if err != nil {
  4351. klog.V(4).Infof("GCEBetaBackendServices.SetSecurityPolicy(%v, %v, ...) = %+v", ctx, key, err)
  4352. return err
  4353. }
  4354. err = g.s.WaitForCompletion(ctx, op)
  4355. klog.V(4).Infof("GCEBetaBackendServices.SetSecurityPolicy(%v, %v, ...) = %+v", ctx, key, err)
  4356. return err
  4357. }
  4358. // Update is a method on GCEBetaBackendServices.
  4359. func (g *GCEBetaBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *beta.BackendService) error {
  4360. klog.V(5).Infof("GCEBetaBackendServices.Update(%v, %v, ...): called", ctx, key)
  4361. if !key.Valid() {
  4362. klog.V(2).Infof("GCEBetaBackendServices.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  4363. return fmt.Errorf("invalid GCE key (%+v)", key)
  4364. }
  4365. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "BackendServices")
  4366. rk := &RateLimitKey{
  4367. ProjectID: projectID,
  4368. Operation: "Update",
  4369. Version: meta.Version("beta"),
  4370. Service: "BackendServices",
  4371. }
  4372. klog.V(5).Infof("GCEBetaBackendServices.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  4373. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  4374. klog.V(4).Infof("GCEBetaBackendServices.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  4375. return err
  4376. }
  4377. call := g.s.Beta.BackendServices.Update(projectID, key.Name, arg0)
  4378. call.Context(ctx)
  4379. op, err := call.Do()
  4380. if err != nil {
  4381. klog.V(4).Infof("GCEBetaBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err)
  4382. return err
  4383. }
  4384. err = g.s.WaitForCompletion(ctx, op)
  4385. klog.V(4).Infof("GCEBetaBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err)
  4386. return err
  4387. }
  4388. // AlphaBackendServices is an interface that allows for mocking of BackendServices.
  4389. type AlphaBackendServices interface {
  4390. Get(ctx context.Context, key *meta.Key) (*alpha.BackendService, error)
  4391. List(ctx context.Context, fl *filter.F) ([]*alpha.BackendService, error)
  4392. Insert(ctx context.Context, key *meta.Key, obj *alpha.BackendService) error
  4393. Delete(ctx context.Context, key *meta.Key) error
  4394. SetSecurityPolicy(context.Context, *meta.Key, *alpha.SecurityPolicyReference) error
  4395. Update(context.Context, *meta.Key, *alpha.BackendService) error
  4396. }
  4397. // NewMockAlphaBackendServices returns a new mock for BackendServices.
  4398. func NewMockAlphaBackendServices(pr ProjectRouter, objs map[meta.Key]*MockBackendServicesObj) *MockAlphaBackendServices {
  4399. mock := &MockAlphaBackendServices{
  4400. ProjectRouter: pr,
  4401. Objects: objs,
  4402. GetError: map[meta.Key]error{},
  4403. InsertError: map[meta.Key]error{},
  4404. DeleteError: map[meta.Key]error{},
  4405. }
  4406. return mock
  4407. }
  4408. // MockAlphaBackendServices is the mock for BackendServices.
  4409. type MockAlphaBackendServices struct {
  4410. Lock sync.Mutex
  4411. ProjectRouter ProjectRouter
  4412. // Objects maintained by the mock.
  4413. Objects map[meta.Key]*MockBackendServicesObj
  4414. // If an entry exists for the given key and operation, then the error
  4415. // will be returned instead of the operation.
  4416. GetError map[meta.Key]error
  4417. ListError *error
  4418. InsertError map[meta.Key]error
  4419. DeleteError map[meta.Key]error
  4420. // xxxHook allow you to intercept the standard processing of the mock in
  4421. // order to add your own logic. Return (true, _, _) to prevent the normal
  4422. // execution flow of the mock. Return (false, nil, nil) to continue with
  4423. // normal mock behavior/ after the hook function executes.
  4424. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaBackendServices) (bool, *alpha.BackendService, error)
  4425. ListHook func(ctx context.Context, fl *filter.F, m *MockAlphaBackendServices) (bool, []*alpha.BackendService, error)
  4426. InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.BackendService, m *MockAlphaBackendServices) (bool, error)
  4427. DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaBackendServices) (bool, error)
  4428. SetSecurityPolicyHook func(context.Context, *meta.Key, *alpha.SecurityPolicyReference, *MockAlphaBackendServices) error
  4429. UpdateHook func(context.Context, *meta.Key, *alpha.BackendService, *MockAlphaBackendServices) error
  4430. // X is extra state that can be used as part of the mock. Generated code
  4431. // will not use this field.
  4432. X interface{}
  4433. }
  4434. // Get returns the object from the mock.
  4435. func (m *MockAlphaBackendServices) Get(ctx context.Context, key *meta.Key) (*alpha.BackendService, error) {
  4436. if m.GetHook != nil {
  4437. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  4438. klog.V(5).Infof("MockAlphaBackendServices.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  4439. return obj, err
  4440. }
  4441. }
  4442. if !key.Valid() {
  4443. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  4444. }
  4445. m.Lock.Lock()
  4446. defer m.Lock.Unlock()
  4447. if err, ok := m.GetError[*key]; ok {
  4448. klog.V(5).Infof("MockAlphaBackendServices.Get(%v, %s) = nil, %v", ctx, key, err)
  4449. return nil, err
  4450. }
  4451. if obj, ok := m.Objects[*key]; ok {
  4452. typedObj := obj.ToAlpha()
  4453. klog.V(5).Infof("MockAlphaBackendServices.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  4454. return typedObj, nil
  4455. }
  4456. err := &googleapi.Error{
  4457. Code: http.StatusNotFound,
  4458. Message: fmt.Sprintf("MockAlphaBackendServices %v not found", key),
  4459. }
  4460. klog.V(5).Infof("MockAlphaBackendServices.Get(%v, %s) = nil, %v", ctx, key, err)
  4461. return nil, err
  4462. }
  4463. // List all of the objects in the mock.
  4464. func (m *MockAlphaBackendServices) List(ctx context.Context, fl *filter.F) ([]*alpha.BackendService, error) {
  4465. if m.ListHook != nil {
  4466. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  4467. klog.V(5).Infof("MockAlphaBackendServices.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  4468. return objs, err
  4469. }
  4470. }
  4471. m.Lock.Lock()
  4472. defer m.Lock.Unlock()
  4473. if m.ListError != nil {
  4474. err := *m.ListError
  4475. klog.V(5).Infof("MockAlphaBackendServices.List(%v, %v) = nil, %v", ctx, fl, err)
  4476. return nil, *m.ListError
  4477. }
  4478. var objs []*alpha.BackendService
  4479. for _, obj := range m.Objects {
  4480. if !fl.Match(obj.ToAlpha()) {
  4481. continue
  4482. }
  4483. objs = append(objs, obj.ToAlpha())
  4484. }
  4485. klog.V(5).Infof("MockAlphaBackendServices.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  4486. return objs, nil
  4487. }
  4488. // Insert is a mock for inserting/creating a new object.
  4489. func (m *MockAlphaBackendServices) Insert(ctx context.Context, key *meta.Key, obj *alpha.BackendService) error {
  4490. if m.InsertHook != nil {
  4491. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  4492. klog.V(5).Infof("MockAlphaBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  4493. return err
  4494. }
  4495. }
  4496. if !key.Valid() {
  4497. return fmt.Errorf("invalid GCE key (%+v)", key)
  4498. }
  4499. m.Lock.Lock()
  4500. defer m.Lock.Unlock()
  4501. if err, ok := m.InsertError[*key]; ok {
  4502. klog.V(5).Infof("MockAlphaBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  4503. return err
  4504. }
  4505. if _, ok := m.Objects[*key]; ok {
  4506. err := &googleapi.Error{
  4507. Code: http.StatusConflict,
  4508. Message: fmt.Sprintf("MockAlphaBackendServices %v exists", key),
  4509. }
  4510. klog.V(5).Infof("MockAlphaBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  4511. return err
  4512. }
  4513. obj.Name = key.Name
  4514. projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "backendServices")
  4515. obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "backendServices", key)
  4516. m.Objects[*key] = &MockBackendServicesObj{obj}
  4517. klog.V(5).Infof("MockAlphaBackendServices.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  4518. return nil
  4519. }
  4520. // Delete is a mock for deleting the object.
  4521. func (m *MockAlphaBackendServices) Delete(ctx context.Context, key *meta.Key) error {
  4522. if m.DeleteHook != nil {
  4523. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  4524. klog.V(5).Infof("MockAlphaBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  4525. return err
  4526. }
  4527. }
  4528. if !key.Valid() {
  4529. return fmt.Errorf("invalid GCE key (%+v)", key)
  4530. }
  4531. m.Lock.Lock()
  4532. defer m.Lock.Unlock()
  4533. if err, ok := m.DeleteError[*key]; ok {
  4534. klog.V(5).Infof("MockAlphaBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  4535. return err
  4536. }
  4537. if _, ok := m.Objects[*key]; !ok {
  4538. err := &googleapi.Error{
  4539. Code: http.StatusNotFound,
  4540. Message: fmt.Sprintf("MockAlphaBackendServices %v not found", key),
  4541. }
  4542. klog.V(5).Infof("MockAlphaBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  4543. return err
  4544. }
  4545. delete(m.Objects, *key)
  4546. klog.V(5).Infof("MockAlphaBackendServices.Delete(%v, %v) = nil", ctx, key)
  4547. return nil
  4548. }
  4549. // Obj wraps the object for use in the mock.
  4550. func (m *MockAlphaBackendServices) Obj(o *alpha.BackendService) *MockBackendServicesObj {
  4551. return &MockBackendServicesObj{o}
  4552. }
  4553. // SetSecurityPolicy is a mock for the corresponding method.
  4554. func (m *MockAlphaBackendServices) SetSecurityPolicy(ctx context.Context, key *meta.Key, arg0 *alpha.SecurityPolicyReference) error {
  4555. if m.SetSecurityPolicyHook != nil {
  4556. return m.SetSecurityPolicyHook(ctx, key, arg0, m)
  4557. }
  4558. return nil
  4559. }
  4560. // Update is a mock for the corresponding method.
  4561. func (m *MockAlphaBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *alpha.BackendService) error {
  4562. if m.UpdateHook != nil {
  4563. return m.UpdateHook(ctx, key, arg0, m)
  4564. }
  4565. return nil
  4566. }
  4567. // GCEAlphaBackendServices is a simplifying adapter for the GCE BackendServices.
  4568. type GCEAlphaBackendServices struct {
  4569. s *Service
  4570. }
  4571. // Get the BackendService named by key.
  4572. func (g *GCEAlphaBackendServices) Get(ctx context.Context, key *meta.Key) (*alpha.BackendService, error) {
  4573. klog.V(5).Infof("GCEAlphaBackendServices.Get(%v, %v): called", ctx, key)
  4574. if !key.Valid() {
  4575. klog.V(2).Infof("GCEAlphaBackendServices.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  4576. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  4577. }
  4578. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "BackendServices")
  4579. rk := &RateLimitKey{
  4580. ProjectID: projectID,
  4581. Operation: "Get",
  4582. Version: meta.Version("alpha"),
  4583. Service: "BackendServices",
  4584. }
  4585. klog.V(5).Infof("GCEAlphaBackendServices.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  4586. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  4587. klog.V(4).Infof("GCEAlphaBackendServices.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  4588. return nil, err
  4589. }
  4590. call := g.s.Alpha.BackendServices.Get(projectID, key.Name)
  4591. call.Context(ctx)
  4592. v, err := call.Do()
  4593. klog.V(4).Infof("GCEAlphaBackendServices.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  4594. return v, err
  4595. }
  4596. // List all BackendService objects.
  4597. func (g *GCEAlphaBackendServices) List(ctx context.Context, fl *filter.F) ([]*alpha.BackendService, error) {
  4598. klog.V(5).Infof("GCEAlphaBackendServices.List(%v, %v) called", ctx, fl)
  4599. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "BackendServices")
  4600. rk := &RateLimitKey{
  4601. ProjectID: projectID,
  4602. Operation: "List",
  4603. Version: meta.Version("alpha"),
  4604. Service: "BackendServices",
  4605. }
  4606. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  4607. return nil, err
  4608. }
  4609. klog.V(5).Infof("GCEAlphaBackendServices.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  4610. call := g.s.Alpha.BackendServices.List(projectID)
  4611. if fl != filter.None {
  4612. call.Filter(fl.String())
  4613. }
  4614. var all []*alpha.BackendService
  4615. f := func(l *alpha.BackendServiceList) error {
  4616. klog.V(5).Infof("GCEAlphaBackendServices.List(%v, ..., %v): page %+v", ctx, fl, l)
  4617. all = append(all, l.Items...)
  4618. return nil
  4619. }
  4620. if err := call.Pages(ctx, f); err != nil {
  4621. klog.V(4).Infof("GCEAlphaBackendServices.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  4622. return nil, err
  4623. }
  4624. if klog.V(4) {
  4625. klog.V(4).Infof("GCEAlphaBackendServices.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  4626. } else if klog.V(5) {
  4627. var asStr []string
  4628. for _, o := range all {
  4629. asStr = append(asStr, fmt.Sprintf("%+v", o))
  4630. }
  4631. klog.V(5).Infof("GCEAlphaBackendServices.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  4632. }
  4633. return all, nil
  4634. }
  4635. // Insert BackendService with key of value obj.
  4636. func (g *GCEAlphaBackendServices) Insert(ctx context.Context, key *meta.Key, obj *alpha.BackendService) error {
  4637. klog.V(5).Infof("GCEAlphaBackendServices.Insert(%v, %v, %+v): called", ctx, key, obj)
  4638. if !key.Valid() {
  4639. klog.V(2).Infof("GCEAlphaBackendServices.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  4640. return fmt.Errorf("invalid GCE key (%+v)", key)
  4641. }
  4642. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "BackendServices")
  4643. rk := &RateLimitKey{
  4644. ProjectID: projectID,
  4645. Operation: "Insert",
  4646. Version: meta.Version("alpha"),
  4647. Service: "BackendServices",
  4648. }
  4649. klog.V(5).Infof("GCEAlphaBackendServices.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  4650. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  4651. klog.V(4).Infof("GCEAlphaBackendServices.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  4652. return err
  4653. }
  4654. obj.Name = key.Name
  4655. call := g.s.Alpha.BackendServices.Insert(projectID, obj)
  4656. call.Context(ctx)
  4657. op, err := call.Do()
  4658. if err != nil {
  4659. klog.V(4).Infof("GCEAlphaBackendServices.Insert(%v, %v, ...) = %+v", ctx, key, err)
  4660. return err
  4661. }
  4662. err = g.s.WaitForCompletion(ctx, op)
  4663. klog.V(4).Infof("GCEAlphaBackendServices.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  4664. return err
  4665. }
  4666. // Delete the BackendService referenced by key.
  4667. func (g *GCEAlphaBackendServices) Delete(ctx context.Context, key *meta.Key) error {
  4668. klog.V(5).Infof("GCEAlphaBackendServices.Delete(%v, %v): called", ctx, key)
  4669. if !key.Valid() {
  4670. klog.V(2).Infof("GCEAlphaBackendServices.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  4671. return fmt.Errorf("invalid GCE key (%+v)", key)
  4672. }
  4673. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "BackendServices")
  4674. rk := &RateLimitKey{
  4675. ProjectID: projectID,
  4676. Operation: "Delete",
  4677. Version: meta.Version("alpha"),
  4678. Service: "BackendServices",
  4679. }
  4680. klog.V(5).Infof("GCEAlphaBackendServices.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  4681. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  4682. klog.V(4).Infof("GCEAlphaBackendServices.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  4683. return err
  4684. }
  4685. call := g.s.Alpha.BackendServices.Delete(projectID, key.Name)
  4686. call.Context(ctx)
  4687. op, err := call.Do()
  4688. if err != nil {
  4689. klog.V(4).Infof("GCEAlphaBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  4690. return err
  4691. }
  4692. err = g.s.WaitForCompletion(ctx, op)
  4693. klog.V(4).Infof("GCEAlphaBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  4694. return err
  4695. }
  4696. // SetSecurityPolicy is a method on GCEAlphaBackendServices.
  4697. func (g *GCEAlphaBackendServices) SetSecurityPolicy(ctx context.Context, key *meta.Key, arg0 *alpha.SecurityPolicyReference) error {
  4698. klog.V(5).Infof("GCEAlphaBackendServices.SetSecurityPolicy(%v, %v, ...): called", ctx, key)
  4699. if !key.Valid() {
  4700. klog.V(2).Infof("GCEAlphaBackendServices.SetSecurityPolicy(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  4701. return fmt.Errorf("invalid GCE key (%+v)", key)
  4702. }
  4703. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "BackendServices")
  4704. rk := &RateLimitKey{
  4705. ProjectID: projectID,
  4706. Operation: "SetSecurityPolicy",
  4707. Version: meta.Version("alpha"),
  4708. Service: "BackendServices",
  4709. }
  4710. klog.V(5).Infof("GCEAlphaBackendServices.SetSecurityPolicy(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  4711. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  4712. klog.V(4).Infof("GCEAlphaBackendServices.SetSecurityPolicy(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  4713. return err
  4714. }
  4715. call := g.s.Alpha.BackendServices.SetSecurityPolicy(projectID, key.Name, arg0)
  4716. call.Context(ctx)
  4717. op, err := call.Do()
  4718. if err != nil {
  4719. klog.V(4).Infof("GCEAlphaBackendServices.SetSecurityPolicy(%v, %v, ...) = %+v", ctx, key, err)
  4720. return err
  4721. }
  4722. err = g.s.WaitForCompletion(ctx, op)
  4723. klog.V(4).Infof("GCEAlphaBackendServices.SetSecurityPolicy(%v, %v, ...) = %+v", ctx, key, err)
  4724. return err
  4725. }
  4726. // Update is a method on GCEAlphaBackendServices.
  4727. func (g *GCEAlphaBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *alpha.BackendService) error {
  4728. klog.V(5).Infof("GCEAlphaBackendServices.Update(%v, %v, ...): called", ctx, key)
  4729. if !key.Valid() {
  4730. klog.V(2).Infof("GCEAlphaBackendServices.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  4731. return fmt.Errorf("invalid GCE key (%+v)", key)
  4732. }
  4733. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "BackendServices")
  4734. rk := &RateLimitKey{
  4735. ProjectID: projectID,
  4736. Operation: "Update",
  4737. Version: meta.Version("alpha"),
  4738. Service: "BackendServices",
  4739. }
  4740. klog.V(5).Infof("GCEAlphaBackendServices.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  4741. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  4742. klog.V(4).Infof("GCEAlphaBackendServices.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  4743. return err
  4744. }
  4745. call := g.s.Alpha.BackendServices.Update(projectID, key.Name, arg0)
  4746. call.Context(ctx)
  4747. op, err := call.Do()
  4748. if err != nil {
  4749. klog.V(4).Infof("GCEAlphaBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err)
  4750. return err
  4751. }
  4752. err = g.s.WaitForCompletion(ctx, op)
  4753. klog.V(4).Infof("GCEAlphaBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err)
  4754. return err
  4755. }
  4756. // RegionBackendServices is an interface that allows for mocking of RegionBackendServices.
  4757. type RegionBackendServices interface {
  4758. Get(ctx context.Context, key *meta.Key) (*ga.BackendService, error)
  4759. List(ctx context.Context, region string, fl *filter.F) ([]*ga.BackendService, error)
  4760. Insert(ctx context.Context, key *meta.Key, obj *ga.BackendService) error
  4761. Delete(ctx context.Context, key *meta.Key) error
  4762. GetHealth(context.Context, *meta.Key, *ga.ResourceGroupReference) (*ga.BackendServiceGroupHealth, error)
  4763. Update(context.Context, *meta.Key, *ga.BackendService) error
  4764. }
  4765. // NewMockRegionBackendServices returns a new mock for RegionBackendServices.
  4766. func NewMockRegionBackendServices(pr ProjectRouter, objs map[meta.Key]*MockRegionBackendServicesObj) *MockRegionBackendServices {
  4767. mock := &MockRegionBackendServices{
  4768. ProjectRouter: pr,
  4769. Objects: objs,
  4770. GetError: map[meta.Key]error{},
  4771. InsertError: map[meta.Key]error{},
  4772. DeleteError: map[meta.Key]error{},
  4773. }
  4774. return mock
  4775. }
  4776. // MockRegionBackendServices is the mock for RegionBackendServices.
  4777. type MockRegionBackendServices struct {
  4778. Lock sync.Mutex
  4779. ProjectRouter ProjectRouter
  4780. // Objects maintained by the mock.
  4781. Objects map[meta.Key]*MockRegionBackendServicesObj
  4782. // If an entry exists for the given key and operation, then the error
  4783. // will be returned instead of the operation.
  4784. GetError map[meta.Key]error
  4785. ListError *error
  4786. InsertError map[meta.Key]error
  4787. DeleteError map[meta.Key]error
  4788. // xxxHook allow you to intercept the standard processing of the mock in
  4789. // order to add your own logic. Return (true, _, _) to prevent the normal
  4790. // execution flow of the mock. Return (false, nil, nil) to continue with
  4791. // normal mock behavior/ after the hook function executes.
  4792. GetHook func(ctx context.Context, key *meta.Key, m *MockRegionBackendServices) (bool, *ga.BackendService, error)
  4793. ListHook func(ctx context.Context, region string, fl *filter.F, m *MockRegionBackendServices) (bool, []*ga.BackendService, error)
  4794. InsertHook func(ctx context.Context, key *meta.Key, obj *ga.BackendService, m *MockRegionBackendServices) (bool, error)
  4795. DeleteHook func(ctx context.Context, key *meta.Key, m *MockRegionBackendServices) (bool, error)
  4796. GetHealthHook func(context.Context, *meta.Key, *ga.ResourceGroupReference, *MockRegionBackendServices) (*ga.BackendServiceGroupHealth, error)
  4797. UpdateHook func(context.Context, *meta.Key, *ga.BackendService, *MockRegionBackendServices) error
  4798. // X is extra state that can be used as part of the mock. Generated code
  4799. // will not use this field.
  4800. X interface{}
  4801. }
  4802. // Get returns the object from the mock.
  4803. func (m *MockRegionBackendServices) Get(ctx context.Context, key *meta.Key) (*ga.BackendService, error) {
  4804. if m.GetHook != nil {
  4805. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  4806. klog.V(5).Infof("MockRegionBackendServices.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  4807. return obj, err
  4808. }
  4809. }
  4810. if !key.Valid() {
  4811. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  4812. }
  4813. m.Lock.Lock()
  4814. defer m.Lock.Unlock()
  4815. if err, ok := m.GetError[*key]; ok {
  4816. klog.V(5).Infof("MockRegionBackendServices.Get(%v, %s) = nil, %v", ctx, key, err)
  4817. return nil, err
  4818. }
  4819. if obj, ok := m.Objects[*key]; ok {
  4820. typedObj := obj.ToGA()
  4821. klog.V(5).Infof("MockRegionBackendServices.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  4822. return typedObj, nil
  4823. }
  4824. err := &googleapi.Error{
  4825. Code: http.StatusNotFound,
  4826. Message: fmt.Sprintf("MockRegionBackendServices %v not found", key),
  4827. }
  4828. klog.V(5).Infof("MockRegionBackendServices.Get(%v, %s) = nil, %v", ctx, key, err)
  4829. return nil, err
  4830. }
  4831. // List all of the objects in the mock in the given region.
  4832. func (m *MockRegionBackendServices) List(ctx context.Context, region string, fl *filter.F) ([]*ga.BackendService, error) {
  4833. if m.ListHook != nil {
  4834. if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept {
  4835. klog.V(5).Infof("MockRegionBackendServices.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err)
  4836. return objs, err
  4837. }
  4838. }
  4839. m.Lock.Lock()
  4840. defer m.Lock.Unlock()
  4841. if m.ListError != nil {
  4842. err := *m.ListError
  4843. klog.V(5).Infof("MockRegionBackendServices.List(%v, %q, %v) = nil, %v", ctx, region, fl, err)
  4844. return nil, *m.ListError
  4845. }
  4846. var objs []*ga.BackendService
  4847. for key, obj := range m.Objects {
  4848. if key.Region != region {
  4849. continue
  4850. }
  4851. if !fl.Match(obj.ToGA()) {
  4852. continue
  4853. }
  4854. objs = append(objs, obj.ToGA())
  4855. }
  4856. klog.V(5).Infof("MockRegionBackendServices.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs))
  4857. return objs, nil
  4858. }
  4859. // Insert is a mock for inserting/creating a new object.
  4860. func (m *MockRegionBackendServices) Insert(ctx context.Context, key *meta.Key, obj *ga.BackendService) error {
  4861. if m.InsertHook != nil {
  4862. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  4863. klog.V(5).Infof("MockRegionBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  4864. return err
  4865. }
  4866. }
  4867. if !key.Valid() {
  4868. return fmt.Errorf("invalid GCE key (%+v)", key)
  4869. }
  4870. m.Lock.Lock()
  4871. defer m.Lock.Unlock()
  4872. if err, ok := m.InsertError[*key]; ok {
  4873. klog.V(5).Infof("MockRegionBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  4874. return err
  4875. }
  4876. if _, ok := m.Objects[*key]; ok {
  4877. err := &googleapi.Error{
  4878. Code: http.StatusConflict,
  4879. Message: fmt.Sprintf("MockRegionBackendServices %v exists", key),
  4880. }
  4881. klog.V(5).Infof("MockRegionBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  4882. return err
  4883. }
  4884. obj.Name = key.Name
  4885. projectID := m.ProjectRouter.ProjectID(ctx, "ga", "backendServices")
  4886. obj.SelfLink = SelfLink(meta.VersionGA, projectID, "backendServices", key)
  4887. m.Objects[*key] = &MockRegionBackendServicesObj{obj}
  4888. klog.V(5).Infof("MockRegionBackendServices.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  4889. return nil
  4890. }
  4891. // Delete is a mock for deleting the object.
  4892. func (m *MockRegionBackendServices) Delete(ctx context.Context, key *meta.Key) error {
  4893. if m.DeleteHook != nil {
  4894. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  4895. klog.V(5).Infof("MockRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  4896. return err
  4897. }
  4898. }
  4899. if !key.Valid() {
  4900. return fmt.Errorf("invalid GCE key (%+v)", key)
  4901. }
  4902. m.Lock.Lock()
  4903. defer m.Lock.Unlock()
  4904. if err, ok := m.DeleteError[*key]; ok {
  4905. klog.V(5).Infof("MockRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  4906. return err
  4907. }
  4908. if _, ok := m.Objects[*key]; !ok {
  4909. err := &googleapi.Error{
  4910. Code: http.StatusNotFound,
  4911. Message: fmt.Sprintf("MockRegionBackendServices %v not found", key),
  4912. }
  4913. klog.V(5).Infof("MockRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  4914. return err
  4915. }
  4916. delete(m.Objects, *key)
  4917. klog.V(5).Infof("MockRegionBackendServices.Delete(%v, %v) = nil", ctx, key)
  4918. return nil
  4919. }
  4920. // Obj wraps the object for use in the mock.
  4921. func (m *MockRegionBackendServices) Obj(o *ga.BackendService) *MockRegionBackendServicesObj {
  4922. return &MockRegionBackendServicesObj{o}
  4923. }
  4924. // GetHealth is a mock for the corresponding method.
  4925. func (m *MockRegionBackendServices) GetHealth(ctx context.Context, key *meta.Key, arg0 *ga.ResourceGroupReference) (*ga.BackendServiceGroupHealth, error) {
  4926. if m.GetHealthHook != nil {
  4927. return m.GetHealthHook(ctx, key, arg0, m)
  4928. }
  4929. return nil, fmt.Errorf("GetHealthHook must be set")
  4930. }
  4931. // Update is a mock for the corresponding method.
  4932. func (m *MockRegionBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *ga.BackendService) error {
  4933. if m.UpdateHook != nil {
  4934. return m.UpdateHook(ctx, key, arg0, m)
  4935. }
  4936. return nil
  4937. }
  4938. // GCERegionBackendServices is a simplifying adapter for the GCE RegionBackendServices.
  4939. type GCERegionBackendServices struct {
  4940. s *Service
  4941. }
  4942. // Get the BackendService named by key.
  4943. func (g *GCERegionBackendServices) Get(ctx context.Context, key *meta.Key) (*ga.BackendService, error) {
  4944. klog.V(5).Infof("GCERegionBackendServices.Get(%v, %v): called", ctx, key)
  4945. if !key.Valid() {
  4946. klog.V(2).Infof("GCERegionBackendServices.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  4947. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  4948. }
  4949. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionBackendServices")
  4950. rk := &RateLimitKey{
  4951. ProjectID: projectID,
  4952. Operation: "Get",
  4953. Version: meta.Version("ga"),
  4954. Service: "RegionBackendServices",
  4955. }
  4956. klog.V(5).Infof("GCERegionBackendServices.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  4957. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  4958. klog.V(4).Infof("GCERegionBackendServices.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  4959. return nil, err
  4960. }
  4961. call := g.s.GA.RegionBackendServices.Get(projectID, key.Region, key.Name)
  4962. call.Context(ctx)
  4963. v, err := call.Do()
  4964. klog.V(4).Infof("GCERegionBackendServices.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  4965. return v, err
  4966. }
  4967. // List all BackendService objects.
  4968. func (g *GCERegionBackendServices) List(ctx context.Context, region string, fl *filter.F) ([]*ga.BackendService, error) {
  4969. klog.V(5).Infof("GCERegionBackendServices.List(%v, %v, %v) called", ctx, region, fl)
  4970. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionBackendServices")
  4971. rk := &RateLimitKey{
  4972. ProjectID: projectID,
  4973. Operation: "List",
  4974. Version: meta.Version("ga"),
  4975. Service: "RegionBackendServices",
  4976. }
  4977. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  4978. return nil, err
  4979. }
  4980. klog.V(5).Infof("GCERegionBackendServices.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk)
  4981. call := g.s.GA.RegionBackendServices.List(projectID, region)
  4982. if fl != filter.None {
  4983. call.Filter(fl.String())
  4984. }
  4985. var all []*ga.BackendService
  4986. f := func(l *ga.BackendServiceList) error {
  4987. klog.V(5).Infof("GCERegionBackendServices.List(%v, ..., %v): page %+v", ctx, fl, l)
  4988. all = append(all, l.Items...)
  4989. return nil
  4990. }
  4991. if err := call.Pages(ctx, f); err != nil {
  4992. klog.V(4).Infof("GCERegionBackendServices.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  4993. return nil, err
  4994. }
  4995. if klog.V(4) {
  4996. klog.V(4).Infof("GCERegionBackendServices.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  4997. } else if klog.V(5) {
  4998. var asStr []string
  4999. for _, o := range all {
  5000. asStr = append(asStr, fmt.Sprintf("%+v", o))
  5001. }
  5002. klog.V(5).Infof("GCERegionBackendServices.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  5003. }
  5004. return all, nil
  5005. }
  5006. // Insert BackendService with key of value obj.
  5007. func (g *GCERegionBackendServices) Insert(ctx context.Context, key *meta.Key, obj *ga.BackendService) error {
  5008. klog.V(5).Infof("GCERegionBackendServices.Insert(%v, %v, %+v): called", ctx, key, obj)
  5009. if !key.Valid() {
  5010. klog.V(2).Infof("GCERegionBackendServices.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  5011. return fmt.Errorf("invalid GCE key (%+v)", key)
  5012. }
  5013. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionBackendServices")
  5014. rk := &RateLimitKey{
  5015. ProjectID: projectID,
  5016. Operation: "Insert",
  5017. Version: meta.Version("ga"),
  5018. Service: "RegionBackendServices",
  5019. }
  5020. klog.V(5).Infof("GCERegionBackendServices.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  5021. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  5022. klog.V(4).Infof("GCERegionBackendServices.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  5023. return err
  5024. }
  5025. obj.Name = key.Name
  5026. call := g.s.GA.RegionBackendServices.Insert(projectID, key.Region, obj)
  5027. call.Context(ctx)
  5028. op, err := call.Do()
  5029. if err != nil {
  5030. klog.V(4).Infof("GCERegionBackendServices.Insert(%v, %v, ...) = %+v", ctx, key, err)
  5031. return err
  5032. }
  5033. err = g.s.WaitForCompletion(ctx, op)
  5034. klog.V(4).Infof("GCERegionBackendServices.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  5035. return err
  5036. }
  5037. // Delete the BackendService referenced by key.
  5038. func (g *GCERegionBackendServices) Delete(ctx context.Context, key *meta.Key) error {
  5039. klog.V(5).Infof("GCERegionBackendServices.Delete(%v, %v): called", ctx, key)
  5040. if !key.Valid() {
  5041. klog.V(2).Infof("GCERegionBackendServices.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  5042. return fmt.Errorf("invalid GCE key (%+v)", key)
  5043. }
  5044. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionBackendServices")
  5045. rk := &RateLimitKey{
  5046. ProjectID: projectID,
  5047. Operation: "Delete",
  5048. Version: meta.Version("ga"),
  5049. Service: "RegionBackendServices",
  5050. }
  5051. klog.V(5).Infof("GCERegionBackendServices.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  5052. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  5053. klog.V(4).Infof("GCERegionBackendServices.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  5054. return err
  5055. }
  5056. call := g.s.GA.RegionBackendServices.Delete(projectID, key.Region, key.Name)
  5057. call.Context(ctx)
  5058. op, err := call.Do()
  5059. if err != nil {
  5060. klog.V(4).Infof("GCERegionBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  5061. return err
  5062. }
  5063. err = g.s.WaitForCompletion(ctx, op)
  5064. klog.V(4).Infof("GCERegionBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  5065. return err
  5066. }
  5067. // GetHealth is a method on GCERegionBackendServices.
  5068. func (g *GCERegionBackendServices) GetHealth(ctx context.Context, key *meta.Key, arg0 *ga.ResourceGroupReference) (*ga.BackendServiceGroupHealth, error) {
  5069. klog.V(5).Infof("GCERegionBackendServices.GetHealth(%v, %v, ...): called", ctx, key)
  5070. if !key.Valid() {
  5071. klog.V(2).Infof("GCERegionBackendServices.GetHealth(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  5072. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  5073. }
  5074. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionBackendServices")
  5075. rk := &RateLimitKey{
  5076. ProjectID: projectID,
  5077. Operation: "GetHealth",
  5078. Version: meta.Version("ga"),
  5079. Service: "RegionBackendServices",
  5080. }
  5081. klog.V(5).Infof("GCERegionBackendServices.GetHealth(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  5082. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  5083. klog.V(4).Infof("GCERegionBackendServices.GetHealth(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  5084. return nil, err
  5085. }
  5086. call := g.s.GA.RegionBackendServices.GetHealth(projectID, key.Region, key.Name, arg0)
  5087. call.Context(ctx)
  5088. v, err := call.Do()
  5089. klog.V(4).Infof("GCERegionBackendServices.GetHealth(%v, %v, ...) = %+v, %v", ctx, key, v, err)
  5090. return v, err
  5091. }
  5092. // Update is a method on GCERegionBackendServices.
  5093. func (g *GCERegionBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *ga.BackendService) error {
  5094. klog.V(5).Infof("GCERegionBackendServices.Update(%v, %v, ...): called", ctx, key)
  5095. if !key.Valid() {
  5096. klog.V(2).Infof("GCERegionBackendServices.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  5097. return fmt.Errorf("invalid GCE key (%+v)", key)
  5098. }
  5099. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionBackendServices")
  5100. rk := &RateLimitKey{
  5101. ProjectID: projectID,
  5102. Operation: "Update",
  5103. Version: meta.Version("ga"),
  5104. Service: "RegionBackendServices",
  5105. }
  5106. klog.V(5).Infof("GCERegionBackendServices.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  5107. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  5108. klog.V(4).Infof("GCERegionBackendServices.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  5109. return err
  5110. }
  5111. call := g.s.GA.RegionBackendServices.Update(projectID, key.Region, key.Name, arg0)
  5112. call.Context(ctx)
  5113. op, err := call.Do()
  5114. if err != nil {
  5115. klog.V(4).Infof("GCERegionBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err)
  5116. return err
  5117. }
  5118. err = g.s.WaitForCompletion(ctx, op)
  5119. klog.V(4).Infof("GCERegionBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err)
  5120. return err
  5121. }
  5122. // AlphaRegionBackendServices is an interface that allows for mocking of RegionBackendServices.
  5123. type AlphaRegionBackendServices interface {
  5124. Get(ctx context.Context, key *meta.Key) (*alpha.BackendService, error)
  5125. List(ctx context.Context, region string, fl *filter.F) ([]*alpha.BackendService, error)
  5126. Insert(ctx context.Context, key *meta.Key, obj *alpha.BackendService) error
  5127. Delete(ctx context.Context, key *meta.Key) error
  5128. GetHealth(context.Context, *meta.Key, *alpha.ResourceGroupReference) (*alpha.BackendServiceGroupHealth, error)
  5129. Update(context.Context, *meta.Key, *alpha.BackendService) error
  5130. }
  5131. // NewMockAlphaRegionBackendServices returns a new mock for RegionBackendServices.
  5132. func NewMockAlphaRegionBackendServices(pr ProjectRouter, objs map[meta.Key]*MockRegionBackendServicesObj) *MockAlphaRegionBackendServices {
  5133. mock := &MockAlphaRegionBackendServices{
  5134. ProjectRouter: pr,
  5135. Objects: objs,
  5136. GetError: map[meta.Key]error{},
  5137. InsertError: map[meta.Key]error{},
  5138. DeleteError: map[meta.Key]error{},
  5139. }
  5140. return mock
  5141. }
  5142. // MockAlphaRegionBackendServices is the mock for RegionBackendServices.
  5143. type MockAlphaRegionBackendServices struct {
  5144. Lock sync.Mutex
  5145. ProjectRouter ProjectRouter
  5146. // Objects maintained by the mock.
  5147. Objects map[meta.Key]*MockRegionBackendServicesObj
  5148. // If an entry exists for the given key and operation, then the error
  5149. // will be returned instead of the operation.
  5150. GetError map[meta.Key]error
  5151. ListError *error
  5152. InsertError map[meta.Key]error
  5153. DeleteError map[meta.Key]error
  5154. // xxxHook allow you to intercept the standard processing of the mock in
  5155. // order to add your own logic. Return (true, _, _) to prevent the normal
  5156. // execution flow of the mock. Return (false, nil, nil) to continue with
  5157. // normal mock behavior/ after the hook function executes.
  5158. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaRegionBackendServices) (bool, *alpha.BackendService, error)
  5159. ListHook func(ctx context.Context, region string, fl *filter.F, m *MockAlphaRegionBackendServices) (bool, []*alpha.BackendService, error)
  5160. InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.BackendService, m *MockAlphaRegionBackendServices) (bool, error)
  5161. DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaRegionBackendServices) (bool, error)
  5162. GetHealthHook func(context.Context, *meta.Key, *alpha.ResourceGroupReference, *MockAlphaRegionBackendServices) (*alpha.BackendServiceGroupHealth, error)
  5163. UpdateHook func(context.Context, *meta.Key, *alpha.BackendService, *MockAlphaRegionBackendServices) error
  5164. // X is extra state that can be used as part of the mock. Generated code
  5165. // will not use this field.
  5166. X interface{}
  5167. }
  5168. // Get returns the object from the mock.
  5169. func (m *MockAlphaRegionBackendServices) Get(ctx context.Context, key *meta.Key) (*alpha.BackendService, error) {
  5170. if m.GetHook != nil {
  5171. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  5172. klog.V(5).Infof("MockAlphaRegionBackendServices.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  5173. return obj, err
  5174. }
  5175. }
  5176. if !key.Valid() {
  5177. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  5178. }
  5179. m.Lock.Lock()
  5180. defer m.Lock.Unlock()
  5181. if err, ok := m.GetError[*key]; ok {
  5182. klog.V(5).Infof("MockAlphaRegionBackendServices.Get(%v, %s) = nil, %v", ctx, key, err)
  5183. return nil, err
  5184. }
  5185. if obj, ok := m.Objects[*key]; ok {
  5186. typedObj := obj.ToAlpha()
  5187. klog.V(5).Infof("MockAlphaRegionBackendServices.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  5188. return typedObj, nil
  5189. }
  5190. err := &googleapi.Error{
  5191. Code: http.StatusNotFound,
  5192. Message: fmt.Sprintf("MockAlphaRegionBackendServices %v not found", key),
  5193. }
  5194. klog.V(5).Infof("MockAlphaRegionBackendServices.Get(%v, %s) = nil, %v", ctx, key, err)
  5195. return nil, err
  5196. }
  5197. // List all of the objects in the mock in the given region.
  5198. func (m *MockAlphaRegionBackendServices) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.BackendService, error) {
  5199. if m.ListHook != nil {
  5200. if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept {
  5201. klog.V(5).Infof("MockAlphaRegionBackendServices.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err)
  5202. return objs, err
  5203. }
  5204. }
  5205. m.Lock.Lock()
  5206. defer m.Lock.Unlock()
  5207. if m.ListError != nil {
  5208. err := *m.ListError
  5209. klog.V(5).Infof("MockAlphaRegionBackendServices.List(%v, %q, %v) = nil, %v", ctx, region, fl, err)
  5210. return nil, *m.ListError
  5211. }
  5212. var objs []*alpha.BackendService
  5213. for key, obj := range m.Objects {
  5214. if key.Region != region {
  5215. continue
  5216. }
  5217. if !fl.Match(obj.ToAlpha()) {
  5218. continue
  5219. }
  5220. objs = append(objs, obj.ToAlpha())
  5221. }
  5222. klog.V(5).Infof("MockAlphaRegionBackendServices.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs))
  5223. return objs, nil
  5224. }
  5225. // Insert is a mock for inserting/creating a new object.
  5226. func (m *MockAlphaRegionBackendServices) Insert(ctx context.Context, key *meta.Key, obj *alpha.BackendService) error {
  5227. if m.InsertHook != nil {
  5228. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  5229. klog.V(5).Infof("MockAlphaRegionBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  5230. return err
  5231. }
  5232. }
  5233. if !key.Valid() {
  5234. return fmt.Errorf("invalid GCE key (%+v)", key)
  5235. }
  5236. m.Lock.Lock()
  5237. defer m.Lock.Unlock()
  5238. if err, ok := m.InsertError[*key]; ok {
  5239. klog.V(5).Infof("MockAlphaRegionBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  5240. return err
  5241. }
  5242. if _, ok := m.Objects[*key]; ok {
  5243. err := &googleapi.Error{
  5244. Code: http.StatusConflict,
  5245. Message: fmt.Sprintf("MockAlphaRegionBackendServices %v exists", key),
  5246. }
  5247. klog.V(5).Infof("MockAlphaRegionBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  5248. return err
  5249. }
  5250. obj.Name = key.Name
  5251. projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "backendServices")
  5252. obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "backendServices", key)
  5253. m.Objects[*key] = &MockRegionBackendServicesObj{obj}
  5254. klog.V(5).Infof("MockAlphaRegionBackendServices.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  5255. return nil
  5256. }
  5257. // Delete is a mock for deleting the object.
  5258. func (m *MockAlphaRegionBackendServices) Delete(ctx context.Context, key *meta.Key) error {
  5259. if m.DeleteHook != nil {
  5260. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  5261. klog.V(5).Infof("MockAlphaRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  5262. return err
  5263. }
  5264. }
  5265. if !key.Valid() {
  5266. return fmt.Errorf("invalid GCE key (%+v)", key)
  5267. }
  5268. m.Lock.Lock()
  5269. defer m.Lock.Unlock()
  5270. if err, ok := m.DeleteError[*key]; ok {
  5271. klog.V(5).Infof("MockAlphaRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  5272. return err
  5273. }
  5274. if _, ok := m.Objects[*key]; !ok {
  5275. err := &googleapi.Error{
  5276. Code: http.StatusNotFound,
  5277. Message: fmt.Sprintf("MockAlphaRegionBackendServices %v not found", key),
  5278. }
  5279. klog.V(5).Infof("MockAlphaRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  5280. return err
  5281. }
  5282. delete(m.Objects, *key)
  5283. klog.V(5).Infof("MockAlphaRegionBackendServices.Delete(%v, %v) = nil", ctx, key)
  5284. return nil
  5285. }
  5286. // Obj wraps the object for use in the mock.
  5287. func (m *MockAlphaRegionBackendServices) Obj(o *alpha.BackendService) *MockRegionBackendServicesObj {
  5288. return &MockRegionBackendServicesObj{o}
  5289. }
  5290. // GetHealth is a mock for the corresponding method.
  5291. func (m *MockAlphaRegionBackendServices) GetHealth(ctx context.Context, key *meta.Key, arg0 *alpha.ResourceGroupReference) (*alpha.BackendServiceGroupHealth, error) {
  5292. if m.GetHealthHook != nil {
  5293. return m.GetHealthHook(ctx, key, arg0, m)
  5294. }
  5295. return nil, fmt.Errorf("GetHealthHook must be set")
  5296. }
  5297. // Update is a mock for the corresponding method.
  5298. func (m *MockAlphaRegionBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *alpha.BackendService) error {
  5299. if m.UpdateHook != nil {
  5300. return m.UpdateHook(ctx, key, arg0, m)
  5301. }
  5302. return nil
  5303. }
  5304. // GCEAlphaRegionBackendServices is a simplifying adapter for the GCE RegionBackendServices.
  5305. type GCEAlphaRegionBackendServices struct {
  5306. s *Service
  5307. }
  5308. // Get the BackendService named by key.
  5309. func (g *GCEAlphaRegionBackendServices) Get(ctx context.Context, key *meta.Key) (*alpha.BackendService, error) {
  5310. klog.V(5).Infof("GCEAlphaRegionBackendServices.Get(%v, %v): called", ctx, key)
  5311. if !key.Valid() {
  5312. klog.V(2).Infof("GCEAlphaRegionBackendServices.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  5313. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  5314. }
  5315. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionBackendServices")
  5316. rk := &RateLimitKey{
  5317. ProjectID: projectID,
  5318. Operation: "Get",
  5319. Version: meta.Version("alpha"),
  5320. Service: "RegionBackendServices",
  5321. }
  5322. klog.V(5).Infof("GCEAlphaRegionBackendServices.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  5323. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  5324. klog.V(4).Infof("GCEAlphaRegionBackendServices.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  5325. return nil, err
  5326. }
  5327. call := g.s.Alpha.RegionBackendServices.Get(projectID, key.Region, key.Name)
  5328. call.Context(ctx)
  5329. v, err := call.Do()
  5330. klog.V(4).Infof("GCEAlphaRegionBackendServices.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  5331. return v, err
  5332. }
  5333. // List all BackendService objects.
  5334. func (g *GCEAlphaRegionBackendServices) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.BackendService, error) {
  5335. klog.V(5).Infof("GCEAlphaRegionBackendServices.List(%v, %v, %v) called", ctx, region, fl)
  5336. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionBackendServices")
  5337. rk := &RateLimitKey{
  5338. ProjectID: projectID,
  5339. Operation: "List",
  5340. Version: meta.Version("alpha"),
  5341. Service: "RegionBackendServices",
  5342. }
  5343. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  5344. return nil, err
  5345. }
  5346. klog.V(5).Infof("GCEAlphaRegionBackendServices.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk)
  5347. call := g.s.Alpha.RegionBackendServices.List(projectID, region)
  5348. if fl != filter.None {
  5349. call.Filter(fl.String())
  5350. }
  5351. var all []*alpha.BackendService
  5352. f := func(l *alpha.BackendServiceList) error {
  5353. klog.V(5).Infof("GCEAlphaRegionBackendServices.List(%v, ..., %v): page %+v", ctx, fl, l)
  5354. all = append(all, l.Items...)
  5355. return nil
  5356. }
  5357. if err := call.Pages(ctx, f); err != nil {
  5358. klog.V(4).Infof("GCEAlphaRegionBackendServices.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  5359. return nil, err
  5360. }
  5361. if klog.V(4) {
  5362. klog.V(4).Infof("GCEAlphaRegionBackendServices.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  5363. } else if klog.V(5) {
  5364. var asStr []string
  5365. for _, o := range all {
  5366. asStr = append(asStr, fmt.Sprintf("%+v", o))
  5367. }
  5368. klog.V(5).Infof("GCEAlphaRegionBackendServices.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  5369. }
  5370. return all, nil
  5371. }
  5372. // Insert BackendService with key of value obj.
  5373. func (g *GCEAlphaRegionBackendServices) Insert(ctx context.Context, key *meta.Key, obj *alpha.BackendService) error {
  5374. klog.V(5).Infof("GCEAlphaRegionBackendServices.Insert(%v, %v, %+v): called", ctx, key, obj)
  5375. if !key.Valid() {
  5376. klog.V(2).Infof("GCEAlphaRegionBackendServices.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  5377. return fmt.Errorf("invalid GCE key (%+v)", key)
  5378. }
  5379. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionBackendServices")
  5380. rk := &RateLimitKey{
  5381. ProjectID: projectID,
  5382. Operation: "Insert",
  5383. Version: meta.Version("alpha"),
  5384. Service: "RegionBackendServices",
  5385. }
  5386. klog.V(5).Infof("GCEAlphaRegionBackendServices.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  5387. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  5388. klog.V(4).Infof("GCEAlphaRegionBackendServices.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  5389. return err
  5390. }
  5391. obj.Name = key.Name
  5392. call := g.s.Alpha.RegionBackendServices.Insert(projectID, key.Region, obj)
  5393. call.Context(ctx)
  5394. op, err := call.Do()
  5395. if err != nil {
  5396. klog.V(4).Infof("GCEAlphaRegionBackendServices.Insert(%v, %v, ...) = %+v", ctx, key, err)
  5397. return err
  5398. }
  5399. err = g.s.WaitForCompletion(ctx, op)
  5400. klog.V(4).Infof("GCEAlphaRegionBackendServices.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  5401. return err
  5402. }
  5403. // Delete the BackendService referenced by key.
  5404. func (g *GCEAlphaRegionBackendServices) Delete(ctx context.Context, key *meta.Key) error {
  5405. klog.V(5).Infof("GCEAlphaRegionBackendServices.Delete(%v, %v): called", ctx, key)
  5406. if !key.Valid() {
  5407. klog.V(2).Infof("GCEAlphaRegionBackendServices.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  5408. return fmt.Errorf("invalid GCE key (%+v)", key)
  5409. }
  5410. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionBackendServices")
  5411. rk := &RateLimitKey{
  5412. ProjectID: projectID,
  5413. Operation: "Delete",
  5414. Version: meta.Version("alpha"),
  5415. Service: "RegionBackendServices",
  5416. }
  5417. klog.V(5).Infof("GCEAlphaRegionBackendServices.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  5418. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  5419. klog.V(4).Infof("GCEAlphaRegionBackendServices.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  5420. return err
  5421. }
  5422. call := g.s.Alpha.RegionBackendServices.Delete(projectID, key.Region, key.Name)
  5423. call.Context(ctx)
  5424. op, err := call.Do()
  5425. if err != nil {
  5426. klog.V(4).Infof("GCEAlphaRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  5427. return err
  5428. }
  5429. err = g.s.WaitForCompletion(ctx, op)
  5430. klog.V(4).Infof("GCEAlphaRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  5431. return err
  5432. }
  5433. // GetHealth is a method on GCEAlphaRegionBackendServices.
  5434. func (g *GCEAlphaRegionBackendServices) GetHealth(ctx context.Context, key *meta.Key, arg0 *alpha.ResourceGroupReference) (*alpha.BackendServiceGroupHealth, error) {
  5435. klog.V(5).Infof("GCEAlphaRegionBackendServices.GetHealth(%v, %v, ...): called", ctx, key)
  5436. if !key.Valid() {
  5437. klog.V(2).Infof("GCEAlphaRegionBackendServices.GetHealth(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  5438. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  5439. }
  5440. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionBackendServices")
  5441. rk := &RateLimitKey{
  5442. ProjectID: projectID,
  5443. Operation: "GetHealth",
  5444. Version: meta.Version("alpha"),
  5445. Service: "RegionBackendServices",
  5446. }
  5447. klog.V(5).Infof("GCEAlphaRegionBackendServices.GetHealth(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  5448. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  5449. klog.V(4).Infof("GCEAlphaRegionBackendServices.GetHealth(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  5450. return nil, err
  5451. }
  5452. call := g.s.Alpha.RegionBackendServices.GetHealth(projectID, key.Region, key.Name, arg0)
  5453. call.Context(ctx)
  5454. v, err := call.Do()
  5455. klog.V(4).Infof("GCEAlphaRegionBackendServices.GetHealth(%v, %v, ...) = %+v, %v", ctx, key, v, err)
  5456. return v, err
  5457. }
  5458. // Update is a method on GCEAlphaRegionBackendServices.
  5459. func (g *GCEAlphaRegionBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *alpha.BackendService) error {
  5460. klog.V(5).Infof("GCEAlphaRegionBackendServices.Update(%v, %v, ...): called", ctx, key)
  5461. if !key.Valid() {
  5462. klog.V(2).Infof("GCEAlphaRegionBackendServices.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  5463. return fmt.Errorf("invalid GCE key (%+v)", key)
  5464. }
  5465. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionBackendServices")
  5466. rk := &RateLimitKey{
  5467. ProjectID: projectID,
  5468. Operation: "Update",
  5469. Version: meta.Version("alpha"),
  5470. Service: "RegionBackendServices",
  5471. }
  5472. klog.V(5).Infof("GCEAlphaRegionBackendServices.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  5473. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  5474. klog.V(4).Infof("GCEAlphaRegionBackendServices.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  5475. return err
  5476. }
  5477. call := g.s.Alpha.RegionBackendServices.Update(projectID, key.Region, key.Name, arg0)
  5478. call.Context(ctx)
  5479. op, err := call.Do()
  5480. if err != nil {
  5481. klog.V(4).Infof("GCEAlphaRegionBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err)
  5482. return err
  5483. }
  5484. err = g.s.WaitForCompletion(ctx, op)
  5485. klog.V(4).Infof("GCEAlphaRegionBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err)
  5486. return err
  5487. }
  5488. // BetaRegionBackendServices is an interface that allows for mocking of RegionBackendServices.
  5489. type BetaRegionBackendServices interface {
  5490. Get(ctx context.Context, key *meta.Key) (*beta.BackendService, error)
  5491. List(ctx context.Context, region string, fl *filter.F) ([]*beta.BackendService, error)
  5492. Insert(ctx context.Context, key *meta.Key, obj *beta.BackendService) error
  5493. Delete(ctx context.Context, key *meta.Key) error
  5494. GetHealth(context.Context, *meta.Key, *beta.ResourceGroupReference) (*beta.BackendServiceGroupHealth, error)
  5495. Update(context.Context, *meta.Key, *beta.BackendService) error
  5496. }
  5497. // NewMockBetaRegionBackendServices returns a new mock for RegionBackendServices.
  5498. func NewMockBetaRegionBackendServices(pr ProjectRouter, objs map[meta.Key]*MockRegionBackendServicesObj) *MockBetaRegionBackendServices {
  5499. mock := &MockBetaRegionBackendServices{
  5500. ProjectRouter: pr,
  5501. Objects: objs,
  5502. GetError: map[meta.Key]error{},
  5503. InsertError: map[meta.Key]error{},
  5504. DeleteError: map[meta.Key]error{},
  5505. }
  5506. return mock
  5507. }
  5508. // MockBetaRegionBackendServices is the mock for RegionBackendServices.
  5509. type MockBetaRegionBackendServices struct {
  5510. Lock sync.Mutex
  5511. ProjectRouter ProjectRouter
  5512. // Objects maintained by the mock.
  5513. Objects map[meta.Key]*MockRegionBackendServicesObj
  5514. // If an entry exists for the given key and operation, then the error
  5515. // will be returned instead of the operation.
  5516. GetError map[meta.Key]error
  5517. ListError *error
  5518. InsertError map[meta.Key]error
  5519. DeleteError map[meta.Key]error
  5520. // xxxHook allow you to intercept the standard processing of the mock in
  5521. // order to add your own logic. Return (true, _, _) to prevent the normal
  5522. // execution flow of the mock. Return (false, nil, nil) to continue with
  5523. // normal mock behavior/ after the hook function executes.
  5524. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaRegionBackendServices) (bool, *beta.BackendService, error)
  5525. ListHook func(ctx context.Context, region string, fl *filter.F, m *MockBetaRegionBackendServices) (bool, []*beta.BackendService, error)
  5526. InsertHook func(ctx context.Context, key *meta.Key, obj *beta.BackendService, m *MockBetaRegionBackendServices) (bool, error)
  5527. DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaRegionBackendServices) (bool, error)
  5528. GetHealthHook func(context.Context, *meta.Key, *beta.ResourceGroupReference, *MockBetaRegionBackendServices) (*beta.BackendServiceGroupHealth, error)
  5529. UpdateHook func(context.Context, *meta.Key, *beta.BackendService, *MockBetaRegionBackendServices) error
  5530. // X is extra state that can be used as part of the mock. Generated code
  5531. // will not use this field.
  5532. X interface{}
  5533. }
  5534. // Get returns the object from the mock.
  5535. func (m *MockBetaRegionBackendServices) Get(ctx context.Context, key *meta.Key) (*beta.BackendService, error) {
  5536. if m.GetHook != nil {
  5537. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  5538. klog.V(5).Infof("MockBetaRegionBackendServices.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  5539. return obj, err
  5540. }
  5541. }
  5542. if !key.Valid() {
  5543. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  5544. }
  5545. m.Lock.Lock()
  5546. defer m.Lock.Unlock()
  5547. if err, ok := m.GetError[*key]; ok {
  5548. klog.V(5).Infof("MockBetaRegionBackendServices.Get(%v, %s) = nil, %v", ctx, key, err)
  5549. return nil, err
  5550. }
  5551. if obj, ok := m.Objects[*key]; ok {
  5552. typedObj := obj.ToBeta()
  5553. klog.V(5).Infof("MockBetaRegionBackendServices.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  5554. return typedObj, nil
  5555. }
  5556. err := &googleapi.Error{
  5557. Code: http.StatusNotFound,
  5558. Message: fmt.Sprintf("MockBetaRegionBackendServices %v not found", key),
  5559. }
  5560. klog.V(5).Infof("MockBetaRegionBackendServices.Get(%v, %s) = nil, %v", ctx, key, err)
  5561. return nil, err
  5562. }
  5563. // List all of the objects in the mock in the given region.
  5564. func (m *MockBetaRegionBackendServices) List(ctx context.Context, region string, fl *filter.F) ([]*beta.BackendService, error) {
  5565. if m.ListHook != nil {
  5566. if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept {
  5567. klog.V(5).Infof("MockBetaRegionBackendServices.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err)
  5568. return objs, err
  5569. }
  5570. }
  5571. m.Lock.Lock()
  5572. defer m.Lock.Unlock()
  5573. if m.ListError != nil {
  5574. err := *m.ListError
  5575. klog.V(5).Infof("MockBetaRegionBackendServices.List(%v, %q, %v) = nil, %v", ctx, region, fl, err)
  5576. return nil, *m.ListError
  5577. }
  5578. var objs []*beta.BackendService
  5579. for key, obj := range m.Objects {
  5580. if key.Region != region {
  5581. continue
  5582. }
  5583. if !fl.Match(obj.ToBeta()) {
  5584. continue
  5585. }
  5586. objs = append(objs, obj.ToBeta())
  5587. }
  5588. klog.V(5).Infof("MockBetaRegionBackendServices.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs))
  5589. return objs, nil
  5590. }
  5591. // Insert is a mock for inserting/creating a new object.
  5592. func (m *MockBetaRegionBackendServices) Insert(ctx context.Context, key *meta.Key, obj *beta.BackendService) error {
  5593. if m.InsertHook != nil {
  5594. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  5595. klog.V(5).Infof("MockBetaRegionBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  5596. return err
  5597. }
  5598. }
  5599. if !key.Valid() {
  5600. return fmt.Errorf("invalid GCE key (%+v)", key)
  5601. }
  5602. m.Lock.Lock()
  5603. defer m.Lock.Unlock()
  5604. if err, ok := m.InsertError[*key]; ok {
  5605. klog.V(5).Infof("MockBetaRegionBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  5606. return err
  5607. }
  5608. if _, ok := m.Objects[*key]; ok {
  5609. err := &googleapi.Error{
  5610. Code: http.StatusConflict,
  5611. Message: fmt.Sprintf("MockBetaRegionBackendServices %v exists", key),
  5612. }
  5613. klog.V(5).Infof("MockBetaRegionBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  5614. return err
  5615. }
  5616. obj.Name = key.Name
  5617. projectID := m.ProjectRouter.ProjectID(ctx, "beta", "backendServices")
  5618. obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "backendServices", key)
  5619. m.Objects[*key] = &MockRegionBackendServicesObj{obj}
  5620. klog.V(5).Infof("MockBetaRegionBackendServices.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  5621. return nil
  5622. }
  5623. // Delete is a mock for deleting the object.
  5624. func (m *MockBetaRegionBackendServices) Delete(ctx context.Context, key *meta.Key) error {
  5625. if m.DeleteHook != nil {
  5626. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  5627. klog.V(5).Infof("MockBetaRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  5628. return err
  5629. }
  5630. }
  5631. if !key.Valid() {
  5632. return fmt.Errorf("invalid GCE key (%+v)", key)
  5633. }
  5634. m.Lock.Lock()
  5635. defer m.Lock.Unlock()
  5636. if err, ok := m.DeleteError[*key]; ok {
  5637. klog.V(5).Infof("MockBetaRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  5638. return err
  5639. }
  5640. if _, ok := m.Objects[*key]; !ok {
  5641. err := &googleapi.Error{
  5642. Code: http.StatusNotFound,
  5643. Message: fmt.Sprintf("MockBetaRegionBackendServices %v not found", key),
  5644. }
  5645. klog.V(5).Infof("MockBetaRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  5646. return err
  5647. }
  5648. delete(m.Objects, *key)
  5649. klog.V(5).Infof("MockBetaRegionBackendServices.Delete(%v, %v) = nil", ctx, key)
  5650. return nil
  5651. }
  5652. // Obj wraps the object for use in the mock.
  5653. func (m *MockBetaRegionBackendServices) Obj(o *beta.BackendService) *MockRegionBackendServicesObj {
  5654. return &MockRegionBackendServicesObj{o}
  5655. }
  5656. // GetHealth is a mock for the corresponding method.
  5657. func (m *MockBetaRegionBackendServices) GetHealth(ctx context.Context, key *meta.Key, arg0 *beta.ResourceGroupReference) (*beta.BackendServiceGroupHealth, error) {
  5658. if m.GetHealthHook != nil {
  5659. return m.GetHealthHook(ctx, key, arg0, m)
  5660. }
  5661. return nil, fmt.Errorf("GetHealthHook must be set")
  5662. }
  5663. // Update is a mock for the corresponding method.
  5664. func (m *MockBetaRegionBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *beta.BackendService) error {
  5665. if m.UpdateHook != nil {
  5666. return m.UpdateHook(ctx, key, arg0, m)
  5667. }
  5668. return nil
  5669. }
  5670. // GCEBetaRegionBackendServices is a simplifying adapter for the GCE RegionBackendServices.
  5671. type GCEBetaRegionBackendServices struct {
  5672. s *Service
  5673. }
  5674. // Get the BackendService named by key.
  5675. func (g *GCEBetaRegionBackendServices) Get(ctx context.Context, key *meta.Key) (*beta.BackendService, error) {
  5676. klog.V(5).Infof("GCEBetaRegionBackendServices.Get(%v, %v): called", ctx, key)
  5677. if !key.Valid() {
  5678. klog.V(2).Infof("GCEBetaRegionBackendServices.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  5679. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  5680. }
  5681. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionBackendServices")
  5682. rk := &RateLimitKey{
  5683. ProjectID: projectID,
  5684. Operation: "Get",
  5685. Version: meta.Version("beta"),
  5686. Service: "RegionBackendServices",
  5687. }
  5688. klog.V(5).Infof("GCEBetaRegionBackendServices.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  5689. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  5690. klog.V(4).Infof("GCEBetaRegionBackendServices.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  5691. return nil, err
  5692. }
  5693. call := g.s.Beta.RegionBackendServices.Get(projectID, key.Region, key.Name)
  5694. call.Context(ctx)
  5695. v, err := call.Do()
  5696. klog.V(4).Infof("GCEBetaRegionBackendServices.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  5697. return v, err
  5698. }
  5699. // List all BackendService objects.
  5700. func (g *GCEBetaRegionBackendServices) List(ctx context.Context, region string, fl *filter.F) ([]*beta.BackendService, error) {
  5701. klog.V(5).Infof("GCEBetaRegionBackendServices.List(%v, %v, %v) called", ctx, region, fl)
  5702. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionBackendServices")
  5703. rk := &RateLimitKey{
  5704. ProjectID: projectID,
  5705. Operation: "List",
  5706. Version: meta.Version("beta"),
  5707. Service: "RegionBackendServices",
  5708. }
  5709. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  5710. return nil, err
  5711. }
  5712. klog.V(5).Infof("GCEBetaRegionBackendServices.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk)
  5713. call := g.s.Beta.RegionBackendServices.List(projectID, region)
  5714. if fl != filter.None {
  5715. call.Filter(fl.String())
  5716. }
  5717. var all []*beta.BackendService
  5718. f := func(l *beta.BackendServiceList) error {
  5719. klog.V(5).Infof("GCEBetaRegionBackendServices.List(%v, ..., %v): page %+v", ctx, fl, l)
  5720. all = append(all, l.Items...)
  5721. return nil
  5722. }
  5723. if err := call.Pages(ctx, f); err != nil {
  5724. klog.V(4).Infof("GCEBetaRegionBackendServices.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  5725. return nil, err
  5726. }
  5727. if klog.V(4) {
  5728. klog.V(4).Infof("GCEBetaRegionBackendServices.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  5729. } else if klog.V(5) {
  5730. var asStr []string
  5731. for _, o := range all {
  5732. asStr = append(asStr, fmt.Sprintf("%+v", o))
  5733. }
  5734. klog.V(5).Infof("GCEBetaRegionBackendServices.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  5735. }
  5736. return all, nil
  5737. }
  5738. // Insert BackendService with key of value obj.
  5739. func (g *GCEBetaRegionBackendServices) Insert(ctx context.Context, key *meta.Key, obj *beta.BackendService) error {
  5740. klog.V(5).Infof("GCEBetaRegionBackendServices.Insert(%v, %v, %+v): called", ctx, key, obj)
  5741. if !key.Valid() {
  5742. klog.V(2).Infof("GCEBetaRegionBackendServices.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  5743. return fmt.Errorf("invalid GCE key (%+v)", key)
  5744. }
  5745. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionBackendServices")
  5746. rk := &RateLimitKey{
  5747. ProjectID: projectID,
  5748. Operation: "Insert",
  5749. Version: meta.Version("beta"),
  5750. Service: "RegionBackendServices",
  5751. }
  5752. klog.V(5).Infof("GCEBetaRegionBackendServices.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  5753. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  5754. klog.V(4).Infof("GCEBetaRegionBackendServices.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  5755. return err
  5756. }
  5757. obj.Name = key.Name
  5758. call := g.s.Beta.RegionBackendServices.Insert(projectID, key.Region, obj)
  5759. call.Context(ctx)
  5760. op, err := call.Do()
  5761. if err != nil {
  5762. klog.V(4).Infof("GCEBetaRegionBackendServices.Insert(%v, %v, ...) = %+v", ctx, key, err)
  5763. return err
  5764. }
  5765. err = g.s.WaitForCompletion(ctx, op)
  5766. klog.V(4).Infof("GCEBetaRegionBackendServices.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  5767. return err
  5768. }
  5769. // Delete the BackendService referenced by key.
  5770. func (g *GCEBetaRegionBackendServices) Delete(ctx context.Context, key *meta.Key) error {
  5771. klog.V(5).Infof("GCEBetaRegionBackendServices.Delete(%v, %v): called", ctx, key)
  5772. if !key.Valid() {
  5773. klog.V(2).Infof("GCEBetaRegionBackendServices.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  5774. return fmt.Errorf("invalid GCE key (%+v)", key)
  5775. }
  5776. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionBackendServices")
  5777. rk := &RateLimitKey{
  5778. ProjectID: projectID,
  5779. Operation: "Delete",
  5780. Version: meta.Version("beta"),
  5781. Service: "RegionBackendServices",
  5782. }
  5783. klog.V(5).Infof("GCEBetaRegionBackendServices.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  5784. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  5785. klog.V(4).Infof("GCEBetaRegionBackendServices.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  5786. return err
  5787. }
  5788. call := g.s.Beta.RegionBackendServices.Delete(projectID, key.Region, key.Name)
  5789. call.Context(ctx)
  5790. op, err := call.Do()
  5791. if err != nil {
  5792. klog.V(4).Infof("GCEBetaRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  5793. return err
  5794. }
  5795. err = g.s.WaitForCompletion(ctx, op)
  5796. klog.V(4).Infof("GCEBetaRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err)
  5797. return err
  5798. }
  5799. // GetHealth is a method on GCEBetaRegionBackendServices.
  5800. func (g *GCEBetaRegionBackendServices) GetHealth(ctx context.Context, key *meta.Key, arg0 *beta.ResourceGroupReference) (*beta.BackendServiceGroupHealth, error) {
  5801. klog.V(5).Infof("GCEBetaRegionBackendServices.GetHealth(%v, %v, ...): called", ctx, key)
  5802. if !key.Valid() {
  5803. klog.V(2).Infof("GCEBetaRegionBackendServices.GetHealth(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  5804. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  5805. }
  5806. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionBackendServices")
  5807. rk := &RateLimitKey{
  5808. ProjectID: projectID,
  5809. Operation: "GetHealth",
  5810. Version: meta.Version("beta"),
  5811. Service: "RegionBackendServices",
  5812. }
  5813. klog.V(5).Infof("GCEBetaRegionBackendServices.GetHealth(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  5814. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  5815. klog.V(4).Infof("GCEBetaRegionBackendServices.GetHealth(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  5816. return nil, err
  5817. }
  5818. call := g.s.Beta.RegionBackendServices.GetHealth(projectID, key.Region, key.Name, arg0)
  5819. call.Context(ctx)
  5820. v, err := call.Do()
  5821. klog.V(4).Infof("GCEBetaRegionBackendServices.GetHealth(%v, %v, ...) = %+v, %v", ctx, key, v, err)
  5822. return v, err
  5823. }
  5824. // Update is a method on GCEBetaRegionBackendServices.
  5825. func (g *GCEBetaRegionBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *beta.BackendService) error {
  5826. klog.V(5).Infof("GCEBetaRegionBackendServices.Update(%v, %v, ...): called", ctx, key)
  5827. if !key.Valid() {
  5828. klog.V(2).Infof("GCEBetaRegionBackendServices.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  5829. return fmt.Errorf("invalid GCE key (%+v)", key)
  5830. }
  5831. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionBackendServices")
  5832. rk := &RateLimitKey{
  5833. ProjectID: projectID,
  5834. Operation: "Update",
  5835. Version: meta.Version("beta"),
  5836. Service: "RegionBackendServices",
  5837. }
  5838. klog.V(5).Infof("GCEBetaRegionBackendServices.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  5839. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  5840. klog.V(4).Infof("GCEBetaRegionBackendServices.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  5841. return err
  5842. }
  5843. call := g.s.Beta.RegionBackendServices.Update(projectID, key.Region, key.Name, arg0)
  5844. call.Context(ctx)
  5845. op, err := call.Do()
  5846. if err != nil {
  5847. klog.V(4).Infof("GCEBetaRegionBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err)
  5848. return err
  5849. }
  5850. err = g.s.WaitForCompletion(ctx, op)
  5851. klog.V(4).Infof("GCEBetaRegionBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err)
  5852. return err
  5853. }
  5854. // Disks is an interface that allows for mocking of Disks.
  5855. type Disks interface {
  5856. Get(ctx context.Context, key *meta.Key) (*ga.Disk, error)
  5857. List(ctx context.Context, zone string, fl *filter.F) ([]*ga.Disk, error)
  5858. Insert(ctx context.Context, key *meta.Key, obj *ga.Disk) error
  5859. Delete(ctx context.Context, key *meta.Key) error
  5860. Resize(context.Context, *meta.Key, *ga.DisksResizeRequest) error
  5861. }
  5862. // NewMockDisks returns a new mock for Disks.
  5863. func NewMockDisks(pr ProjectRouter, objs map[meta.Key]*MockDisksObj) *MockDisks {
  5864. mock := &MockDisks{
  5865. ProjectRouter: pr,
  5866. Objects: objs,
  5867. GetError: map[meta.Key]error{},
  5868. InsertError: map[meta.Key]error{},
  5869. DeleteError: map[meta.Key]error{},
  5870. }
  5871. return mock
  5872. }
  5873. // MockDisks is the mock for Disks.
  5874. type MockDisks struct {
  5875. Lock sync.Mutex
  5876. ProjectRouter ProjectRouter
  5877. // Objects maintained by the mock.
  5878. Objects map[meta.Key]*MockDisksObj
  5879. // If an entry exists for the given key and operation, then the error
  5880. // will be returned instead of the operation.
  5881. GetError map[meta.Key]error
  5882. ListError *error
  5883. InsertError map[meta.Key]error
  5884. DeleteError map[meta.Key]error
  5885. // xxxHook allow you to intercept the standard processing of the mock in
  5886. // order to add your own logic. Return (true, _, _) to prevent the normal
  5887. // execution flow of the mock. Return (false, nil, nil) to continue with
  5888. // normal mock behavior/ after the hook function executes.
  5889. GetHook func(ctx context.Context, key *meta.Key, m *MockDisks) (bool, *ga.Disk, error)
  5890. ListHook func(ctx context.Context, zone string, fl *filter.F, m *MockDisks) (bool, []*ga.Disk, error)
  5891. InsertHook func(ctx context.Context, key *meta.Key, obj *ga.Disk, m *MockDisks) (bool, error)
  5892. DeleteHook func(ctx context.Context, key *meta.Key, m *MockDisks) (bool, error)
  5893. ResizeHook func(context.Context, *meta.Key, *ga.DisksResizeRequest, *MockDisks) error
  5894. // X is extra state that can be used as part of the mock. Generated code
  5895. // will not use this field.
  5896. X interface{}
  5897. }
  5898. // Get returns the object from the mock.
  5899. func (m *MockDisks) Get(ctx context.Context, key *meta.Key) (*ga.Disk, error) {
  5900. if m.GetHook != nil {
  5901. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  5902. klog.V(5).Infof("MockDisks.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  5903. return obj, err
  5904. }
  5905. }
  5906. if !key.Valid() {
  5907. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  5908. }
  5909. m.Lock.Lock()
  5910. defer m.Lock.Unlock()
  5911. if err, ok := m.GetError[*key]; ok {
  5912. klog.V(5).Infof("MockDisks.Get(%v, %s) = nil, %v", ctx, key, err)
  5913. return nil, err
  5914. }
  5915. if obj, ok := m.Objects[*key]; ok {
  5916. typedObj := obj.ToGA()
  5917. klog.V(5).Infof("MockDisks.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  5918. return typedObj, nil
  5919. }
  5920. err := &googleapi.Error{
  5921. Code: http.StatusNotFound,
  5922. Message: fmt.Sprintf("MockDisks %v not found", key),
  5923. }
  5924. klog.V(5).Infof("MockDisks.Get(%v, %s) = nil, %v", ctx, key, err)
  5925. return nil, err
  5926. }
  5927. // List all of the objects in the mock in the given zone.
  5928. func (m *MockDisks) List(ctx context.Context, zone string, fl *filter.F) ([]*ga.Disk, error) {
  5929. if m.ListHook != nil {
  5930. if intercept, objs, err := m.ListHook(ctx, zone, fl, m); intercept {
  5931. klog.V(5).Infof("MockDisks.List(%v, %q, %v) = [%v items], %v", ctx, zone, fl, len(objs), err)
  5932. return objs, err
  5933. }
  5934. }
  5935. m.Lock.Lock()
  5936. defer m.Lock.Unlock()
  5937. if m.ListError != nil {
  5938. err := *m.ListError
  5939. klog.V(5).Infof("MockDisks.List(%v, %q, %v) = nil, %v", ctx, zone, fl, err)
  5940. return nil, *m.ListError
  5941. }
  5942. var objs []*ga.Disk
  5943. for key, obj := range m.Objects {
  5944. if key.Zone != zone {
  5945. continue
  5946. }
  5947. if !fl.Match(obj.ToGA()) {
  5948. continue
  5949. }
  5950. objs = append(objs, obj.ToGA())
  5951. }
  5952. klog.V(5).Infof("MockDisks.List(%v, %q, %v) = [%v items], nil", ctx, zone, fl, len(objs))
  5953. return objs, nil
  5954. }
  5955. // Insert is a mock for inserting/creating a new object.
  5956. func (m *MockDisks) Insert(ctx context.Context, key *meta.Key, obj *ga.Disk) error {
  5957. if m.InsertHook != nil {
  5958. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  5959. klog.V(5).Infof("MockDisks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  5960. return err
  5961. }
  5962. }
  5963. if !key.Valid() {
  5964. return fmt.Errorf("invalid GCE key (%+v)", key)
  5965. }
  5966. m.Lock.Lock()
  5967. defer m.Lock.Unlock()
  5968. if err, ok := m.InsertError[*key]; ok {
  5969. klog.V(5).Infof("MockDisks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  5970. return err
  5971. }
  5972. if _, ok := m.Objects[*key]; ok {
  5973. err := &googleapi.Error{
  5974. Code: http.StatusConflict,
  5975. Message: fmt.Sprintf("MockDisks %v exists", key),
  5976. }
  5977. klog.V(5).Infof("MockDisks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  5978. return err
  5979. }
  5980. obj.Name = key.Name
  5981. projectID := m.ProjectRouter.ProjectID(ctx, "ga", "disks")
  5982. obj.SelfLink = SelfLink(meta.VersionGA, projectID, "disks", key)
  5983. m.Objects[*key] = &MockDisksObj{obj}
  5984. klog.V(5).Infof("MockDisks.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  5985. return nil
  5986. }
  5987. // Delete is a mock for deleting the object.
  5988. func (m *MockDisks) Delete(ctx context.Context, key *meta.Key) error {
  5989. if m.DeleteHook != nil {
  5990. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  5991. klog.V(5).Infof("MockDisks.Delete(%v, %v) = %v", ctx, key, err)
  5992. return err
  5993. }
  5994. }
  5995. if !key.Valid() {
  5996. return fmt.Errorf("invalid GCE key (%+v)", key)
  5997. }
  5998. m.Lock.Lock()
  5999. defer m.Lock.Unlock()
  6000. if err, ok := m.DeleteError[*key]; ok {
  6001. klog.V(5).Infof("MockDisks.Delete(%v, %v) = %v", ctx, key, err)
  6002. return err
  6003. }
  6004. if _, ok := m.Objects[*key]; !ok {
  6005. err := &googleapi.Error{
  6006. Code: http.StatusNotFound,
  6007. Message: fmt.Sprintf("MockDisks %v not found", key),
  6008. }
  6009. klog.V(5).Infof("MockDisks.Delete(%v, %v) = %v", ctx, key, err)
  6010. return err
  6011. }
  6012. delete(m.Objects, *key)
  6013. klog.V(5).Infof("MockDisks.Delete(%v, %v) = nil", ctx, key)
  6014. return nil
  6015. }
  6016. // Obj wraps the object for use in the mock.
  6017. func (m *MockDisks) Obj(o *ga.Disk) *MockDisksObj {
  6018. return &MockDisksObj{o}
  6019. }
  6020. // Resize is a mock for the corresponding method.
  6021. func (m *MockDisks) Resize(ctx context.Context, key *meta.Key, arg0 *ga.DisksResizeRequest) error {
  6022. if m.ResizeHook != nil {
  6023. return m.ResizeHook(ctx, key, arg0, m)
  6024. }
  6025. return nil
  6026. }
  6027. // GCEDisks is a simplifying adapter for the GCE Disks.
  6028. type GCEDisks struct {
  6029. s *Service
  6030. }
  6031. // Get the Disk named by key.
  6032. func (g *GCEDisks) Get(ctx context.Context, key *meta.Key) (*ga.Disk, error) {
  6033. klog.V(5).Infof("GCEDisks.Get(%v, %v): called", ctx, key)
  6034. if !key.Valid() {
  6035. klog.V(2).Infof("GCEDisks.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  6036. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  6037. }
  6038. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Disks")
  6039. rk := &RateLimitKey{
  6040. ProjectID: projectID,
  6041. Operation: "Get",
  6042. Version: meta.Version("ga"),
  6043. Service: "Disks",
  6044. }
  6045. klog.V(5).Infof("GCEDisks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  6046. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  6047. klog.V(4).Infof("GCEDisks.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  6048. return nil, err
  6049. }
  6050. call := g.s.GA.Disks.Get(projectID, key.Zone, key.Name)
  6051. call.Context(ctx)
  6052. v, err := call.Do()
  6053. klog.V(4).Infof("GCEDisks.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  6054. return v, err
  6055. }
  6056. // List all Disk objects.
  6057. func (g *GCEDisks) List(ctx context.Context, zone string, fl *filter.F) ([]*ga.Disk, error) {
  6058. klog.V(5).Infof("GCEDisks.List(%v, %v, %v) called", ctx, zone, fl)
  6059. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Disks")
  6060. rk := &RateLimitKey{
  6061. ProjectID: projectID,
  6062. Operation: "List",
  6063. Version: meta.Version("ga"),
  6064. Service: "Disks",
  6065. }
  6066. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  6067. return nil, err
  6068. }
  6069. klog.V(5).Infof("GCEDisks.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, zone, fl, projectID, rk)
  6070. call := g.s.GA.Disks.List(projectID, zone)
  6071. if fl != filter.None {
  6072. call.Filter(fl.String())
  6073. }
  6074. var all []*ga.Disk
  6075. f := func(l *ga.DiskList) error {
  6076. klog.V(5).Infof("GCEDisks.List(%v, ..., %v): page %+v", ctx, fl, l)
  6077. all = append(all, l.Items...)
  6078. return nil
  6079. }
  6080. if err := call.Pages(ctx, f); err != nil {
  6081. klog.V(4).Infof("GCEDisks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  6082. return nil, err
  6083. }
  6084. if klog.V(4) {
  6085. klog.V(4).Infof("GCEDisks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  6086. } else if klog.V(5) {
  6087. var asStr []string
  6088. for _, o := range all {
  6089. asStr = append(asStr, fmt.Sprintf("%+v", o))
  6090. }
  6091. klog.V(5).Infof("GCEDisks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  6092. }
  6093. return all, nil
  6094. }
  6095. // Insert Disk with key of value obj.
  6096. func (g *GCEDisks) Insert(ctx context.Context, key *meta.Key, obj *ga.Disk) error {
  6097. klog.V(5).Infof("GCEDisks.Insert(%v, %v, %+v): called", ctx, key, obj)
  6098. if !key.Valid() {
  6099. klog.V(2).Infof("GCEDisks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  6100. return fmt.Errorf("invalid GCE key (%+v)", key)
  6101. }
  6102. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Disks")
  6103. rk := &RateLimitKey{
  6104. ProjectID: projectID,
  6105. Operation: "Insert",
  6106. Version: meta.Version("ga"),
  6107. Service: "Disks",
  6108. }
  6109. klog.V(5).Infof("GCEDisks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  6110. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  6111. klog.V(4).Infof("GCEDisks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  6112. return err
  6113. }
  6114. obj.Name = key.Name
  6115. call := g.s.GA.Disks.Insert(projectID, key.Zone, obj)
  6116. call.Context(ctx)
  6117. op, err := call.Do()
  6118. if err != nil {
  6119. klog.V(4).Infof("GCEDisks.Insert(%v, %v, ...) = %+v", ctx, key, err)
  6120. return err
  6121. }
  6122. err = g.s.WaitForCompletion(ctx, op)
  6123. klog.V(4).Infof("GCEDisks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  6124. return err
  6125. }
  6126. // Delete the Disk referenced by key.
  6127. func (g *GCEDisks) Delete(ctx context.Context, key *meta.Key) error {
  6128. klog.V(5).Infof("GCEDisks.Delete(%v, %v): called", ctx, key)
  6129. if !key.Valid() {
  6130. klog.V(2).Infof("GCEDisks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  6131. return fmt.Errorf("invalid GCE key (%+v)", key)
  6132. }
  6133. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Disks")
  6134. rk := &RateLimitKey{
  6135. ProjectID: projectID,
  6136. Operation: "Delete",
  6137. Version: meta.Version("ga"),
  6138. Service: "Disks",
  6139. }
  6140. klog.V(5).Infof("GCEDisks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  6141. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  6142. klog.V(4).Infof("GCEDisks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  6143. return err
  6144. }
  6145. call := g.s.GA.Disks.Delete(projectID, key.Zone, key.Name)
  6146. call.Context(ctx)
  6147. op, err := call.Do()
  6148. if err != nil {
  6149. klog.V(4).Infof("GCEDisks.Delete(%v, %v) = %v", ctx, key, err)
  6150. return err
  6151. }
  6152. err = g.s.WaitForCompletion(ctx, op)
  6153. klog.V(4).Infof("GCEDisks.Delete(%v, %v) = %v", ctx, key, err)
  6154. return err
  6155. }
  6156. // Resize is a method on GCEDisks.
  6157. func (g *GCEDisks) Resize(ctx context.Context, key *meta.Key, arg0 *ga.DisksResizeRequest) error {
  6158. klog.V(5).Infof("GCEDisks.Resize(%v, %v, ...): called", ctx, key)
  6159. if !key.Valid() {
  6160. klog.V(2).Infof("GCEDisks.Resize(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  6161. return fmt.Errorf("invalid GCE key (%+v)", key)
  6162. }
  6163. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Disks")
  6164. rk := &RateLimitKey{
  6165. ProjectID: projectID,
  6166. Operation: "Resize",
  6167. Version: meta.Version("ga"),
  6168. Service: "Disks",
  6169. }
  6170. klog.V(5).Infof("GCEDisks.Resize(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  6171. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  6172. klog.V(4).Infof("GCEDisks.Resize(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  6173. return err
  6174. }
  6175. call := g.s.GA.Disks.Resize(projectID, key.Zone, key.Name, arg0)
  6176. call.Context(ctx)
  6177. op, err := call.Do()
  6178. if err != nil {
  6179. klog.V(4).Infof("GCEDisks.Resize(%v, %v, ...) = %+v", ctx, key, err)
  6180. return err
  6181. }
  6182. err = g.s.WaitForCompletion(ctx, op)
  6183. klog.V(4).Infof("GCEDisks.Resize(%v, %v, ...) = %+v", ctx, key, err)
  6184. return err
  6185. }
  6186. // RegionDisks is an interface that allows for mocking of RegionDisks.
  6187. type RegionDisks interface {
  6188. Get(ctx context.Context, key *meta.Key) (*ga.Disk, error)
  6189. List(ctx context.Context, region string, fl *filter.F) ([]*ga.Disk, error)
  6190. Insert(ctx context.Context, key *meta.Key, obj *ga.Disk) error
  6191. Delete(ctx context.Context, key *meta.Key) error
  6192. Resize(context.Context, *meta.Key, *ga.RegionDisksResizeRequest) error
  6193. }
  6194. // NewMockRegionDisks returns a new mock for RegionDisks.
  6195. func NewMockRegionDisks(pr ProjectRouter, objs map[meta.Key]*MockRegionDisksObj) *MockRegionDisks {
  6196. mock := &MockRegionDisks{
  6197. ProjectRouter: pr,
  6198. Objects: objs,
  6199. GetError: map[meta.Key]error{},
  6200. InsertError: map[meta.Key]error{},
  6201. DeleteError: map[meta.Key]error{},
  6202. }
  6203. return mock
  6204. }
  6205. // MockRegionDisks is the mock for RegionDisks.
  6206. type MockRegionDisks struct {
  6207. Lock sync.Mutex
  6208. ProjectRouter ProjectRouter
  6209. // Objects maintained by the mock.
  6210. Objects map[meta.Key]*MockRegionDisksObj
  6211. // If an entry exists for the given key and operation, then the error
  6212. // will be returned instead of the operation.
  6213. GetError map[meta.Key]error
  6214. ListError *error
  6215. InsertError map[meta.Key]error
  6216. DeleteError map[meta.Key]error
  6217. // xxxHook allow you to intercept the standard processing of the mock in
  6218. // order to add your own logic. Return (true, _, _) to prevent the normal
  6219. // execution flow of the mock. Return (false, nil, nil) to continue with
  6220. // normal mock behavior/ after the hook function executes.
  6221. GetHook func(ctx context.Context, key *meta.Key, m *MockRegionDisks) (bool, *ga.Disk, error)
  6222. ListHook func(ctx context.Context, region string, fl *filter.F, m *MockRegionDisks) (bool, []*ga.Disk, error)
  6223. InsertHook func(ctx context.Context, key *meta.Key, obj *ga.Disk, m *MockRegionDisks) (bool, error)
  6224. DeleteHook func(ctx context.Context, key *meta.Key, m *MockRegionDisks) (bool, error)
  6225. ResizeHook func(context.Context, *meta.Key, *ga.RegionDisksResizeRequest, *MockRegionDisks) error
  6226. // X is extra state that can be used as part of the mock. Generated code
  6227. // will not use this field.
  6228. X interface{}
  6229. }
  6230. // Get returns the object from the mock.
  6231. func (m *MockRegionDisks) Get(ctx context.Context, key *meta.Key) (*ga.Disk, error) {
  6232. if m.GetHook != nil {
  6233. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  6234. klog.V(5).Infof("MockRegionDisks.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  6235. return obj, err
  6236. }
  6237. }
  6238. if !key.Valid() {
  6239. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  6240. }
  6241. m.Lock.Lock()
  6242. defer m.Lock.Unlock()
  6243. if err, ok := m.GetError[*key]; ok {
  6244. klog.V(5).Infof("MockRegionDisks.Get(%v, %s) = nil, %v", ctx, key, err)
  6245. return nil, err
  6246. }
  6247. if obj, ok := m.Objects[*key]; ok {
  6248. typedObj := obj.ToGA()
  6249. klog.V(5).Infof("MockRegionDisks.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  6250. return typedObj, nil
  6251. }
  6252. err := &googleapi.Error{
  6253. Code: http.StatusNotFound,
  6254. Message: fmt.Sprintf("MockRegionDisks %v not found", key),
  6255. }
  6256. klog.V(5).Infof("MockRegionDisks.Get(%v, %s) = nil, %v", ctx, key, err)
  6257. return nil, err
  6258. }
  6259. // List all of the objects in the mock in the given region.
  6260. func (m *MockRegionDisks) List(ctx context.Context, region string, fl *filter.F) ([]*ga.Disk, error) {
  6261. if m.ListHook != nil {
  6262. if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept {
  6263. klog.V(5).Infof("MockRegionDisks.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err)
  6264. return objs, err
  6265. }
  6266. }
  6267. m.Lock.Lock()
  6268. defer m.Lock.Unlock()
  6269. if m.ListError != nil {
  6270. err := *m.ListError
  6271. klog.V(5).Infof("MockRegionDisks.List(%v, %q, %v) = nil, %v", ctx, region, fl, err)
  6272. return nil, *m.ListError
  6273. }
  6274. var objs []*ga.Disk
  6275. for key, obj := range m.Objects {
  6276. if key.Region != region {
  6277. continue
  6278. }
  6279. if !fl.Match(obj.ToGA()) {
  6280. continue
  6281. }
  6282. objs = append(objs, obj.ToGA())
  6283. }
  6284. klog.V(5).Infof("MockRegionDisks.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs))
  6285. return objs, nil
  6286. }
  6287. // Insert is a mock for inserting/creating a new object.
  6288. func (m *MockRegionDisks) Insert(ctx context.Context, key *meta.Key, obj *ga.Disk) error {
  6289. if m.InsertHook != nil {
  6290. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  6291. klog.V(5).Infof("MockRegionDisks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  6292. return err
  6293. }
  6294. }
  6295. if !key.Valid() {
  6296. return fmt.Errorf("invalid GCE key (%+v)", key)
  6297. }
  6298. m.Lock.Lock()
  6299. defer m.Lock.Unlock()
  6300. if err, ok := m.InsertError[*key]; ok {
  6301. klog.V(5).Infof("MockRegionDisks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  6302. return err
  6303. }
  6304. if _, ok := m.Objects[*key]; ok {
  6305. err := &googleapi.Error{
  6306. Code: http.StatusConflict,
  6307. Message: fmt.Sprintf("MockRegionDisks %v exists", key),
  6308. }
  6309. klog.V(5).Infof("MockRegionDisks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  6310. return err
  6311. }
  6312. obj.Name = key.Name
  6313. projectID := m.ProjectRouter.ProjectID(ctx, "ga", "disks")
  6314. obj.SelfLink = SelfLink(meta.VersionGA, projectID, "disks", key)
  6315. m.Objects[*key] = &MockRegionDisksObj{obj}
  6316. klog.V(5).Infof("MockRegionDisks.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  6317. return nil
  6318. }
  6319. // Delete is a mock for deleting the object.
  6320. func (m *MockRegionDisks) Delete(ctx context.Context, key *meta.Key) error {
  6321. if m.DeleteHook != nil {
  6322. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  6323. klog.V(5).Infof("MockRegionDisks.Delete(%v, %v) = %v", ctx, key, err)
  6324. return err
  6325. }
  6326. }
  6327. if !key.Valid() {
  6328. return fmt.Errorf("invalid GCE key (%+v)", key)
  6329. }
  6330. m.Lock.Lock()
  6331. defer m.Lock.Unlock()
  6332. if err, ok := m.DeleteError[*key]; ok {
  6333. klog.V(5).Infof("MockRegionDisks.Delete(%v, %v) = %v", ctx, key, err)
  6334. return err
  6335. }
  6336. if _, ok := m.Objects[*key]; !ok {
  6337. err := &googleapi.Error{
  6338. Code: http.StatusNotFound,
  6339. Message: fmt.Sprintf("MockRegionDisks %v not found", key),
  6340. }
  6341. klog.V(5).Infof("MockRegionDisks.Delete(%v, %v) = %v", ctx, key, err)
  6342. return err
  6343. }
  6344. delete(m.Objects, *key)
  6345. klog.V(5).Infof("MockRegionDisks.Delete(%v, %v) = nil", ctx, key)
  6346. return nil
  6347. }
  6348. // Obj wraps the object for use in the mock.
  6349. func (m *MockRegionDisks) Obj(o *ga.Disk) *MockRegionDisksObj {
  6350. return &MockRegionDisksObj{o}
  6351. }
  6352. // Resize is a mock for the corresponding method.
  6353. func (m *MockRegionDisks) Resize(ctx context.Context, key *meta.Key, arg0 *ga.RegionDisksResizeRequest) error {
  6354. if m.ResizeHook != nil {
  6355. return m.ResizeHook(ctx, key, arg0, m)
  6356. }
  6357. return nil
  6358. }
  6359. // GCERegionDisks is a simplifying adapter for the GCE RegionDisks.
  6360. type GCERegionDisks struct {
  6361. s *Service
  6362. }
  6363. // Get the Disk named by key.
  6364. func (g *GCERegionDisks) Get(ctx context.Context, key *meta.Key) (*ga.Disk, error) {
  6365. klog.V(5).Infof("GCERegionDisks.Get(%v, %v): called", ctx, key)
  6366. if !key.Valid() {
  6367. klog.V(2).Infof("GCERegionDisks.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  6368. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  6369. }
  6370. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionDisks")
  6371. rk := &RateLimitKey{
  6372. ProjectID: projectID,
  6373. Operation: "Get",
  6374. Version: meta.Version("ga"),
  6375. Service: "RegionDisks",
  6376. }
  6377. klog.V(5).Infof("GCERegionDisks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  6378. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  6379. klog.V(4).Infof("GCERegionDisks.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  6380. return nil, err
  6381. }
  6382. call := g.s.GA.RegionDisks.Get(projectID, key.Region, key.Name)
  6383. call.Context(ctx)
  6384. v, err := call.Do()
  6385. klog.V(4).Infof("GCERegionDisks.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  6386. return v, err
  6387. }
  6388. // List all Disk objects.
  6389. func (g *GCERegionDisks) List(ctx context.Context, region string, fl *filter.F) ([]*ga.Disk, error) {
  6390. klog.V(5).Infof("GCERegionDisks.List(%v, %v, %v) called", ctx, region, fl)
  6391. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionDisks")
  6392. rk := &RateLimitKey{
  6393. ProjectID: projectID,
  6394. Operation: "List",
  6395. Version: meta.Version("ga"),
  6396. Service: "RegionDisks",
  6397. }
  6398. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  6399. return nil, err
  6400. }
  6401. klog.V(5).Infof("GCERegionDisks.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk)
  6402. call := g.s.GA.RegionDisks.List(projectID, region)
  6403. if fl != filter.None {
  6404. call.Filter(fl.String())
  6405. }
  6406. var all []*ga.Disk
  6407. f := func(l *ga.DiskList) error {
  6408. klog.V(5).Infof("GCERegionDisks.List(%v, ..., %v): page %+v", ctx, fl, l)
  6409. all = append(all, l.Items...)
  6410. return nil
  6411. }
  6412. if err := call.Pages(ctx, f); err != nil {
  6413. klog.V(4).Infof("GCERegionDisks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  6414. return nil, err
  6415. }
  6416. if klog.V(4) {
  6417. klog.V(4).Infof("GCERegionDisks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  6418. } else if klog.V(5) {
  6419. var asStr []string
  6420. for _, o := range all {
  6421. asStr = append(asStr, fmt.Sprintf("%+v", o))
  6422. }
  6423. klog.V(5).Infof("GCERegionDisks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  6424. }
  6425. return all, nil
  6426. }
  6427. // Insert Disk with key of value obj.
  6428. func (g *GCERegionDisks) Insert(ctx context.Context, key *meta.Key, obj *ga.Disk) error {
  6429. klog.V(5).Infof("GCERegionDisks.Insert(%v, %v, %+v): called", ctx, key, obj)
  6430. if !key.Valid() {
  6431. klog.V(2).Infof("GCERegionDisks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  6432. return fmt.Errorf("invalid GCE key (%+v)", key)
  6433. }
  6434. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionDisks")
  6435. rk := &RateLimitKey{
  6436. ProjectID: projectID,
  6437. Operation: "Insert",
  6438. Version: meta.Version("ga"),
  6439. Service: "RegionDisks",
  6440. }
  6441. klog.V(5).Infof("GCERegionDisks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  6442. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  6443. klog.V(4).Infof("GCERegionDisks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  6444. return err
  6445. }
  6446. obj.Name = key.Name
  6447. call := g.s.GA.RegionDisks.Insert(projectID, key.Region, obj)
  6448. call.Context(ctx)
  6449. op, err := call.Do()
  6450. if err != nil {
  6451. klog.V(4).Infof("GCERegionDisks.Insert(%v, %v, ...) = %+v", ctx, key, err)
  6452. return err
  6453. }
  6454. err = g.s.WaitForCompletion(ctx, op)
  6455. klog.V(4).Infof("GCERegionDisks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  6456. return err
  6457. }
  6458. // Delete the Disk referenced by key.
  6459. func (g *GCERegionDisks) Delete(ctx context.Context, key *meta.Key) error {
  6460. klog.V(5).Infof("GCERegionDisks.Delete(%v, %v): called", ctx, key)
  6461. if !key.Valid() {
  6462. klog.V(2).Infof("GCERegionDisks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  6463. return fmt.Errorf("invalid GCE key (%+v)", key)
  6464. }
  6465. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionDisks")
  6466. rk := &RateLimitKey{
  6467. ProjectID: projectID,
  6468. Operation: "Delete",
  6469. Version: meta.Version("ga"),
  6470. Service: "RegionDisks",
  6471. }
  6472. klog.V(5).Infof("GCERegionDisks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  6473. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  6474. klog.V(4).Infof("GCERegionDisks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  6475. return err
  6476. }
  6477. call := g.s.GA.RegionDisks.Delete(projectID, key.Region, key.Name)
  6478. call.Context(ctx)
  6479. op, err := call.Do()
  6480. if err != nil {
  6481. klog.V(4).Infof("GCERegionDisks.Delete(%v, %v) = %v", ctx, key, err)
  6482. return err
  6483. }
  6484. err = g.s.WaitForCompletion(ctx, op)
  6485. klog.V(4).Infof("GCERegionDisks.Delete(%v, %v) = %v", ctx, key, err)
  6486. return err
  6487. }
  6488. // Resize is a method on GCERegionDisks.
  6489. func (g *GCERegionDisks) Resize(ctx context.Context, key *meta.Key, arg0 *ga.RegionDisksResizeRequest) error {
  6490. klog.V(5).Infof("GCERegionDisks.Resize(%v, %v, ...): called", ctx, key)
  6491. if !key.Valid() {
  6492. klog.V(2).Infof("GCERegionDisks.Resize(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  6493. return fmt.Errorf("invalid GCE key (%+v)", key)
  6494. }
  6495. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionDisks")
  6496. rk := &RateLimitKey{
  6497. ProjectID: projectID,
  6498. Operation: "Resize",
  6499. Version: meta.Version("ga"),
  6500. Service: "RegionDisks",
  6501. }
  6502. klog.V(5).Infof("GCERegionDisks.Resize(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  6503. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  6504. klog.V(4).Infof("GCERegionDisks.Resize(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  6505. return err
  6506. }
  6507. call := g.s.GA.RegionDisks.Resize(projectID, key.Region, key.Name, arg0)
  6508. call.Context(ctx)
  6509. op, err := call.Do()
  6510. if err != nil {
  6511. klog.V(4).Infof("GCERegionDisks.Resize(%v, %v, ...) = %+v", ctx, key, err)
  6512. return err
  6513. }
  6514. err = g.s.WaitForCompletion(ctx, op)
  6515. klog.V(4).Infof("GCERegionDisks.Resize(%v, %v, ...) = %+v", ctx, key, err)
  6516. return err
  6517. }
  6518. // Firewalls is an interface that allows for mocking of Firewalls.
  6519. type Firewalls interface {
  6520. Get(ctx context.Context, key *meta.Key) (*ga.Firewall, error)
  6521. List(ctx context.Context, fl *filter.F) ([]*ga.Firewall, error)
  6522. Insert(ctx context.Context, key *meta.Key, obj *ga.Firewall) error
  6523. Delete(ctx context.Context, key *meta.Key) error
  6524. Update(context.Context, *meta.Key, *ga.Firewall) error
  6525. }
  6526. // NewMockFirewalls returns a new mock for Firewalls.
  6527. func NewMockFirewalls(pr ProjectRouter, objs map[meta.Key]*MockFirewallsObj) *MockFirewalls {
  6528. mock := &MockFirewalls{
  6529. ProjectRouter: pr,
  6530. Objects: objs,
  6531. GetError: map[meta.Key]error{},
  6532. InsertError: map[meta.Key]error{},
  6533. DeleteError: map[meta.Key]error{},
  6534. }
  6535. return mock
  6536. }
  6537. // MockFirewalls is the mock for Firewalls.
  6538. type MockFirewalls struct {
  6539. Lock sync.Mutex
  6540. ProjectRouter ProjectRouter
  6541. // Objects maintained by the mock.
  6542. Objects map[meta.Key]*MockFirewallsObj
  6543. // If an entry exists for the given key and operation, then the error
  6544. // will be returned instead of the operation.
  6545. GetError map[meta.Key]error
  6546. ListError *error
  6547. InsertError map[meta.Key]error
  6548. DeleteError map[meta.Key]error
  6549. // xxxHook allow you to intercept the standard processing of the mock in
  6550. // order to add your own logic. Return (true, _, _) to prevent the normal
  6551. // execution flow of the mock. Return (false, nil, nil) to continue with
  6552. // normal mock behavior/ after the hook function executes.
  6553. GetHook func(ctx context.Context, key *meta.Key, m *MockFirewalls) (bool, *ga.Firewall, error)
  6554. ListHook func(ctx context.Context, fl *filter.F, m *MockFirewalls) (bool, []*ga.Firewall, error)
  6555. InsertHook func(ctx context.Context, key *meta.Key, obj *ga.Firewall, m *MockFirewalls) (bool, error)
  6556. DeleteHook func(ctx context.Context, key *meta.Key, m *MockFirewalls) (bool, error)
  6557. UpdateHook func(context.Context, *meta.Key, *ga.Firewall, *MockFirewalls) error
  6558. // X is extra state that can be used as part of the mock. Generated code
  6559. // will not use this field.
  6560. X interface{}
  6561. }
  6562. // Get returns the object from the mock.
  6563. func (m *MockFirewalls) Get(ctx context.Context, key *meta.Key) (*ga.Firewall, error) {
  6564. if m.GetHook != nil {
  6565. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  6566. klog.V(5).Infof("MockFirewalls.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  6567. return obj, err
  6568. }
  6569. }
  6570. if !key.Valid() {
  6571. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  6572. }
  6573. m.Lock.Lock()
  6574. defer m.Lock.Unlock()
  6575. if err, ok := m.GetError[*key]; ok {
  6576. klog.V(5).Infof("MockFirewalls.Get(%v, %s) = nil, %v", ctx, key, err)
  6577. return nil, err
  6578. }
  6579. if obj, ok := m.Objects[*key]; ok {
  6580. typedObj := obj.ToGA()
  6581. klog.V(5).Infof("MockFirewalls.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  6582. return typedObj, nil
  6583. }
  6584. err := &googleapi.Error{
  6585. Code: http.StatusNotFound,
  6586. Message: fmt.Sprintf("MockFirewalls %v not found", key),
  6587. }
  6588. klog.V(5).Infof("MockFirewalls.Get(%v, %s) = nil, %v", ctx, key, err)
  6589. return nil, err
  6590. }
  6591. // List all of the objects in the mock.
  6592. func (m *MockFirewalls) List(ctx context.Context, fl *filter.F) ([]*ga.Firewall, error) {
  6593. if m.ListHook != nil {
  6594. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  6595. klog.V(5).Infof("MockFirewalls.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  6596. return objs, err
  6597. }
  6598. }
  6599. m.Lock.Lock()
  6600. defer m.Lock.Unlock()
  6601. if m.ListError != nil {
  6602. err := *m.ListError
  6603. klog.V(5).Infof("MockFirewalls.List(%v, %v) = nil, %v", ctx, fl, err)
  6604. return nil, *m.ListError
  6605. }
  6606. var objs []*ga.Firewall
  6607. for _, obj := range m.Objects {
  6608. if !fl.Match(obj.ToGA()) {
  6609. continue
  6610. }
  6611. objs = append(objs, obj.ToGA())
  6612. }
  6613. klog.V(5).Infof("MockFirewalls.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  6614. return objs, nil
  6615. }
  6616. // Insert is a mock for inserting/creating a new object.
  6617. func (m *MockFirewalls) Insert(ctx context.Context, key *meta.Key, obj *ga.Firewall) error {
  6618. if m.InsertHook != nil {
  6619. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  6620. klog.V(5).Infof("MockFirewalls.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  6621. return err
  6622. }
  6623. }
  6624. if !key.Valid() {
  6625. return fmt.Errorf("invalid GCE key (%+v)", key)
  6626. }
  6627. m.Lock.Lock()
  6628. defer m.Lock.Unlock()
  6629. if err, ok := m.InsertError[*key]; ok {
  6630. klog.V(5).Infof("MockFirewalls.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  6631. return err
  6632. }
  6633. if _, ok := m.Objects[*key]; ok {
  6634. err := &googleapi.Error{
  6635. Code: http.StatusConflict,
  6636. Message: fmt.Sprintf("MockFirewalls %v exists", key),
  6637. }
  6638. klog.V(5).Infof("MockFirewalls.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  6639. return err
  6640. }
  6641. obj.Name = key.Name
  6642. projectID := m.ProjectRouter.ProjectID(ctx, "ga", "firewalls")
  6643. obj.SelfLink = SelfLink(meta.VersionGA, projectID, "firewalls", key)
  6644. m.Objects[*key] = &MockFirewallsObj{obj}
  6645. klog.V(5).Infof("MockFirewalls.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  6646. return nil
  6647. }
  6648. // Delete is a mock for deleting the object.
  6649. func (m *MockFirewalls) Delete(ctx context.Context, key *meta.Key) error {
  6650. if m.DeleteHook != nil {
  6651. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  6652. klog.V(5).Infof("MockFirewalls.Delete(%v, %v) = %v", ctx, key, err)
  6653. return err
  6654. }
  6655. }
  6656. if !key.Valid() {
  6657. return fmt.Errorf("invalid GCE key (%+v)", key)
  6658. }
  6659. m.Lock.Lock()
  6660. defer m.Lock.Unlock()
  6661. if err, ok := m.DeleteError[*key]; ok {
  6662. klog.V(5).Infof("MockFirewalls.Delete(%v, %v) = %v", ctx, key, err)
  6663. return err
  6664. }
  6665. if _, ok := m.Objects[*key]; !ok {
  6666. err := &googleapi.Error{
  6667. Code: http.StatusNotFound,
  6668. Message: fmt.Sprintf("MockFirewalls %v not found", key),
  6669. }
  6670. klog.V(5).Infof("MockFirewalls.Delete(%v, %v) = %v", ctx, key, err)
  6671. return err
  6672. }
  6673. delete(m.Objects, *key)
  6674. klog.V(5).Infof("MockFirewalls.Delete(%v, %v) = nil", ctx, key)
  6675. return nil
  6676. }
  6677. // Obj wraps the object for use in the mock.
  6678. func (m *MockFirewalls) Obj(o *ga.Firewall) *MockFirewallsObj {
  6679. return &MockFirewallsObj{o}
  6680. }
  6681. // Update is a mock for the corresponding method.
  6682. func (m *MockFirewalls) Update(ctx context.Context, key *meta.Key, arg0 *ga.Firewall) error {
  6683. if m.UpdateHook != nil {
  6684. return m.UpdateHook(ctx, key, arg0, m)
  6685. }
  6686. return nil
  6687. }
  6688. // GCEFirewalls is a simplifying adapter for the GCE Firewalls.
  6689. type GCEFirewalls struct {
  6690. s *Service
  6691. }
  6692. // Get the Firewall named by key.
  6693. func (g *GCEFirewalls) Get(ctx context.Context, key *meta.Key) (*ga.Firewall, error) {
  6694. klog.V(5).Infof("GCEFirewalls.Get(%v, %v): called", ctx, key)
  6695. if !key.Valid() {
  6696. klog.V(2).Infof("GCEFirewalls.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  6697. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  6698. }
  6699. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Firewalls")
  6700. rk := &RateLimitKey{
  6701. ProjectID: projectID,
  6702. Operation: "Get",
  6703. Version: meta.Version("ga"),
  6704. Service: "Firewalls",
  6705. }
  6706. klog.V(5).Infof("GCEFirewalls.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  6707. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  6708. klog.V(4).Infof("GCEFirewalls.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  6709. return nil, err
  6710. }
  6711. call := g.s.GA.Firewalls.Get(projectID, key.Name)
  6712. call.Context(ctx)
  6713. v, err := call.Do()
  6714. klog.V(4).Infof("GCEFirewalls.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  6715. return v, err
  6716. }
  6717. // List all Firewall objects.
  6718. func (g *GCEFirewalls) List(ctx context.Context, fl *filter.F) ([]*ga.Firewall, error) {
  6719. klog.V(5).Infof("GCEFirewalls.List(%v, %v) called", ctx, fl)
  6720. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Firewalls")
  6721. rk := &RateLimitKey{
  6722. ProjectID: projectID,
  6723. Operation: "List",
  6724. Version: meta.Version("ga"),
  6725. Service: "Firewalls",
  6726. }
  6727. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  6728. return nil, err
  6729. }
  6730. klog.V(5).Infof("GCEFirewalls.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  6731. call := g.s.GA.Firewalls.List(projectID)
  6732. if fl != filter.None {
  6733. call.Filter(fl.String())
  6734. }
  6735. var all []*ga.Firewall
  6736. f := func(l *ga.FirewallList) error {
  6737. klog.V(5).Infof("GCEFirewalls.List(%v, ..., %v): page %+v", ctx, fl, l)
  6738. all = append(all, l.Items...)
  6739. return nil
  6740. }
  6741. if err := call.Pages(ctx, f); err != nil {
  6742. klog.V(4).Infof("GCEFirewalls.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  6743. return nil, err
  6744. }
  6745. if klog.V(4) {
  6746. klog.V(4).Infof("GCEFirewalls.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  6747. } else if klog.V(5) {
  6748. var asStr []string
  6749. for _, o := range all {
  6750. asStr = append(asStr, fmt.Sprintf("%+v", o))
  6751. }
  6752. klog.V(5).Infof("GCEFirewalls.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  6753. }
  6754. return all, nil
  6755. }
  6756. // Insert Firewall with key of value obj.
  6757. func (g *GCEFirewalls) Insert(ctx context.Context, key *meta.Key, obj *ga.Firewall) error {
  6758. klog.V(5).Infof("GCEFirewalls.Insert(%v, %v, %+v): called", ctx, key, obj)
  6759. if !key.Valid() {
  6760. klog.V(2).Infof("GCEFirewalls.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  6761. return fmt.Errorf("invalid GCE key (%+v)", key)
  6762. }
  6763. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Firewalls")
  6764. rk := &RateLimitKey{
  6765. ProjectID: projectID,
  6766. Operation: "Insert",
  6767. Version: meta.Version("ga"),
  6768. Service: "Firewalls",
  6769. }
  6770. klog.V(5).Infof("GCEFirewalls.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  6771. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  6772. klog.V(4).Infof("GCEFirewalls.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  6773. return err
  6774. }
  6775. obj.Name = key.Name
  6776. call := g.s.GA.Firewalls.Insert(projectID, obj)
  6777. call.Context(ctx)
  6778. op, err := call.Do()
  6779. if err != nil {
  6780. klog.V(4).Infof("GCEFirewalls.Insert(%v, %v, ...) = %+v", ctx, key, err)
  6781. return err
  6782. }
  6783. err = g.s.WaitForCompletion(ctx, op)
  6784. klog.V(4).Infof("GCEFirewalls.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  6785. return err
  6786. }
  6787. // Delete the Firewall referenced by key.
  6788. func (g *GCEFirewalls) Delete(ctx context.Context, key *meta.Key) error {
  6789. klog.V(5).Infof("GCEFirewalls.Delete(%v, %v): called", ctx, key)
  6790. if !key.Valid() {
  6791. klog.V(2).Infof("GCEFirewalls.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  6792. return fmt.Errorf("invalid GCE key (%+v)", key)
  6793. }
  6794. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Firewalls")
  6795. rk := &RateLimitKey{
  6796. ProjectID: projectID,
  6797. Operation: "Delete",
  6798. Version: meta.Version("ga"),
  6799. Service: "Firewalls",
  6800. }
  6801. klog.V(5).Infof("GCEFirewalls.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  6802. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  6803. klog.V(4).Infof("GCEFirewalls.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  6804. return err
  6805. }
  6806. call := g.s.GA.Firewalls.Delete(projectID, key.Name)
  6807. call.Context(ctx)
  6808. op, err := call.Do()
  6809. if err != nil {
  6810. klog.V(4).Infof("GCEFirewalls.Delete(%v, %v) = %v", ctx, key, err)
  6811. return err
  6812. }
  6813. err = g.s.WaitForCompletion(ctx, op)
  6814. klog.V(4).Infof("GCEFirewalls.Delete(%v, %v) = %v", ctx, key, err)
  6815. return err
  6816. }
  6817. // Update is a method on GCEFirewalls.
  6818. func (g *GCEFirewalls) Update(ctx context.Context, key *meta.Key, arg0 *ga.Firewall) error {
  6819. klog.V(5).Infof("GCEFirewalls.Update(%v, %v, ...): called", ctx, key)
  6820. if !key.Valid() {
  6821. klog.V(2).Infof("GCEFirewalls.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  6822. return fmt.Errorf("invalid GCE key (%+v)", key)
  6823. }
  6824. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Firewalls")
  6825. rk := &RateLimitKey{
  6826. ProjectID: projectID,
  6827. Operation: "Update",
  6828. Version: meta.Version("ga"),
  6829. Service: "Firewalls",
  6830. }
  6831. klog.V(5).Infof("GCEFirewalls.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  6832. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  6833. klog.V(4).Infof("GCEFirewalls.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  6834. return err
  6835. }
  6836. call := g.s.GA.Firewalls.Update(projectID, key.Name, arg0)
  6837. call.Context(ctx)
  6838. op, err := call.Do()
  6839. if err != nil {
  6840. klog.V(4).Infof("GCEFirewalls.Update(%v, %v, ...) = %+v", ctx, key, err)
  6841. return err
  6842. }
  6843. err = g.s.WaitForCompletion(ctx, op)
  6844. klog.V(4).Infof("GCEFirewalls.Update(%v, %v, ...) = %+v", ctx, key, err)
  6845. return err
  6846. }
  6847. // ForwardingRules is an interface that allows for mocking of ForwardingRules.
  6848. type ForwardingRules interface {
  6849. Get(ctx context.Context, key *meta.Key) (*ga.ForwardingRule, error)
  6850. List(ctx context.Context, region string, fl *filter.F) ([]*ga.ForwardingRule, error)
  6851. Insert(ctx context.Context, key *meta.Key, obj *ga.ForwardingRule) error
  6852. Delete(ctx context.Context, key *meta.Key) error
  6853. SetTarget(context.Context, *meta.Key, *ga.TargetReference) error
  6854. }
  6855. // NewMockForwardingRules returns a new mock for ForwardingRules.
  6856. func NewMockForwardingRules(pr ProjectRouter, objs map[meta.Key]*MockForwardingRulesObj) *MockForwardingRules {
  6857. mock := &MockForwardingRules{
  6858. ProjectRouter: pr,
  6859. Objects: objs,
  6860. GetError: map[meta.Key]error{},
  6861. InsertError: map[meta.Key]error{},
  6862. DeleteError: map[meta.Key]error{},
  6863. }
  6864. return mock
  6865. }
  6866. // MockForwardingRules is the mock for ForwardingRules.
  6867. type MockForwardingRules struct {
  6868. Lock sync.Mutex
  6869. ProjectRouter ProjectRouter
  6870. // Objects maintained by the mock.
  6871. Objects map[meta.Key]*MockForwardingRulesObj
  6872. // If an entry exists for the given key and operation, then the error
  6873. // will be returned instead of the operation.
  6874. GetError map[meta.Key]error
  6875. ListError *error
  6876. InsertError map[meta.Key]error
  6877. DeleteError map[meta.Key]error
  6878. // xxxHook allow you to intercept the standard processing of the mock in
  6879. // order to add your own logic. Return (true, _, _) to prevent the normal
  6880. // execution flow of the mock. Return (false, nil, nil) to continue with
  6881. // normal mock behavior/ after the hook function executes.
  6882. GetHook func(ctx context.Context, key *meta.Key, m *MockForwardingRules) (bool, *ga.ForwardingRule, error)
  6883. ListHook func(ctx context.Context, region string, fl *filter.F, m *MockForwardingRules) (bool, []*ga.ForwardingRule, error)
  6884. InsertHook func(ctx context.Context, key *meta.Key, obj *ga.ForwardingRule, m *MockForwardingRules) (bool, error)
  6885. DeleteHook func(ctx context.Context, key *meta.Key, m *MockForwardingRules) (bool, error)
  6886. SetTargetHook func(context.Context, *meta.Key, *ga.TargetReference, *MockForwardingRules) error
  6887. // X is extra state that can be used as part of the mock. Generated code
  6888. // will not use this field.
  6889. X interface{}
  6890. }
  6891. // Get returns the object from the mock.
  6892. func (m *MockForwardingRules) Get(ctx context.Context, key *meta.Key) (*ga.ForwardingRule, error) {
  6893. if m.GetHook != nil {
  6894. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  6895. klog.V(5).Infof("MockForwardingRules.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  6896. return obj, err
  6897. }
  6898. }
  6899. if !key.Valid() {
  6900. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  6901. }
  6902. m.Lock.Lock()
  6903. defer m.Lock.Unlock()
  6904. if err, ok := m.GetError[*key]; ok {
  6905. klog.V(5).Infof("MockForwardingRules.Get(%v, %s) = nil, %v", ctx, key, err)
  6906. return nil, err
  6907. }
  6908. if obj, ok := m.Objects[*key]; ok {
  6909. typedObj := obj.ToGA()
  6910. klog.V(5).Infof("MockForwardingRules.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  6911. return typedObj, nil
  6912. }
  6913. err := &googleapi.Error{
  6914. Code: http.StatusNotFound,
  6915. Message: fmt.Sprintf("MockForwardingRules %v not found", key),
  6916. }
  6917. klog.V(5).Infof("MockForwardingRules.Get(%v, %s) = nil, %v", ctx, key, err)
  6918. return nil, err
  6919. }
  6920. // List all of the objects in the mock in the given region.
  6921. func (m *MockForwardingRules) List(ctx context.Context, region string, fl *filter.F) ([]*ga.ForwardingRule, error) {
  6922. if m.ListHook != nil {
  6923. if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept {
  6924. klog.V(5).Infof("MockForwardingRules.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err)
  6925. return objs, err
  6926. }
  6927. }
  6928. m.Lock.Lock()
  6929. defer m.Lock.Unlock()
  6930. if m.ListError != nil {
  6931. err := *m.ListError
  6932. klog.V(5).Infof("MockForwardingRules.List(%v, %q, %v) = nil, %v", ctx, region, fl, err)
  6933. return nil, *m.ListError
  6934. }
  6935. var objs []*ga.ForwardingRule
  6936. for key, obj := range m.Objects {
  6937. if key.Region != region {
  6938. continue
  6939. }
  6940. if !fl.Match(obj.ToGA()) {
  6941. continue
  6942. }
  6943. objs = append(objs, obj.ToGA())
  6944. }
  6945. klog.V(5).Infof("MockForwardingRules.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs))
  6946. return objs, nil
  6947. }
  6948. // Insert is a mock for inserting/creating a new object.
  6949. func (m *MockForwardingRules) Insert(ctx context.Context, key *meta.Key, obj *ga.ForwardingRule) error {
  6950. if m.InsertHook != nil {
  6951. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  6952. klog.V(5).Infof("MockForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  6953. return err
  6954. }
  6955. }
  6956. if !key.Valid() {
  6957. return fmt.Errorf("invalid GCE key (%+v)", key)
  6958. }
  6959. m.Lock.Lock()
  6960. defer m.Lock.Unlock()
  6961. if err, ok := m.InsertError[*key]; ok {
  6962. klog.V(5).Infof("MockForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  6963. return err
  6964. }
  6965. if _, ok := m.Objects[*key]; ok {
  6966. err := &googleapi.Error{
  6967. Code: http.StatusConflict,
  6968. Message: fmt.Sprintf("MockForwardingRules %v exists", key),
  6969. }
  6970. klog.V(5).Infof("MockForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  6971. return err
  6972. }
  6973. obj.Name = key.Name
  6974. projectID := m.ProjectRouter.ProjectID(ctx, "ga", "forwardingRules")
  6975. obj.SelfLink = SelfLink(meta.VersionGA, projectID, "forwardingRules", key)
  6976. m.Objects[*key] = &MockForwardingRulesObj{obj}
  6977. klog.V(5).Infof("MockForwardingRules.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  6978. return nil
  6979. }
  6980. // Delete is a mock for deleting the object.
  6981. func (m *MockForwardingRules) Delete(ctx context.Context, key *meta.Key) error {
  6982. if m.DeleteHook != nil {
  6983. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  6984. klog.V(5).Infof("MockForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  6985. return err
  6986. }
  6987. }
  6988. if !key.Valid() {
  6989. return fmt.Errorf("invalid GCE key (%+v)", key)
  6990. }
  6991. m.Lock.Lock()
  6992. defer m.Lock.Unlock()
  6993. if err, ok := m.DeleteError[*key]; ok {
  6994. klog.V(5).Infof("MockForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  6995. return err
  6996. }
  6997. if _, ok := m.Objects[*key]; !ok {
  6998. err := &googleapi.Error{
  6999. Code: http.StatusNotFound,
  7000. Message: fmt.Sprintf("MockForwardingRules %v not found", key),
  7001. }
  7002. klog.V(5).Infof("MockForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  7003. return err
  7004. }
  7005. delete(m.Objects, *key)
  7006. klog.V(5).Infof("MockForwardingRules.Delete(%v, %v) = nil", ctx, key)
  7007. return nil
  7008. }
  7009. // Obj wraps the object for use in the mock.
  7010. func (m *MockForwardingRules) Obj(o *ga.ForwardingRule) *MockForwardingRulesObj {
  7011. return &MockForwardingRulesObj{o}
  7012. }
  7013. // SetTarget is a mock for the corresponding method.
  7014. func (m *MockForwardingRules) SetTarget(ctx context.Context, key *meta.Key, arg0 *ga.TargetReference) error {
  7015. if m.SetTargetHook != nil {
  7016. return m.SetTargetHook(ctx, key, arg0, m)
  7017. }
  7018. return nil
  7019. }
  7020. // GCEForwardingRules is a simplifying adapter for the GCE ForwardingRules.
  7021. type GCEForwardingRules struct {
  7022. s *Service
  7023. }
  7024. // Get the ForwardingRule named by key.
  7025. func (g *GCEForwardingRules) Get(ctx context.Context, key *meta.Key) (*ga.ForwardingRule, error) {
  7026. klog.V(5).Infof("GCEForwardingRules.Get(%v, %v): called", ctx, key)
  7027. if !key.Valid() {
  7028. klog.V(2).Infof("GCEForwardingRules.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  7029. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  7030. }
  7031. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "ForwardingRules")
  7032. rk := &RateLimitKey{
  7033. ProjectID: projectID,
  7034. Operation: "Get",
  7035. Version: meta.Version("ga"),
  7036. Service: "ForwardingRules",
  7037. }
  7038. klog.V(5).Infof("GCEForwardingRules.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  7039. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  7040. klog.V(4).Infof("GCEForwardingRules.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  7041. return nil, err
  7042. }
  7043. call := g.s.GA.ForwardingRules.Get(projectID, key.Region, key.Name)
  7044. call.Context(ctx)
  7045. v, err := call.Do()
  7046. klog.V(4).Infof("GCEForwardingRules.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  7047. return v, err
  7048. }
  7049. // List all ForwardingRule objects.
  7050. func (g *GCEForwardingRules) List(ctx context.Context, region string, fl *filter.F) ([]*ga.ForwardingRule, error) {
  7051. klog.V(5).Infof("GCEForwardingRules.List(%v, %v, %v) called", ctx, region, fl)
  7052. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "ForwardingRules")
  7053. rk := &RateLimitKey{
  7054. ProjectID: projectID,
  7055. Operation: "List",
  7056. Version: meta.Version("ga"),
  7057. Service: "ForwardingRules",
  7058. }
  7059. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  7060. return nil, err
  7061. }
  7062. klog.V(5).Infof("GCEForwardingRules.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk)
  7063. call := g.s.GA.ForwardingRules.List(projectID, region)
  7064. if fl != filter.None {
  7065. call.Filter(fl.String())
  7066. }
  7067. var all []*ga.ForwardingRule
  7068. f := func(l *ga.ForwardingRuleList) error {
  7069. klog.V(5).Infof("GCEForwardingRules.List(%v, ..., %v): page %+v", ctx, fl, l)
  7070. all = append(all, l.Items...)
  7071. return nil
  7072. }
  7073. if err := call.Pages(ctx, f); err != nil {
  7074. klog.V(4).Infof("GCEForwardingRules.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  7075. return nil, err
  7076. }
  7077. if klog.V(4) {
  7078. klog.V(4).Infof("GCEForwardingRules.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  7079. } else if klog.V(5) {
  7080. var asStr []string
  7081. for _, o := range all {
  7082. asStr = append(asStr, fmt.Sprintf("%+v", o))
  7083. }
  7084. klog.V(5).Infof("GCEForwardingRules.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  7085. }
  7086. return all, nil
  7087. }
  7088. // Insert ForwardingRule with key of value obj.
  7089. func (g *GCEForwardingRules) Insert(ctx context.Context, key *meta.Key, obj *ga.ForwardingRule) error {
  7090. klog.V(5).Infof("GCEForwardingRules.Insert(%v, %v, %+v): called", ctx, key, obj)
  7091. if !key.Valid() {
  7092. klog.V(2).Infof("GCEForwardingRules.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  7093. return fmt.Errorf("invalid GCE key (%+v)", key)
  7094. }
  7095. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "ForwardingRules")
  7096. rk := &RateLimitKey{
  7097. ProjectID: projectID,
  7098. Operation: "Insert",
  7099. Version: meta.Version("ga"),
  7100. Service: "ForwardingRules",
  7101. }
  7102. klog.V(5).Infof("GCEForwardingRules.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  7103. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  7104. klog.V(4).Infof("GCEForwardingRules.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  7105. return err
  7106. }
  7107. obj.Name = key.Name
  7108. call := g.s.GA.ForwardingRules.Insert(projectID, key.Region, obj)
  7109. call.Context(ctx)
  7110. op, err := call.Do()
  7111. if err != nil {
  7112. klog.V(4).Infof("GCEForwardingRules.Insert(%v, %v, ...) = %+v", ctx, key, err)
  7113. return err
  7114. }
  7115. err = g.s.WaitForCompletion(ctx, op)
  7116. klog.V(4).Infof("GCEForwardingRules.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  7117. return err
  7118. }
  7119. // Delete the ForwardingRule referenced by key.
  7120. func (g *GCEForwardingRules) Delete(ctx context.Context, key *meta.Key) error {
  7121. klog.V(5).Infof("GCEForwardingRules.Delete(%v, %v): called", ctx, key)
  7122. if !key.Valid() {
  7123. klog.V(2).Infof("GCEForwardingRules.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  7124. return fmt.Errorf("invalid GCE key (%+v)", key)
  7125. }
  7126. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "ForwardingRules")
  7127. rk := &RateLimitKey{
  7128. ProjectID: projectID,
  7129. Operation: "Delete",
  7130. Version: meta.Version("ga"),
  7131. Service: "ForwardingRules",
  7132. }
  7133. klog.V(5).Infof("GCEForwardingRules.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  7134. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  7135. klog.V(4).Infof("GCEForwardingRules.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  7136. return err
  7137. }
  7138. call := g.s.GA.ForwardingRules.Delete(projectID, key.Region, key.Name)
  7139. call.Context(ctx)
  7140. op, err := call.Do()
  7141. if err != nil {
  7142. klog.V(4).Infof("GCEForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  7143. return err
  7144. }
  7145. err = g.s.WaitForCompletion(ctx, op)
  7146. klog.V(4).Infof("GCEForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  7147. return err
  7148. }
  7149. // SetTarget is a method on GCEForwardingRules.
  7150. func (g *GCEForwardingRules) SetTarget(ctx context.Context, key *meta.Key, arg0 *ga.TargetReference) error {
  7151. klog.V(5).Infof("GCEForwardingRules.SetTarget(%v, %v, ...): called", ctx, key)
  7152. if !key.Valid() {
  7153. klog.V(2).Infof("GCEForwardingRules.SetTarget(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  7154. return fmt.Errorf("invalid GCE key (%+v)", key)
  7155. }
  7156. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "ForwardingRules")
  7157. rk := &RateLimitKey{
  7158. ProjectID: projectID,
  7159. Operation: "SetTarget",
  7160. Version: meta.Version("ga"),
  7161. Service: "ForwardingRules",
  7162. }
  7163. klog.V(5).Infof("GCEForwardingRules.SetTarget(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  7164. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  7165. klog.V(4).Infof("GCEForwardingRules.SetTarget(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  7166. return err
  7167. }
  7168. call := g.s.GA.ForwardingRules.SetTarget(projectID, key.Region, key.Name, arg0)
  7169. call.Context(ctx)
  7170. op, err := call.Do()
  7171. if err != nil {
  7172. klog.V(4).Infof("GCEForwardingRules.SetTarget(%v, %v, ...) = %+v", ctx, key, err)
  7173. return err
  7174. }
  7175. err = g.s.WaitForCompletion(ctx, op)
  7176. klog.V(4).Infof("GCEForwardingRules.SetTarget(%v, %v, ...) = %+v", ctx, key, err)
  7177. return err
  7178. }
  7179. // AlphaForwardingRules is an interface that allows for mocking of ForwardingRules.
  7180. type AlphaForwardingRules interface {
  7181. Get(ctx context.Context, key *meta.Key) (*alpha.ForwardingRule, error)
  7182. List(ctx context.Context, region string, fl *filter.F) ([]*alpha.ForwardingRule, error)
  7183. Insert(ctx context.Context, key *meta.Key, obj *alpha.ForwardingRule) error
  7184. Delete(ctx context.Context, key *meta.Key) error
  7185. SetTarget(context.Context, *meta.Key, *alpha.TargetReference) error
  7186. }
  7187. // NewMockAlphaForwardingRules returns a new mock for ForwardingRules.
  7188. func NewMockAlphaForwardingRules(pr ProjectRouter, objs map[meta.Key]*MockForwardingRulesObj) *MockAlphaForwardingRules {
  7189. mock := &MockAlphaForwardingRules{
  7190. ProjectRouter: pr,
  7191. Objects: objs,
  7192. GetError: map[meta.Key]error{},
  7193. InsertError: map[meta.Key]error{},
  7194. DeleteError: map[meta.Key]error{},
  7195. }
  7196. return mock
  7197. }
  7198. // MockAlphaForwardingRules is the mock for ForwardingRules.
  7199. type MockAlphaForwardingRules struct {
  7200. Lock sync.Mutex
  7201. ProjectRouter ProjectRouter
  7202. // Objects maintained by the mock.
  7203. Objects map[meta.Key]*MockForwardingRulesObj
  7204. // If an entry exists for the given key and operation, then the error
  7205. // will be returned instead of the operation.
  7206. GetError map[meta.Key]error
  7207. ListError *error
  7208. InsertError map[meta.Key]error
  7209. DeleteError map[meta.Key]error
  7210. // xxxHook allow you to intercept the standard processing of the mock in
  7211. // order to add your own logic. Return (true, _, _) to prevent the normal
  7212. // execution flow of the mock. Return (false, nil, nil) to continue with
  7213. // normal mock behavior/ after the hook function executes.
  7214. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaForwardingRules) (bool, *alpha.ForwardingRule, error)
  7215. ListHook func(ctx context.Context, region string, fl *filter.F, m *MockAlphaForwardingRules) (bool, []*alpha.ForwardingRule, error)
  7216. InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.ForwardingRule, m *MockAlphaForwardingRules) (bool, error)
  7217. DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaForwardingRules) (bool, error)
  7218. SetTargetHook func(context.Context, *meta.Key, *alpha.TargetReference, *MockAlphaForwardingRules) error
  7219. // X is extra state that can be used as part of the mock. Generated code
  7220. // will not use this field.
  7221. X interface{}
  7222. }
  7223. // Get returns the object from the mock.
  7224. func (m *MockAlphaForwardingRules) Get(ctx context.Context, key *meta.Key) (*alpha.ForwardingRule, error) {
  7225. if m.GetHook != nil {
  7226. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  7227. klog.V(5).Infof("MockAlphaForwardingRules.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  7228. return obj, err
  7229. }
  7230. }
  7231. if !key.Valid() {
  7232. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  7233. }
  7234. m.Lock.Lock()
  7235. defer m.Lock.Unlock()
  7236. if err, ok := m.GetError[*key]; ok {
  7237. klog.V(5).Infof("MockAlphaForwardingRules.Get(%v, %s) = nil, %v", ctx, key, err)
  7238. return nil, err
  7239. }
  7240. if obj, ok := m.Objects[*key]; ok {
  7241. typedObj := obj.ToAlpha()
  7242. klog.V(5).Infof("MockAlphaForwardingRules.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  7243. return typedObj, nil
  7244. }
  7245. err := &googleapi.Error{
  7246. Code: http.StatusNotFound,
  7247. Message: fmt.Sprintf("MockAlphaForwardingRules %v not found", key),
  7248. }
  7249. klog.V(5).Infof("MockAlphaForwardingRules.Get(%v, %s) = nil, %v", ctx, key, err)
  7250. return nil, err
  7251. }
  7252. // List all of the objects in the mock in the given region.
  7253. func (m *MockAlphaForwardingRules) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.ForwardingRule, error) {
  7254. if m.ListHook != nil {
  7255. if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept {
  7256. klog.V(5).Infof("MockAlphaForwardingRules.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err)
  7257. return objs, err
  7258. }
  7259. }
  7260. m.Lock.Lock()
  7261. defer m.Lock.Unlock()
  7262. if m.ListError != nil {
  7263. err := *m.ListError
  7264. klog.V(5).Infof("MockAlphaForwardingRules.List(%v, %q, %v) = nil, %v", ctx, region, fl, err)
  7265. return nil, *m.ListError
  7266. }
  7267. var objs []*alpha.ForwardingRule
  7268. for key, obj := range m.Objects {
  7269. if key.Region != region {
  7270. continue
  7271. }
  7272. if !fl.Match(obj.ToAlpha()) {
  7273. continue
  7274. }
  7275. objs = append(objs, obj.ToAlpha())
  7276. }
  7277. klog.V(5).Infof("MockAlphaForwardingRules.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs))
  7278. return objs, nil
  7279. }
  7280. // Insert is a mock for inserting/creating a new object.
  7281. func (m *MockAlphaForwardingRules) Insert(ctx context.Context, key *meta.Key, obj *alpha.ForwardingRule) error {
  7282. if m.InsertHook != nil {
  7283. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  7284. klog.V(5).Infof("MockAlphaForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  7285. return err
  7286. }
  7287. }
  7288. if !key.Valid() {
  7289. return fmt.Errorf("invalid GCE key (%+v)", key)
  7290. }
  7291. m.Lock.Lock()
  7292. defer m.Lock.Unlock()
  7293. if err, ok := m.InsertError[*key]; ok {
  7294. klog.V(5).Infof("MockAlphaForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  7295. return err
  7296. }
  7297. if _, ok := m.Objects[*key]; ok {
  7298. err := &googleapi.Error{
  7299. Code: http.StatusConflict,
  7300. Message: fmt.Sprintf("MockAlphaForwardingRules %v exists", key),
  7301. }
  7302. klog.V(5).Infof("MockAlphaForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  7303. return err
  7304. }
  7305. obj.Name = key.Name
  7306. projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "forwardingRules")
  7307. obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "forwardingRules", key)
  7308. m.Objects[*key] = &MockForwardingRulesObj{obj}
  7309. klog.V(5).Infof("MockAlphaForwardingRules.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  7310. return nil
  7311. }
  7312. // Delete is a mock for deleting the object.
  7313. func (m *MockAlphaForwardingRules) Delete(ctx context.Context, key *meta.Key) error {
  7314. if m.DeleteHook != nil {
  7315. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  7316. klog.V(5).Infof("MockAlphaForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  7317. return err
  7318. }
  7319. }
  7320. if !key.Valid() {
  7321. return fmt.Errorf("invalid GCE key (%+v)", key)
  7322. }
  7323. m.Lock.Lock()
  7324. defer m.Lock.Unlock()
  7325. if err, ok := m.DeleteError[*key]; ok {
  7326. klog.V(5).Infof("MockAlphaForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  7327. return err
  7328. }
  7329. if _, ok := m.Objects[*key]; !ok {
  7330. err := &googleapi.Error{
  7331. Code: http.StatusNotFound,
  7332. Message: fmt.Sprintf("MockAlphaForwardingRules %v not found", key),
  7333. }
  7334. klog.V(5).Infof("MockAlphaForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  7335. return err
  7336. }
  7337. delete(m.Objects, *key)
  7338. klog.V(5).Infof("MockAlphaForwardingRules.Delete(%v, %v) = nil", ctx, key)
  7339. return nil
  7340. }
  7341. // Obj wraps the object for use in the mock.
  7342. func (m *MockAlphaForwardingRules) Obj(o *alpha.ForwardingRule) *MockForwardingRulesObj {
  7343. return &MockForwardingRulesObj{o}
  7344. }
  7345. // SetTarget is a mock for the corresponding method.
  7346. func (m *MockAlphaForwardingRules) SetTarget(ctx context.Context, key *meta.Key, arg0 *alpha.TargetReference) error {
  7347. if m.SetTargetHook != nil {
  7348. return m.SetTargetHook(ctx, key, arg0, m)
  7349. }
  7350. return nil
  7351. }
  7352. // GCEAlphaForwardingRules is a simplifying adapter for the GCE ForwardingRules.
  7353. type GCEAlphaForwardingRules struct {
  7354. s *Service
  7355. }
  7356. // Get the ForwardingRule named by key.
  7357. func (g *GCEAlphaForwardingRules) Get(ctx context.Context, key *meta.Key) (*alpha.ForwardingRule, error) {
  7358. klog.V(5).Infof("GCEAlphaForwardingRules.Get(%v, %v): called", ctx, key)
  7359. if !key.Valid() {
  7360. klog.V(2).Infof("GCEAlphaForwardingRules.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  7361. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  7362. }
  7363. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "ForwardingRules")
  7364. rk := &RateLimitKey{
  7365. ProjectID: projectID,
  7366. Operation: "Get",
  7367. Version: meta.Version("alpha"),
  7368. Service: "ForwardingRules",
  7369. }
  7370. klog.V(5).Infof("GCEAlphaForwardingRules.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  7371. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  7372. klog.V(4).Infof("GCEAlphaForwardingRules.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  7373. return nil, err
  7374. }
  7375. call := g.s.Alpha.ForwardingRules.Get(projectID, key.Region, key.Name)
  7376. call.Context(ctx)
  7377. v, err := call.Do()
  7378. klog.V(4).Infof("GCEAlphaForwardingRules.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  7379. return v, err
  7380. }
  7381. // List all ForwardingRule objects.
  7382. func (g *GCEAlphaForwardingRules) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.ForwardingRule, error) {
  7383. klog.V(5).Infof("GCEAlphaForwardingRules.List(%v, %v, %v) called", ctx, region, fl)
  7384. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "ForwardingRules")
  7385. rk := &RateLimitKey{
  7386. ProjectID: projectID,
  7387. Operation: "List",
  7388. Version: meta.Version("alpha"),
  7389. Service: "ForwardingRules",
  7390. }
  7391. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  7392. return nil, err
  7393. }
  7394. klog.V(5).Infof("GCEAlphaForwardingRules.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk)
  7395. call := g.s.Alpha.ForwardingRules.List(projectID, region)
  7396. if fl != filter.None {
  7397. call.Filter(fl.String())
  7398. }
  7399. var all []*alpha.ForwardingRule
  7400. f := func(l *alpha.ForwardingRuleList) error {
  7401. klog.V(5).Infof("GCEAlphaForwardingRules.List(%v, ..., %v): page %+v", ctx, fl, l)
  7402. all = append(all, l.Items...)
  7403. return nil
  7404. }
  7405. if err := call.Pages(ctx, f); err != nil {
  7406. klog.V(4).Infof("GCEAlphaForwardingRules.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  7407. return nil, err
  7408. }
  7409. if klog.V(4) {
  7410. klog.V(4).Infof("GCEAlphaForwardingRules.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  7411. } else if klog.V(5) {
  7412. var asStr []string
  7413. for _, o := range all {
  7414. asStr = append(asStr, fmt.Sprintf("%+v", o))
  7415. }
  7416. klog.V(5).Infof("GCEAlphaForwardingRules.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  7417. }
  7418. return all, nil
  7419. }
  7420. // Insert ForwardingRule with key of value obj.
  7421. func (g *GCEAlphaForwardingRules) Insert(ctx context.Context, key *meta.Key, obj *alpha.ForwardingRule) error {
  7422. klog.V(5).Infof("GCEAlphaForwardingRules.Insert(%v, %v, %+v): called", ctx, key, obj)
  7423. if !key.Valid() {
  7424. klog.V(2).Infof("GCEAlphaForwardingRules.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  7425. return fmt.Errorf("invalid GCE key (%+v)", key)
  7426. }
  7427. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "ForwardingRules")
  7428. rk := &RateLimitKey{
  7429. ProjectID: projectID,
  7430. Operation: "Insert",
  7431. Version: meta.Version("alpha"),
  7432. Service: "ForwardingRules",
  7433. }
  7434. klog.V(5).Infof("GCEAlphaForwardingRules.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  7435. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  7436. klog.V(4).Infof("GCEAlphaForwardingRules.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  7437. return err
  7438. }
  7439. obj.Name = key.Name
  7440. call := g.s.Alpha.ForwardingRules.Insert(projectID, key.Region, obj)
  7441. call.Context(ctx)
  7442. op, err := call.Do()
  7443. if err != nil {
  7444. klog.V(4).Infof("GCEAlphaForwardingRules.Insert(%v, %v, ...) = %+v", ctx, key, err)
  7445. return err
  7446. }
  7447. err = g.s.WaitForCompletion(ctx, op)
  7448. klog.V(4).Infof("GCEAlphaForwardingRules.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  7449. return err
  7450. }
  7451. // Delete the ForwardingRule referenced by key.
  7452. func (g *GCEAlphaForwardingRules) Delete(ctx context.Context, key *meta.Key) error {
  7453. klog.V(5).Infof("GCEAlphaForwardingRules.Delete(%v, %v): called", ctx, key)
  7454. if !key.Valid() {
  7455. klog.V(2).Infof("GCEAlphaForwardingRules.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  7456. return fmt.Errorf("invalid GCE key (%+v)", key)
  7457. }
  7458. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "ForwardingRules")
  7459. rk := &RateLimitKey{
  7460. ProjectID: projectID,
  7461. Operation: "Delete",
  7462. Version: meta.Version("alpha"),
  7463. Service: "ForwardingRules",
  7464. }
  7465. klog.V(5).Infof("GCEAlphaForwardingRules.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  7466. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  7467. klog.V(4).Infof("GCEAlphaForwardingRules.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  7468. return err
  7469. }
  7470. call := g.s.Alpha.ForwardingRules.Delete(projectID, key.Region, key.Name)
  7471. call.Context(ctx)
  7472. op, err := call.Do()
  7473. if err != nil {
  7474. klog.V(4).Infof("GCEAlphaForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  7475. return err
  7476. }
  7477. err = g.s.WaitForCompletion(ctx, op)
  7478. klog.V(4).Infof("GCEAlphaForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  7479. return err
  7480. }
  7481. // SetTarget is a method on GCEAlphaForwardingRules.
  7482. func (g *GCEAlphaForwardingRules) SetTarget(ctx context.Context, key *meta.Key, arg0 *alpha.TargetReference) error {
  7483. klog.V(5).Infof("GCEAlphaForwardingRules.SetTarget(%v, %v, ...): called", ctx, key)
  7484. if !key.Valid() {
  7485. klog.V(2).Infof("GCEAlphaForwardingRules.SetTarget(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  7486. return fmt.Errorf("invalid GCE key (%+v)", key)
  7487. }
  7488. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "ForwardingRules")
  7489. rk := &RateLimitKey{
  7490. ProjectID: projectID,
  7491. Operation: "SetTarget",
  7492. Version: meta.Version("alpha"),
  7493. Service: "ForwardingRules",
  7494. }
  7495. klog.V(5).Infof("GCEAlphaForwardingRules.SetTarget(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  7496. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  7497. klog.V(4).Infof("GCEAlphaForwardingRules.SetTarget(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  7498. return err
  7499. }
  7500. call := g.s.Alpha.ForwardingRules.SetTarget(projectID, key.Region, key.Name, arg0)
  7501. call.Context(ctx)
  7502. op, err := call.Do()
  7503. if err != nil {
  7504. klog.V(4).Infof("GCEAlphaForwardingRules.SetTarget(%v, %v, ...) = %+v", ctx, key, err)
  7505. return err
  7506. }
  7507. err = g.s.WaitForCompletion(ctx, op)
  7508. klog.V(4).Infof("GCEAlphaForwardingRules.SetTarget(%v, %v, ...) = %+v", ctx, key, err)
  7509. return err
  7510. }
  7511. // BetaForwardingRules is an interface that allows for mocking of ForwardingRules.
  7512. type BetaForwardingRules interface {
  7513. Get(ctx context.Context, key *meta.Key) (*beta.ForwardingRule, error)
  7514. List(ctx context.Context, region string, fl *filter.F) ([]*beta.ForwardingRule, error)
  7515. Insert(ctx context.Context, key *meta.Key, obj *beta.ForwardingRule) error
  7516. Delete(ctx context.Context, key *meta.Key) error
  7517. SetTarget(context.Context, *meta.Key, *beta.TargetReference) error
  7518. }
  7519. // NewMockBetaForwardingRules returns a new mock for ForwardingRules.
  7520. func NewMockBetaForwardingRules(pr ProjectRouter, objs map[meta.Key]*MockForwardingRulesObj) *MockBetaForwardingRules {
  7521. mock := &MockBetaForwardingRules{
  7522. ProjectRouter: pr,
  7523. Objects: objs,
  7524. GetError: map[meta.Key]error{},
  7525. InsertError: map[meta.Key]error{},
  7526. DeleteError: map[meta.Key]error{},
  7527. }
  7528. return mock
  7529. }
  7530. // MockBetaForwardingRules is the mock for ForwardingRules.
  7531. type MockBetaForwardingRules struct {
  7532. Lock sync.Mutex
  7533. ProjectRouter ProjectRouter
  7534. // Objects maintained by the mock.
  7535. Objects map[meta.Key]*MockForwardingRulesObj
  7536. // If an entry exists for the given key and operation, then the error
  7537. // will be returned instead of the operation.
  7538. GetError map[meta.Key]error
  7539. ListError *error
  7540. InsertError map[meta.Key]error
  7541. DeleteError map[meta.Key]error
  7542. // xxxHook allow you to intercept the standard processing of the mock in
  7543. // order to add your own logic. Return (true, _, _) to prevent the normal
  7544. // execution flow of the mock. Return (false, nil, nil) to continue with
  7545. // normal mock behavior/ after the hook function executes.
  7546. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaForwardingRules) (bool, *beta.ForwardingRule, error)
  7547. ListHook func(ctx context.Context, region string, fl *filter.F, m *MockBetaForwardingRules) (bool, []*beta.ForwardingRule, error)
  7548. InsertHook func(ctx context.Context, key *meta.Key, obj *beta.ForwardingRule, m *MockBetaForwardingRules) (bool, error)
  7549. DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaForwardingRules) (bool, error)
  7550. SetTargetHook func(context.Context, *meta.Key, *beta.TargetReference, *MockBetaForwardingRules) error
  7551. // X is extra state that can be used as part of the mock. Generated code
  7552. // will not use this field.
  7553. X interface{}
  7554. }
  7555. // Get returns the object from the mock.
  7556. func (m *MockBetaForwardingRules) Get(ctx context.Context, key *meta.Key) (*beta.ForwardingRule, error) {
  7557. if m.GetHook != nil {
  7558. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  7559. klog.V(5).Infof("MockBetaForwardingRules.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  7560. return obj, err
  7561. }
  7562. }
  7563. if !key.Valid() {
  7564. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  7565. }
  7566. m.Lock.Lock()
  7567. defer m.Lock.Unlock()
  7568. if err, ok := m.GetError[*key]; ok {
  7569. klog.V(5).Infof("MockBetaForwardingRules.Get(%v, %s) = nil, %v", ctx, key, err)
  7570. return nil, err
  7571. }
  7572. if obj, ok := m.Objects[*key]; ok {
  7573. typedObj := obj.ToBeta()
  7574. klog.V(5).Infof("MockBetaForwardingRules.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  7575. return typedObj, nil
  7576. }
  7577. err := &googleapi.Error{
  7578. Code: http.StatusNotFound,
  7579. Message: fmt.Sprintf("MockBetaForwardingRules %v not found", key),
  7580. }
  7581. klog.V(5).Infof("MockBetaForwardingRules.Get(%v, %s) = nil, %v", ctx, key, err)
  7582. return nil, err
  7583. }
  7584. // List all of the objects in the mock in the given region.
  7585. func (m *MockBetaForwardingRules) List(ctx context.Context, region string, fl *filter.F) ([]*beta.ForwardingRule, error) {
  7586. if m.ListHook != nil {
  7587. if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept {
  7588. klog.V(5).Infof("MockBetaForwardingRules.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err)
  7589. return objs, err
  7590. }
  7591. }
  7592. m.Lock.Lock()
  7593. defer m.Lock.Unlock()
  7594. if m.ListError != nil {
  7595. err := *m.ListError
  7596. klog.V(5).Infof("MockBetaForwardingRules.List(%v, %q, %v) = nil, %v", ctx, region, fl, err)
  7597. return nil, *m.ListError
  7598. }
  7599. var objs []*beta.ForwardingRule
  7600. for key, obj := range m.Objects {
  7601. if key.Region != region {
  7602. continue
  7603. }
  7604. if !fl.Match(obj.ToBeta()) {
  7605. continue
  7606. }
  7607. objs = append(objs, obj.ToBeta())
  7608. }
  7609. klog.V(5).Infof("MockBetaForwardingRules.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs))
  7610. return objs, nil
  7611. }
  7612. // Insert is a mock for inserting/creating a new object.
  7613. func (m *MockBetaForwardingRules) Insert(ctx context.Context, key *meta.Key, obj *beta.ForwardingRule) error {
  7614. if m.InsertHook != nil {
  7615. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  7616. klog.V(5).Infof("MockBetaForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  7617. return err
  7618. }
  7619. }
  7620. if !key.Valid() {
  7621. return fmt.Errorf("invalid GCE key (%+v)", key)
  7622. }
  7623. m.Lock.Lock()
  7624. defer m.Lock.Unlock()
  7625. if err, ok := m.InsertError[*key]; ok {
  7626. klog.V(5).Infof("MockBetaForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  7627. return err
  7628. }
  7629. if _, ok := m.Objects[*key]; ok {
  7630. err := &googleapi.Error{
  7631. Code: http.StatusConflict,
  7632. Message: fmt.Sprintf("MockBetaForwardingRules %v exists", key),
  7633. }
  7634. klog.V(5).Infof("MockBetaForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  7635. return err
  7636. }
  7637. obj.Name = key.Name
  7638. projectID := m.ProjectRouter.ProjectID(ctx, "beta", "forwardingRules")
  7639. obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "forwardingRules", key)
  7640. m.Objects[*key] = &MockForwardingRulesObj{obj}
  7641. klog.V(5).Infof("MockBetaForwardingRules.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  7642. return nil
  7643. }
  7644. // Delete is a mock for deleting the object.
  7645. func (m *MockBetaForwardingRules) Delete(ctx context.Context, key *meta.Key) error {
  7646. if m.DeleteHook != nil {
  7647. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  7648. klog.V(5).Infof("MockBetaForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  7649. return err
  7650. }
  7651. }
  7652. if !key.Valid() {
  7653. return fmt.Errorf("invalid GCE key (%+v)", key)
  7654. }
  7655. m.Lock.Lock()
  7656. defer m.Lock.Unlock()
  7657. if err, ok := m.DeleteError[*key]; ok {
  7658. klog.V(5).Infof("MockBetaForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  7659. return err
  7660. }
  7661. if _, ok := m.Objects[*key]; !ok {
  7662. err := &googleapi.Error{
  7663. Code: http.StatusNotFound,
  7664. Message: fmt.Sprintf("MockBetaForwardingRules %v not found", key),
  7665. }
  7666. klog.V(5).Infof("MockBetaForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  7667. return err
  7668. }
  7669. delete(m.Objects, *key)
  7670. klog.V(5).Infof("MockBetaForwardingRules.Delete(%v, %v) = nil", ctx, key)
  7671. return nil
  7672. }
  7673. // Obj wraps the object for use in the mock.
  7674. func (m *MockBetaForwardingRules) Obj(o *beta.ForwardingRule) *MockForwardingRulesObj {
  7675. return &MockForwardingRulesObj{o}
  7676. }
  7677. // SetTarget is a mock for the corresponding method.
  7678. func (m *MockBetaForwardingRules) SetTarget(ctx context.Context, key *meta.Key, arg0 *beta.TargetReference) error {
  7679. if m.SetTargetHook != nil {
  7680. return m.SetTargetHook(ctx, key, arg0, m)
  7681. }
  7682. return nil
  7683. }
  7684. // GCEBetaForwardingRules is a simplifying adapter for the GCE ForwardingRules.
  7685. type GCEBetaForwardingRules struct {
  7686. s *Service
  7687. }
  7688. // Get the ForwardingRule named by key.
  7689. func (g *GCEBetaForwardingRules) Get(ctx context.Context, key *meta.Key) (*beta.ForwardingRule, error) {
  7690. klog.V(5).Infof("GCEBetaForwardingRules.Get(%v, %v): called", ctx, key)
  7691. if !key.Valid() {
  7692. klog.V(2).Infof("GCEBetaForwardingRules.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  7693. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  7694. }
  7695. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "ForwardingRules")
  7696. rk := &RateLimitKey{
  7697. ProjectID: projectID,
  7698. Operation: "Get",
  7699. Version: meta.Version("beta"),
  7700. Service: "ForwardingRules",
  7701. }
  7702. klog.V(5).Infof("GCEBetaForwardingRules.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  7703. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  7704. klog.V(4).Infof("GCEBetaForwardingRules.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  7705. return nil, err
  7706. }
  7707. call := g.s.Beta.ForwardingRules.Get(projectID, key.Region, key.Name)
  7708. call.Context(ctx)
  7709. v, err := call.Do()
  7710. klog.V(4).Infof("GCEBetaForwardingRules.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  7711. return v, err
  7712. }
  7713. // List all ForwardingRule objects.
  7714. func (g *GCEBetaForwardingRules) List(ctx context.Context, region string, fl *filter.F) ([]*beta.ForwardingRule, error) {
  7715. klog.V(5).Infof("GCEBetaForwardingRules.List(%v, %v, %v) called", ctx, region, fl)
  7716. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "ForwardingRules")
  7717. rk := &RateLimitKey{
  7718. ProjectID: projectID,
  7719. Operation: "List",
  7720. Version: meta.Version("beta"),
  7721. Service: "ForwardingRules",
  7722. }
  7723. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  7724. return nil, err
  7725. }
  7726. klog.V(5).Infof("GCEBetaForwardingRules.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk)
  7727. call := g.s.Beta.ForwardingRules.List(projectID, region)
  7728. if fl != filter.None {
  7729. call.Filter(fl.String())
  7730. }
  7731. var all []*beta.ForwardingRule
  7732. f := func(l *beta.ForwardingRuleList) error {
  7733. klog.V(5).Infof("GCEBetaForwardingRules.List(%v, ..., %v): page %+v", ctx, fl, l)
  7734. all = append(all, l.Items...)
  7735. return nil
  7736. }
  7737. if err := call.Pages(ctx, f); err != nil {
  7738. klog.V(4).Infof("GCEBetaForwardingRules.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  7739. return nil, err
  7740. }
  7741. if klog.V(4) {
  7742. klog.V(4).Infof("GCEBetaForwardingRules.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  7743. } else if klog.V(5) {
  7744. var asStr []string
  7745. for _, o := range all {
  7746. asStr = append(asStr, fmt.Sprintf("%+v", o))
  7747. }
  7748. klog.V(5).Infof("GCEBetaForwardingRules.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  7749. }
  7750. return all, nil
  7751. }
  7752. // Insert ForwardingRule with key of value obj.
  7753. func (g *GCEBetaForwardingRules) Insert(ctx context.Context, key *meta.Key, obj *beta.ForwardingRule) error {
  7754. klog.V(5).Infof("GCEBetaForwardingRules.Insert(%v, %v, %+v): called", ctx, key, obj)
  7755. if !key.Valid() {
  7756. klog.V(2).Infof("GCEBetaForwardingRules.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  7757. return fmt.Errorf("invalid GCE key (%+v)", key)
  7758. }
  7759. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "ForwardingRules")
  7760. rk := &RateLimitKey{
  7761. ProjectID: projectID,
  7762. Operation: "Insert",
  7763. Version: meta.Version("beta"),
  7764. Service: "ForwardingRules",
  7765. }
  7766. klog.V(5).Infof("GCEBetaForwardingRules.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  7767. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  7768. klog.V(4).Infof("GCEBetaForwardingRules.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  7769. return err
  7770. }
  7771. obj.Name = key.Name
  7772. call := g.s.Beta.ForwardingRules.Insert(projectID, key.Region, obj)
  7773. call.Context(ctx)
  7774. op, err := call.Do()
  7775. if err != nil {
  7776. klog.V(4).Infof("GCEBetaForwardingRules.Insert(%v, %v, ...) = %+v", ctx, key, err)
  7777. return err
  7778. }
  7779. err = g.s.WaitForCompletion(ctx, op)
  7780. klog.V(4).Infof("GCEBetaForwardingRules.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  7781. return err
  7782. }
  7783. // Delete the ForwardingRule referenced by key.
  7784. func (g *GCEBetaForwardingRules) Delete(ctx context.Context, key *meta.Key) error {
  7785. klog.V(5).Infof("GCEBetaForwardingRules.Delete(%v, %v): called", ctx, key)
  7786. if !key.Valid() {
  7787. klog.V(2).Infof("GCEBetaForwardingRules.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  7788. return fmt.Errorf("invalid GCE key (%+v)", key)
  7789. }
  7790. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "ForwardingRules")
  7791. rk := &RateLimitKey{
  7792. ProjectID: projectID,
  7793. Operation: "Delete",
  7794. Version: meta.Version("beta"),
  7795. Service: "ForwardingRules",
  7796. }
  7797. klog.V(5).Infof("GCEBetaForwardingRules.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  7798. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  7799. klog.V(4).Infof("GCEBetaForwardingRules.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  7800. return err
  7801. }
  7802. call := g.s.Beta.ForwardingRules.Delete(projectID, key.Region, key.Name)
  7803. call.Context(ctx)
  7804. op, err := call.Do()
  7805. if err != nil {
  7806. klog.V(4).Infof("GCEBetaForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  7807. return err
  7808. }
  7809. err = g.s.WaitForCompletion(ctx, op)
  7810. klog.V(4).Infof("GCEBetaForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  7811. return err
  7812. }
  7813. // SetTarget is a method on GCEBetaForwardingRules.
  7814. func (g *GCEBetaForwardingRules) SetTarget(ctx context.Context, key *meta.Key, arg0 *beta.TargetReference) error {
  7815. klog.V(5).Infof("GCEBetaForwardingRules.SetTarget(%v, %v, ...): called", ctx, key)
  7816. if !key.Valid() {
  7817. klog.V(2).Infof("GCEBetaForwardingRules.SetTarget(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  7818. return fmt.Errorf("invalid GCE key (%+v)", key)
  7819. }
  7820. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "ForwardingRules")
  7821. rk := &RateLimitKey{
  7822. ProjectID: projectID,
  7823. Operation: "SetTarget",
  7824. Version: meta.Version("beta"),
  7825. Service: "ForwardingRules",
  7826. }
  7827. klog.V(5).Infof("GCEBetaForwardingRules.SetTarget(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  7828. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  7829. klog.V(4).Infof("GCEBetaForwardingRules.SetTarget(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  7830. return err
  7831. }
  7832. call := g.s.Beta.ForwardingRules.SetTarget(projectID, key.Region, key.Name, arg0)
  7833. call.Context(ctx)
  7834. op, err := call.Do()
  7835. if err != nil {
  7836. klog.V(4).Infof("GCEBetaForwardingRules.SetTarget(%v, %v, ...) = %+v", ctx, key, err)
  7837. return err
  7838. }
  7839. err = g.s.WaitForCompletion(ctx, op)
  7840. klog.V(4).Infof("GCEBetaForwardingRules.SetTarget(%v, %v, ...) = %+v", ctx, key, err)
  7841. return err
  7842. }
  7843. // AlphaGlobalForwardingRules is an interface that allows for mocking of GlobalForwardingRules.
  7844. type AlphaGlobalForwardingRules interface {
  7845. Get(ctx context.Context, key *meta.Key) (*alpha.ForwardingRule, error)
  7846. List(ctx context.Context, fl *filter.F) ([]*alpha.ForwardingRule, error)
  7847. Insert(ctx context.Context, key *meta.Key, obj *alpha.ForwardingRule) error
  7848. Delete(ctx context.Context, key *meta.Key) error
  7849. SetTarget(context.Context, *meta.Key, *alpha.TargetReference) error
  7850. }
  7851. // NewMockAlphaGlobalForwardingRules returns a new mock for GlobalForwardingRules.
  7852. func NewMockAlphaGlobalForwardingRules(pr ProjectRouter, objs map[meta.Key]*MockGlobalForwardingRulesObj) *MockAlphaGlobalForwardingRules {
  7853. mock := &MockAlphaGlobalForwardingRules{
  7854. ProjectRouter: pr,
  7855. Objects: objs,
  7856. GetError: map[meta.Key]error{},
  7857. InsertError: map[meta.Key]error{},
  7858. DeleteError: map[meta.Key]error{},
  7859. }
  7860. return mock
  7861. }
  7862. // MockAlphaGlobalForwardingRules is the mock for GlobalForwardingRules.
  7863. type MockAlphaGlobalForwardingRules struct {
  7864. Lock sync.Mutex
  7865. ProjectRouter ProjectRouter
  7866. // Objects maintained by the mock.
  7867. Objects map[meta.Key]*MockGlobalForwardingRulesObj
  7868. // If an entry exists for the given key and operation, then the error
  7869. // will be returned instead of the operation.
  7870. GetError map[meta.Key]error
  7871. ListError *error
  7872. InsertError map[meta.Key]error
  7873. DeleteError map[meta.Key]error
  7874. // xxxHook allow you to intercept the standard processing of the mock in
  7875. // order to add your own logic. Return (true, _, _) to prevent the normal
  7876. // execution flow of the mock. Return (false, nil, nil) to continue with
  7877. // normal mock behavior/ after the hook function executes.
  7878. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaGlobalForwardingRules) (bool, *alpha.ForwardingRule, error)
  7879. ListHook func(ctx context.Context, fl *filter.F, m *MockAlphaGlobalForwardingRules) (bool, []*alpha.ForwardingRule, error)
  7880. InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.ForwardingRule, m *MockAlphaGlobalForwardingRules) (bool, error)
  7881. DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaGlobalForwardingRules) (bool, error)
  7882. SetTargetHook func(context.Context, *meta.Key, *alpha.TargetReference, *MockAlphaGlobalForwardingRules) error
  7883. // X is extra state that can be used as part of the mock. Generated code
  7884. // will not use this field.
  7885. X interface{}
  7886. }
  7887. // Get returns the object from the mock.
  7888. func (m *MockAlphaGlobalForwardingRules) Get(ctx context.Context, key *meta.Key) (*alpha.ForwardingRule, error) {
  7889. if m.GetHook != nil {
  7890. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  7891. klog.V(5).Infof("MockAlphaGlobalForwardingRules.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  7892. return obj, err
  7893. }
  7894. }
  7895. if !key.Valid() {
  7896. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  7897. }
  7898. m.Lock.Lock()
  7899. defer m.Lock.Unlock()
  7900. if err, ok := m.GetError[*key]; ok {
  7901. klog.V(5).Infof("MockAlphaGlobalForwardingRules.Get(%v, %s) = nil, %v", ctx, key, err)
  7902. return nil, err
  7903. }
  7904. if obj, ok := m.Objects[*key]; ok {
  7905. typedObj := obj.ToAlpha()
  7906. klog.V(5).Infof("MockAlphaGlobalForwardingRules.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  7907. return typedObj, nil
  7908. }
  7909. err := &googleapi.Error{
  7910. Code: http.StatusNotFound,
  7911. Message: fmt.Sprintf("MockAlphaGlobalForwardingRules %v not found", key),
  7912. }
  7913. klog.V(5).Infof("MockAlphaGlobalForwardingRules.Get(%v, %s) = nil, %v", ctx, key, err)
  7914. return nil, err
  7915. }
  7916. // List all of the objects in the mock.
  7917. func (m *MockAlphaGlobalForwardingRules) List(ctx context.Context, fl *filter.F) ([]*alpha.ForwardingRule, error) {
  7918. if m.ListHook != nil {
  7919. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  7920. klog.V(5).Infof("MockAlphaGlobalForwardingRules.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  7921. return objs, err
  7922. }
  7923. }
  7924. m.Lock.Lock()
  7925. defer m.Lock.Unlock()
  7926. if m.ListError != nil {
  7927. err := *m.ListError
  7928. klog.V(5).Infof("MockAlphaGlobalForwardingRules.List(%v, %v) = nil, %v", ctx, fl, err)
  7929. return nil, *m.ListError
  7930. }
  7931. var objs []*alpha.ForwardingRule
  7932. for _, obj := range m.Objects {
  7933. if !fl.Match(obj.ToAlpha()) {
  7934. continue
  7935. }
  7936. objs = append(objs, obj.ToAlpha())
  7937. }
  7938. klog.V(5).Infof("MockAlphaGlobalForwardingRules.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  7939. return objs, nil
  7940. }
  7941. // Insert is a mock for inserting/creating a new object.
  7942. func (m *MockAlphaGlobalForwardingRules) Insert(ctx context.Context, key *meta.Key, obj *alpha.ForwardingRule) error {
  7943. if m.InsertHook != nil {
  7944. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  7945. klog.V(5).Infof("MockAlphaGlobalForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  7946. return err
  7947. }
  7948. }
  7949. if !key.Valid() {
  7950. return fmt.Errorf("invalid GCE key (%+v)", key)
  7951. }
  7952. m.Lock.Lock()
  7953. defer m.Lock.Unlock()
  7954. if err, ok := m.InsertError[*key]; ok {
  7955. klog.V(5).Infof("MockAlphaGlobalForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  7956. return err
  7957. }
  7958. if _, ok := m.Objects[*key]; ok {
  7959. err := &googleapi.Error{
  7960. Code: http.StatusConflict,
  7961. Message: fmt.Sprintf("MockAlphaGlobalForwardingRules %v exists", key),
  7962. }
  7963. klog.V(5).Infof("MockAlphaGlobalForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  7964. return err
  7965. }
  7966. obj.Name = key.Name
  7967. projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "forwardingRules")
  7968. obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "forwardingRules", key)
  7969. m.Objects[*key] = &MockGlobalForwardingRulesObj{obj}
  7970. klog.V(5).Infof("MockAlphaGlobalForwardingRules.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  7971. return nil
  7972. }
  7973. // Delete is a mock for deleting the object.
  7974. func (m *MockAlphaGlobalForwardingRules) Delete(ctx context.Context, key *meta.Key) error {
  7975. if m.DeleteHook != nil {
  7976. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  7977. klog.V(5).Infof("MockAlphaGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  7978. return err
  7979. }
  7980. }
  7981. if !key.Valid() {
  7982. return fmt.Errorf("invalid GCE key (%+v)", key)
  7983. }
  7984. m.Lock.Lock()
  7985. defer m.Lock.Unlock()
  7986. if err, ok := m.DeleteError[*key]; ok {
  7987. klog.V(5).Infof("MockAlphaGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  7988. return err
  7989. }
  7990. if _, ok := m.Objects[*key]; !ok {
  7991. err := &googleapi.Error{
  7992. Code: http.StatusNotFound,
  7993. Message: fmt.Sprintf("MockAlphaGlobalForwardingRules %v not found", key),
  7994. }
  7995. klog.V(5).Infof("MockAlphaGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  7996. return err
  7997. }
  7998. delete(m.Objects, *key)
  7999. klog.V(5).Infof("MockAlphaGlobalForwardingRules.Delete(%v, %v) = nil", ctx, key)
  8000. return nil
  8001. }
  8002. // Obj wraps the object for use in the mock.
  8003. func (m *MockAlphaGlobalForwardingRules) Obj(o *alpha.ForwardingRule) *MockGlobalForwardingRulesObj {
  8004. return &MockGlobalForwardingRulesObj{o}
  8005. }
  8006. // SetTarget is a mock for the corresponding method.
  8007. func (m *MockAlphaGlobalForwardingRules) SetTarget(ctx context.Context, key *meta.Key, arg0 *alpha.TargetReference) error {
  8008. if m.SetTargetHook != nil {
  8009. return m.SetTargetHook(ctx, key, arg0, m)
  8010. }
  8011. return nil
  8012. }
  8013. // GCEAlphaGlobalForwardingRules is a simplifying adapter for the GCE GlobalForwardingRules.
  8014. type GCEAlphaGlobalForwardingRules struct {
  8015. s *Service
  8016. }
  8017. // Get the ForwardingRule named by key.
  8018. func (g *GCEAlphaGlobalForwardingRules) Get(ctx context.Context, key *meta.Key) (*alpha.ForwardingRule, error) {
  8019. klog.V(5).Infof("GCEAlphaGlobalForwardingRules.Get(%v, %v): called", ctx, key)
  8020. if !key.Valid() {
  8021. klog.V(2).Infof("GCEAlphaGlobalForwardingRules.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  8022. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  8023. }
  8024. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "GlobalForwardingRules")
  8025. rk := &RateLimitKey{
  8026. ProjectID: projectID,
  8027. Operation: "Get",
  8028. Version: meta.Version("alpha"),
  8029. Service: "GlobalForwardingRules",
  8030. }
  8031. klog.V(5).Infof("GCEAlphaGlobalForwardingRules.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  8032. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  8033. klog.V(4).Infof("GCEAlphaGlobalForwardingRules.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  8034. return nil, err
  8035. }
  8036. call := g.s.Alpha.GlobalForwardingRules.Get(projectID, key.Name)
  8037. call.Context(ctx)
  8038. v, err := call.Do()
  8039. klog.V(4).Infof("GCEAlphaGlobalForwardingRules.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  8040. return v, err
  8041. }
  8042. // List all ForwardingRule objects.
  8043. func (g *GCEAlphaGlobalForwardingRules) List(ctx context.Context, fl *filter.F) ([]*alpha.ForwardingRule, error) {
  8044. klog.V(5).Infof("GCEAlphaGlobalForwardingRules.List(%v, %v) called", ctx, fl)
  8045. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "GlobalForwardingRules")
  8046. rk := &RateLimitKey{
  8047. ProjectID: projectID,
  8048. Operation: "List",
  8049. Version: meta.Version("alpha"),
  8050. Service: "GlobalForwardingRules",
  8051. }
  8052. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  8053. return nil, err
  8054. }
  8055. klog.V(5).Infof("GCEAlphaGlobalForwardingRules.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  8056. call := g.s.Alpha.GlobalForwardingRules.List(projectID)
  8057. if fl != filter.None {
  8058. call.Filter(fl.String())
  8059. }
  8060. var all []*alpha.ForwardingRule
  8061. f := func(l *alpha.ForwardingRuleList) error {
  8062. klog.V(5).Infof("GCEAlphaGlobalForwardingRules.List(%v, ..., %v): page %+v", ctx, fl, l)
  8063. all = append(all, l.Items...)
  8064. return nil
  8065. }
  8066. if err := call.Pages(ctx, f); err != nil {
  8067. klog.V(4).Infof("GCEAlphaGlobalForwardingRules.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  8068. return nil, err
  8069. }
  8070. if klog.V(4) {
  8071. klog.V(4).Infof("GCEAlphaGlobalForwardingRules.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  8072. } else if klog.V(5) {
  8073. var asStr []string
  8074. for _, o := range all {
  8075. asStr = append(asStr, fmt.Sprintf("%+v", o))
  8076. }
  8077. klog.V(5).Infof("GCEAlphaGlobalForwardingRules.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  8078. }
  8079. return all, nil
  8080. }
  8081. // Insert ForwardingRule with key of value obj.
  8082. func (g *GCEAlphaGlobalForwardingRules) Insert(ctx context.Context, key *meta.Key, obj *alpha.ForwardingRule) error {
  8083. klog.V(5).Infof("GCEAlphaGlobalForwardingRules.Insert(%v, %v, %+v): called", ctx, key, obj)
  8084. if !key.Valid() {
  8085. klog.V(2).Infof("GCEAlphaGlobalForwardingRules.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  8086. return fmt.Errorf("invalid GCE key (%+v)", key)
  8087. }
  8088. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "GlobalForwardingRules")
  8089. rk := &RateLimitKey{
  8090. ProjectID: projectID,
  8091. Operation: "Insert",
  8092. Version: meta.Version("alpha"),
  8093. Service: "GlobalForwardingRules",
  8094. }
  8095. klog.V(5).Infof("GCEAlphaGlobalForwardingRules.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  8096. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  8097. klog.V(4).Infof("GCEAlphaGlobalForwardingRules.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  8098. return err
  8099. }
  8100. obj.Name = key.Name
  8101. call := g.s.Alpha.GlobalForwardingRules.Insert(projectID, obj)
  8102. call.Context(ctx)
  8103. op, err := call.Do()
  8104. if err != nil {
  8105. klog.V(4).Infof("GCEAlphaGlobalForwardingRules.Insert(%v, %v, ...) = %+v", ctx, key, err)
  8106. return err
  8107. }
  8108. err = g.s.WaitForCompletion(ctx, op)
  8109. klog.V(4).Infof("GCEAlphaGlobalForwardingRules.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  8110. return err
  8111. }
  8112. // Delete the ForwardingRule referenced by key.
  8113. func (g *GCEAlphaGlobalForwardingRules) Delete(ctx context.Context, key *meta.Key) error {
  8114. klog.V(5).Infof("GCEAlphaGlobalForwardingRules.Delete(%v, %v): called", ctx, key)
  8115. if !key.Valid() {
  8116. klog.V(2).Infof("GCEAlphaGlobalForwardingRules.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  8117. return fmt.Errorf("invalid GCE key (%+v)", key)
  8118. }
  8119. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "GlobalForwardingRules")
  8120. rk := &RateLimitKey{
  8121. ProjectID: projectID,
  8122. Operation: "Delete",
  8123. Version: meta.Version("alpha"),
  8124. Service: "GlobalForwardingRules",
  8125. }
  8126. klog.V(5).Infof("GCEAlphaGlobalForwardingRules.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  8127. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  8128. klog.V(4).Infof("GCEAlphaGlobalForwardingRules.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  8129. return err
  8130. }
  8131. call := g.s.Alpha.GlobalForwardingRules.Delete(projectID, key.Name)
  8132. call.Context(ctx)
  8133. op, err := call.Do()
  8134. if err != nil {
  8135. klog.V(4).Infof("GCEAlphaGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  8136. return err
  8137. }
  8138. err = g.s.WaitForCompletion(ctx, op)
  8139. klog.V(4).Infof("GCEAlphaGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  8140. return err
  8141. }
  8142. // SetTarget is a method on GCEAlphaGlobalForwardingRules.
  8143. func (g *GCEAlphaGlobalForwardingRules) SetTarget(ctx context.Context, key *meta.Key, arg0 *alpha.TargetReference) error {
  8144. klog.V(5).Infof("GCEAlphaGlobalForwardingRules.SetTarget(%v, %v, ...): called", ctx, key)
  8145. if !key.Valid() {
  8146. klog.V(2).Infof("GCEAlphaGlobalForwardingRules.SetTarget(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  8147. return fmt.Errorf("invalid GCE key (%+v)", key)
  8148. }
  8149. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "GlobalForwardingRules")
  8150. rk := &RateLimitKey{
  8151. ProjectID: projectID,
  8152. Operation: "SetTarget",
  8153. Version: meta.Version("alpha"),
  8154. Service: "GlobalForwardingRules",
  8155. }
  8156. klog.V(5).Infof("GCEAlphaGlobalForwardingRules.SetTarget(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  8157. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  8158. klog.V(4).Infof("GCEAlphaGlobalForwardingRules.SetTarget(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  8159. return err
  8160. }
  8161. call := g.s.Alpha.GlobalForwardingRules.SetTarget(projectID, key.Name, arg0)
  8162. call.Context(ctx)
  8163. op, err := call.Do()
  8164. if err != nil {
  8165. klog.V(4).Infof("GCEAlphaGlobalForwardingRules.SetTarget(%v, %v, ...) = %+v", ctx, key, err)
  8166. return err
  8167. }
  8168. err = g.s.WaitForCompletion(ctx, op)
  8169. klog.V(4).Infof("GCEAlphaGlobalForwardingRules.SetTarget(%v, %v, ...) = %+v", ctx, key, err)
  8170. return err
  8171. }
  8172. // BetaGlobalForwardingRules is an interface that allows for mocking of GlobalForwardingRules.
  8173. type BetaGlobalForwardingRules interface {
  8174. Get(ctx context.Context, key *meta.Key) (*beta.ForwardingRule, error)
  8175. List(ctx context.Context, fl *filter.F) ([]*beta.ForwardingRule, error)
  8176. Insert(ctx context.Context, key *meta.Key, obj *beta.ForwardingRule) error
  8177. Delete(ctx context.Context, key *meta.Key) error
  8178. SetTarget(context.Context, *meta.Key, *beta.TargetReference) error
  8179. }
  8180. // NewMockBetaGlobalForwardingRules returns a new mock for GlobalForwardingRules.
  8181. func NewMockBetaGlobalForwardingRules(pr ProjectRouter, objs map[meta.Key]*MockGlobalForwardingRulesObj) *MockBetaGlobalForwardingRules {
  8182. mock := &MockBetaGlobalForwardingRules{
  8183. ProjectRouter: pr,
  8184. Objects: objs,
  8185. GetError: map[meta.Key]error{},
  8186. InsertError: map[meta.Key]error{},
  8187. DeleteError: map[meta.Key]error{},
  8188. }
  8189. return mock
  8190. }
  8191. // MockBetaGlobalForwardingRules is the mock for GlobalForwardingRules.
  8192. type MockBetaGlobalForwardingRules struct {
  8193. Lock sync.Mutex
  8194. ProjectRouter ProjectRouter
  8195. // Objects maintained by the mock.
  8196. Objects map[meta.Key]*MockGlobalForwardingRulesObj
  8197. // If an entry exists for the given key and operation, then the error
  8198. // will be returned instead of the operation.
  8199. GetError map[meta.Key]error
  8200. ListError *error
  8201. InsertError map[meta.Key]error
  8202. DeleteError map[meta.Key]error
  8203. // xxxHook allow you to intercept the standard processing of the mock in
  8204. // order to add your own logic. Return (true, _, _) to prevent the normal
  8205. // execution flow of the mock. Return (false, nil, nil) to continue with
  8206. // normal mock behavior/ after the hook function executes.
  8207. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaGlobalForwardingRules) (bool, *beta.ForwardingRule, error)
  8208. ListHook func(ctx context.Context, fl *filter.F, m *MockBetaGlobalForwardingRules) (bool, []*beta.ForwardingRule, error)
  8209. InsertHook func(ctx context.Context, key *meta.Key, obj *beta.ForwardingRule, m *MockBetaGlobalForwardingRules) (bool, error)
  8210. DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaGlobalForwardingRules) (bool, error)
  8211. SetTargetHook func(context.Context, *meta.Key, *beta.TargetReference, *MockBetaGlobalForwardingRules) error
  8212. // X is extra state that can be used as part of the mock. Generated code
  8213. // will not use this field.
  8214. X interface{}
  8215. }
  8216. // Get returns the object from the mock.
  8217. func (m *MockBetaGlobalForwardingRules) Get(ctx context.Context, key *meta.Key) (*beta.ForwardingRule, error) {
  8218. if m.GetHook != nil {
  8219. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  8220. klog.V(5).Infof("MockBetaGlobalForwardingRules.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  8221. return obj, err
  8222. }
  8223. }
  8224. if !key.Valid() {
  8225. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  8226. }
  8227. m.Lock.Lock()
  8228. defer m.Lock.Unlock()
  8229. if err, ok := m.GetError[*key]; ok {
  8230. klog.V(5).Infof("MockBetaGlobalForwardingRules.Get(%v, %s) = nil, %v", ctx, key, err)
  8231. return nil, err
  8232. }
  8233. if obj, ok := m.Objects[*key]; ok {
  8234. typedObj := obj.ToBeta()
  8235. klog.V(5).Infof("MockBetaGlobalForwardingRules.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  8236. return typedObj, nil
  8237. }
  8238. err := &googleapi.Error{
  8239. Code: http.StatusNotFound,
  8240. Message: fmt.Sprintf("MockBetaGlobalForwardingRules %v not found", key),
  8241. }
  8242. klog.V(5).Infof("MockBetaGlobalForwardingRules.Get(%v, %s) = nil, %v", ctx, key, err)
  8243. return nil, err
  8244. }
  8245. // List all of the objects in the mock.
  8246. func (m *MockBetaGlobalForwardingRules) List(ctx context.Context, fl *filter.F) ([]*beta.ForwardingRule, error) {
  8247. if m.ListHook != nil {
  8248. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  8249. klog.V(5).Infof("MockBetaGlobalForwardingRules.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  8250. return objs, err
  8251. }
  8252. }
  8253. m.Lock.Lock()
  8254. defer m.Lock.Unlock()
  8255. if m.ListError != nil {
  8256. err := *m.ListError
  8257. klog.V(5).Infof("MockBetaGlobalForwardingRules.List(%v, %v) = nil, %v", ctx, fl, err)
  8258. return nil, *m.ListError
  8259. }
  8260. var objs []*beta.ForwardingRule
  8261. for _, obj := range m.Objects {
  8262. if !fl.Match(obj.ToBeta()) {
  8263. continue
  8264. }
  8265. objs = append(objs, obj.ToBeta())
  8266. }
  8267. klog.V(5).Infof("MockBetaGlobalForwardingRules.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  8268. return objs, nil
  8269. }
  8270. // Insert is a mock for inserting/creating a new object.
  8271. func (m *MockBetaGlobalForwardingRules) Insert(ctx context.Context, key *meta.Key, obj *beta.ForwardingRule) error {
  8272. if m.InsertHook != nil {
  8273. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  8274. klog.V(5).Infof("MockBetaGlobalForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  8275. return err
  8276. }
  8277. }
  8278. if !key.Valid() {
  8279. return fmt.Errorf("invalid GCE key (%+v)", key)
  8280. }
  8281. m.Lock.Lock()
  8282. defer m.Lock.Unlock()
  8283. if err, ok := m.InsertError[*key]; ok {
  8284. klog.V(5).Infof("MockBetaGlobalForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  8285. return err
  8286. }
  8287. if _, ok := m.Objects[*key]; ok {
  8288. err := &googleapi.Error{
  8289. Code: http.StatusConflict,
  8290. Message: fmt.Sprintf("MockBetaGlobalForwardingRules %v exists", key),
  8291. }
  8292. klog.V(5).Infof("MockBetaGlobalForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  8293. return err
  8294. }
  8295. obj.Name = key.Name
  8296. projectID := m.ProjectRouter.ProjectID(ctx, "beta", "forwardingRules")
  8297. obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "forwardingRules", key)
  8298. m.Objects[*key] = &MockGlobalForwardingRulesObj{obj}
  8299. klog.V(5).Infof("MockBetaGlobalForwardingRules.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  8300. return nil
  8301. }
  8302. // Delete is a mock for deleting the object.
  8303. func (m *MockBetaGlobalForwardingRules) Delete(ctx context.Context, key *meta.Key) error {
  8304. if m.DeleteHook != nil {
  8305. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  8306. klog.V(5).Infof("MockBetaGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  8307. return err
  8308. }
  8309. }
  8310. if !key.Valid() {
  8311. return fmt.Errorf("invalid GCE key (%+v)", key)
  8312. }
  8313. m.Lock.Lock()
  8314. defer m.Lock.Unlock()
  8315. if err, ok := m.DeleteError[*key]; ok {
  8316. klog.V(5).Infof("MockBetaGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  8317. return err
  8318. }
  8319. if _, ok := m.Objects[*key]; !ok {
  8320. err := &googleapi.Error{
  8321. Code: http.StatusNotFound,
  8322. Message: fmt.Sprintf("MockBetaGlobalForwardingRules %v not found", key),
  8323. }
  8324. klog.V(5).Infof("MockBetaGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  8325. return err
  8326. }
  8327. delete(m.Objects, *key)
  8328. klog.V(5).Infof("MockBetaGlobalForwardingRules.Delete(%v, %v) = nil", ctx, key)
  8329. return nil
  8330. }
  8331. // Obj wraps the object for use in the mock.
  8332. func (m *MockBetaGlobalForwardingRules) Obj(o *beta.ForwardingRule) *MockGlobalForwardingRulesObj {
  8333. return &MockGlobalForwardingRulesObj{o}
  8334. }
  8335. // SetTarget is a mock for the corresponding method.
  8336. func (m *MockBetaGlobalForwardingRules) SetTarget(ctx context.Context, key *meta.Key, arg0 *beta.TargetReference) error {
  8337. if m.SetTargetHook != nil {
  8338. return m.SetTargetHook(ctx, key, arg0, m)
  8339. }
  8340. return nil
  8341. }
  8342. // GCEBetaGlobalForwardingRules is a simplifying adapter for the GCE GlobalForwardingRules.
  8343. type GCEBetaGlobalForwardingRules struct {
  8344. s *Service
  8345. }
  8346. // Get the ForwardingRule named by key.
  8347. func (g *GCEBetaGlobalForwardingRules) Get(ctx context.Context, key *meta.Key) (*beta.ForwardingRule, error) {
  8348. klog.V(5).Infof("GCEBetaGlobalForwardingRules.Get(%v, %v): called", ctx, key)
  8349. if !key.Valid() {
  8350. klog.V(2).Infof("GCEBetaGlobalForwardingRules.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  8351. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  8352. }
  8353. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "GlobalForwardingRules")
  8354. rk := &RateLimitKey{
  8355. ProjectID: projectID,
  8356. Operation: "Get",
  8357. Version: meta.Version("beta"),
  8358. Service: "GlobalForwardingRules",
  8359. }
  8360. klog.V(5).Infof("GCEBetaGlobalForwardingRules.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  8361. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  8362. klog.V(4).Infof("GCEBetaGlobalForwardingRules.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  8363. return nil, err
  8364. }
  8365. call := g.s.Beta.GlobalForwardingRules.Get(projectID, key.Name)
  8366. call.Context(ctx)
  8367. v, err := call.Do()
  8368. klog.V(4).Infof("GCEBetaGlobalForwardingRules.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  8369. return v, err
  8370. }
  8371. // List all ForwardingRule objects.
  8372. func (g *GCEBetaGlobalForwardingRules) List(ctx context.Context, fl *filter.F) ([]*beta.ForwardingRule, error) {
  8373. klog.V(5).Infof("GCEBetaGlobalForwardingRules.List(%v, %v) called", ctx, fl)
  8374. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "GlobalForwardingRules")
  8375. rk := &RateLimitKey{
  8376. ProjectID: projectID,
  8377. Operation: "List",
  8378. Version: meta.Version("beta"),
  8379. Service: "GlobalForwardingRules",
  8380. }
  8381. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  8382. return nil, err
  8383. }
  8384. klog.V(5).Infof("GCEBetaGlobalForwardingRules.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  8385. call := g.s.Beta.GlobalForwardingRules.List(projectID)
  8386. if fl != filter.None {
  8387. call.Filter(fl.String())
  8388. }
  8389. var all []*beta.ForwardingRule
  8390. f := func(l *beta.ForwardingRuleList) error {
  8391. klog.V(5).Infof("GCEBetaGlobalForwardingRules.List(%v, ..., %v): page %+v", ctx, fl, l)
  8392. all = append(all, l.Items...)
  8393. return nil
  8394. }
  8395. if err := call.Pages(ctx, f); err != nil {
  8396. klog.V(4).Infof("GCEBetaGlobalForwardingRules.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  8397. return nil, err
  8398. }
  8399. if klog.V(4) {
  8400. klog.V(4).Infof("GCEBetaGlobalForwardingRules.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  8401. } else if klog.V(5) {
  8402. var asStr []string
  8403. for _, o := range all {
  8404. asStr = append(asStr, fmt.Sprintf("%+v", o))
  8405. }
  8406. klog.V(5).Infof("GCEBetaGlobalForwardingRules.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  8407. }
  8408. return all, nil
  8409. }
  8410. // Insert ForwardingRule with key of value obj.
  8411. func (g *GCEBetaGlobalForwardingRules) Insert(ctx context.Context, key *meta.Key, obj *beta.ForwardingRule) error {
  8412. klog.V(5).Infof("GCEBetaGlobalForwardingRules.Insert(%v, %v, %+v): called", ctx, key, obj)
  8413. if !key.Valid() {
  8414. klog.V(2).Infof("GCEBetaGlobalForwardingRules.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  8415. return fmt.Errorf("invalid GCE key (%+v)", key)
  8416. }
  8417. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "GlobalForwardingRules")
  8418. rk := &RateLimitKey{
  8419. ProjectID: projectID,
  8420. Operation: "Insert",
  8421. Version: meta.Version("beta"),
  8422. Service: "GlobalForwardingRules",
  8423. }
  8424. klog.V(5).Infof("GCEBetaGlobalForwardingRules.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  8425. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  8426. klog.V(4).Infof("GCEBetaGlobalForwardingRules.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  8427. return err
  8428. }
  8429. obj.Name = key.Name
  8430. call := g.s.Beta.GlobalForwardingRules.Insert(projectID, obj)
  8431. call.Context(ctx)
  8432. op, err := call.Do()
  8433. if err != nil {
  8434. klog.V(4).Infof("GCEBetaGlobalForwardingRules.Insert(%v, %v, ...) = %+v", ctx, key, err)
  8435. return err
  8436. }
  8437. err = g.s.WaitForCompletion(ctx, op)
  8438. klog.V(4).Infof("GCEBetaGlobalForwardingRules.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  8439. return err
  8440. }
  8441. // Delete the ForwardingRule referenced by key.
  8442. func (g *GCEBetaGlobalForwardingRules) Delete(ctx context.Context, key *meta.Key) error {
  8443. klog.V(5).Infof("GCEBetaGlobalForwardingRules.Delete(%v, %v): called", ctx, key)
  8444. if !key.Valid() {
  8445. klog.V(2).Infof("GCEBetaGlobalForwardingRules.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  8446. return fmt.Errorf("invalid GCE key (%+v)", key)
  8447. }
  8448. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "GlobalForwardingRules")
  8449. rk := &RateLimitKey{
  8450. ProjectID: projectID,
  8451. Operation: "Delete",
  8452. Version: meta.Version("beta"),
  8453. Service: "GlobalForwardingRules",
  8454. }
  8455. klog.V(5).Infof("GCEBetaGlobalForwardingRules.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  8456. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  8457. klog.V(4).Infof("GCEBetaGlobalForwardingRules.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  8458. return err
  8459. }
  8460. call := g.s.Beta.GlobalForwardingRules.Delete(projectID, key.Name)
  8461. call.Context(ctx)
  8462. op, err := call.Do()
  8463. if err != nil {
  8464. klog.V(4).Infof("GCEBetaGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  8465. return err
  8466. }
  8467. err = g.s.WaitForCompletion(ctx, op)
  8468. klog.V(4).Infof("GCEBetaGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  8469. return err
  8470. }
  8471. // SetTarget is a method on GCEBetaGlobalForwardingRules.
  8472. func (g *GCEBetaGlobalForwardingRules) SetTarget(ctx context.Context, key *meta.Key, arg0 *beta.TargetReference) error {
  8473. klog.V(5).Infof("GCEBetaGlobalForwardingRules.SetTarget(%v, %v, ...): called", ctx, key)
  8474. if !key.Valid() {
  8475. klog.V(2).Infof("GCEBetaGlobalForwardingRules.SetTarget(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  8476. return fmt.Errorf("invalid GCE key (%+v)", key)
  8477. }
  8478. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "GlobalForwardingRules")
  8479. rk := &RateLimitKey{
  8480. ProjectID: projectID,
  8481. Operation: "SetTarget",
  8482. Version: meta.Version("beta"),
  8483. Service: "GlobalForwardingRules",
  8484. }
  8485. klog.V(5).Infof("GCEBetaGlobalForwardingRules.SetTarget(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  8486. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  8487. klog.V(4).Infof("GCEBetaGlobalForwardingRules.SetTarget(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  8488. return err
  8489. }
  8490. call := g.s.Beta.GlobalForwardingRules.SetTarget(projectID, key.Name, arg0)
  8491. call.Context(ctx)
  8492. op, err := call.Do()
  8493. if err != nil {
  8494. klog.V(4).Infof("GCEBetaGlobalForwardingRules.SetTarget(%v, %v, ...) = %+v", ctx, key, err)
  8495. return err
  8496. }
  8497. err = g.s.WaitForCompletion(ctx, op)
  8498. klog.V(4).Infof("GCEBetaGlobalForwardingRules.SetTarget(%v, %v, ...) = %+v", ctx, key, err)
  8499. return err
  8500. }
  8501. // GlobalForwardingRules is an interface that allows for mocking of GlobalForwardingRules.
  8502. type GlobalForwardingRules interface {
  8503. Get(ctx context.Context, key *meta.Key) (*ga.ForwardingRule, error)
  8504. List(ctx context.Context, fl *filter.F) ([]*ga.ForwardingRule, error)
  8505. Insert(ctx context.Context, key *meta.Key, obj *ga.ForwardingRule) error
  8506. Delete(ctx context.Context, key *meta.Key) error
  8507. SetTarget(context.Context, *meta.Key, *ga.TargetReference) error
  8508. }
  8509. // NewMockGlobalForwardingRules returns a new mock for GlobalForwardingRules.
  8510. func NewMockGlobalForwardingRules(pr ProjectRouter, objs map[meta.Key]*MockGlobalForwardingRulesObj) *MockGlobalForwardingRules {
  8511. mock := &MockGlobalForwardingRules{
  8512. ProjectRouter: pr,
  8513. Objects: objs,
  8514. GetError: map[meta.Key]error{},
  8515. InsertError: map[meta.Key]error{},
  8516. DeleteError: map[meta.Key]error{},
  8517. }
  8518. return mock
  8519. }
  8520. // MockGlobalForwardingRules is the mock for GlobalForwardingRules.
  8521. type MockGlobalForwardingRules struct {
  8522. Lock sync.Mutex
  8523. ProjectRouter ProjectRouter
  8524. // Objects maintained by the mock.
  8525. Objects map[meta.Key]*MockGlobalForwardingRulesObj
  8526. // If an entry exists for the given key and operation, then the error
  8527. // will be returned instead of the operation.
  8528. GetError map[meta.Key]error
  8529. ListError *error
  8530. InsertError map[meta.Key]error
  8531. DeleteError map[meta.Key]error
  8532. // xxxHook allow you to intercept the standard processing of the mock in
  8533. // order to add your own logic. Return (true, _, _) to prevent the normal
  8534. // execution flow of the mock. Return (false, nil, nil) to continue with
  8535. // normal mock behavior/ after the hook function executes.
  8536. GetHook func(ctx context.Context, key *meta.Key, m *MockGlobalForwardingRules) (bool, *ga.ForwardingRule, error)
  8537. ListHook func(ctx context.Context, fl *filter.F, m *MockGlobalForwardingRules) (bool, []*ga.ForwardingRule, error)
  8538. InsertHook func(ctx context.Context, key *meta.Key, obj *ga.ForwardingRule, m *MockGlobalForwardingRules) (bool, error)
  8539. DeleteHook func(ctx context.Context, key *meta.Key, m *MockGlobalForwardingRules) (bool, error)
  8540. SetTargetHook func(context.Context, *meta.Key, *ga.TargetReference, *MockGlobalForwardingRules) error
  8541. // X is extra state that can be used as part of the mock. Generated code
  8542. // will not use this field.
  8543. X interface{}
  8544. }
  8545. // Get returns the object from the mock.
  8546. func (m *MockGlobalForwardingRules) Get(ctx context.Context, key *meta.Key) (*ga.ForwardingRule, error) {
  8547. if m.GetHook != nil {
  8548. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  8549. klog.V(5).Infof("MockGlobalForwardingRules.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  8550. return obj, err
  8551. }
  8552. }
  8553. if !key.Valid() {
  8554. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  8555. }
  8556. m.Lock.Lock()
  8557. defer m.Lock.Unlock()
  8558. if err, ok := m.GetError[*key]; ok {
  8559. klog.V(5).Infof("MockGlobalForwardingRules.Get(%v, %s) = nil, %v", ctx, key, err)
  8560. return nil, err
  8561. }
  8562. if obj, ok := m.Objects[*key]; ok {
  8563. typedObj := obj.ToGA()
  8564. klog.V(5).Infof("MockGlobalForwardingRules.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  8565. return typedObj, nil
  8566. }
  8567. err := &googleapi.Error{
  8568. Code: http.StatusNotFound,
  8569. Message: fmt.Sprintf("MockGlobalForwardingRules %v not found", key),
  8570. }
  8571. klog.V(5).Infof("MockGlobalForwardingRules.Get(%v, %s) = nil, %v", ctx, key, err)
  8572. return nil, err
  8573. }
  8574. // List all of the objects in the mock.
  8575. func (m *MockGlobalForwardingRules) List(ctx context.Context, fl *filter.F) ([]*ga.ForwardingRule, error) {
  8576. if m.ListHook != nil {
  8577. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  8578. klog.V(5).Infof("MockGlobalForwardingRules.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  8579. return objs, err
  8580. }
  8581. }
  8582. m.Lock.Lock()
  8583. defer m.Lock.Unlock()
  8584. if m.ListError != nil {
  8585. err := *m.ListError
  8586. klog.V(5).Infof("MockGlobalForwardingRules.List(%v, %v) = nil, %v", ctx, fl, err)
  8587. return nil, *m.ListError
  8588. }
  8589. var objs []*ga.ForwardingRule
  8590. for _, obj := range m.Objects {
  8591. if !fl.Match(obj.ToGA()) {
  8592. continue
  8593. }
  8594. objs = append(objs, obj.ToGA())
  8595. }
  8596. klog.V(5).Infof("MockGlobalForwardingRules.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  8597. return objs, nil
  8598. }
  8599. // Insert is a mock for inserting/creating a new object.
  8600. func (m *MockGlobalForwardingRules) Insert(ctx context.Context, key *meta.Key, obj *ga.ForwardingRule) error {
  8601. if m.InsertHook != nil {
  8602. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  8603. klog.V(5).Infof("MockGlobalForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  8604. return err
  8605. }
  8606. }
  8607. if !key.Valid() {
  8608. return fmt.Errorf("invalid GCE key (%+v)", key)
  8609. }
  8610. m.Lock.Lock()
  8611. defer m.Lock.Unlock()
  8612. if err, ok := m.InsertError[*key]; ok {
  8613. klog.V(5).Infof("MockGlobalForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  8614. return err
  8615. }
  8616. if _, ok := m.Objects[*key]; ok {
  8617. err := &googleapi.Error{
  8618. Code: http.StatusConflict,
  8619. Message: fmt.Sprintf("MockGlobalForwardingRules %v exists", key),
  8620. }
  8621. klog.V(5).Infof("MockGlobalForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  8622. return err
  8623. }
  8624. obj.Name = key.Name
  8625. projectID := m.ProjectRouter.ProjectID(ctx, "ga", "forwardingRules")
  8626. obj.SelfLink = SelfLink(meta.VersionGA, projectID, "forwardingRules", key)
  8627. m.Objects[*key] = &MockGlobalForwardingRulesObj{obj}
  8628. klog.V(5).Infof("MockGlobalForwardingRules.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  8629. return nil
  8630. }
  8631. // Delete is a mock for deleting the object.
  8632. func (m *MockGlobalForwardingRules) Delete(ctx context.Context, key *meta.Key) error {
  8633. if m.DeleteHook != nil {
  8634. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  8635. klog.V(5).Infof("MockGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  8636. return err
  8637. }
  8638. }
  8639. if !key.Valid() {
  8640. return fmt.Errorf("invalid GCE key (%+v)", key)
  8641. }
  8642. m.Lock.Lock()
  8643. defer m.Lock.Unlock()
  8644. if err, ok := m.DeleteError[*key]; ok {
  8645. klog.V(5).Infof("MockGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  8646. return err
  8647. }
  8648. if _, ok := m.Objects[*key]; !ok {
  8649. err := &googleapi.Error{
  8650. Code: http.StatusNotFound,
  8651. Message: fmt.Sprintf("MockGlobalForwardingRules %v not found", key),
  8652. }
  8653. klog.V(5).Infof("MockGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  8654. return err
  8655. }
  8656. delete(m.Objects, *key)
  8657. klog.V(5).Infof("MockGlobalForwardingRules.Delete(%v, %v) = nil", ctx, key)
  8658. return nil
  8659. }
  8660. // Obj wraps the object for use in the mock.
  8661. func (m *MockGlobalForwardingRules) Obj(o *ga.ForwardingRule) *MockGlobalForwardingRulesObj {
  8662. return &MockGlobalForwardingRulesObj{o}
  8663. }
  8664. // SetTarget is a mock for the corresponding method.
  8665. func (m *MockGlobalForwardingRules) SetTarget(ctx context.Context, key *meta.Key, arg0 *ga.TargetReference) error {
  8666. if m.SetTargetHook != nil {
  8667. return m.SetTargetHook(ctx, key, arg0, m)
  8668. }
  8669. return nil
  8670. }
  8671. // GCEGlobalForwardingRules is a simplifying adapter for the GCE GlobalForwardingRules.
  8672. type GCEGlobalForwardingRules struct {
  8673. s *Service
  8674. }
  8675. // Get the ForwardingRule named by key.
  8676. func (g *GCEGlobalForwardingRules) Get(ctx context.Context, key *meta.Key) (*ga.ForwardingRule, error) {
  8677. klog.V(5).Infof("GCEGlobalForwardingRules.Get(%v, %v): called", ctx, key)
  8678. if !key.Valid() {
  8679. klog.V(2).Infof("GCEGlobalForwardingRules.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  8680. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  8681. }
  8682. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "GlobalForwardingRules")
  8683. rk := &RateLimitKey{
  8684. ProjectID: projectID,
  8685. Operation: "Get",
  8686. Version: meta.Version("ga"),
  8687. Service: "GlobalForwardingRules",
  8688. }
  8689. klog.V(5).Infof("GCEGlobalForwardingRules.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  8690. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  8691. klog.V(4).Infof("GCEGlobalForwardingRules.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  8692. return nil, err
  8693. }
  8694. call := g.s.GA.GlobalForwardingRules.Get(projectID, key.Name)
  8695. call.Context(ctx)
  8696. v, err := call.Do()
  8697. klog.V(4).Infof("GCEGlobalForwardingRules.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  8698. return v, err
  8699. }
  8700. // List all ForwardingRule objects.
  8701. func (g *GCEGlobalForwardingRules) List(ctx context.Context, fl *filter.F) ([]*ga.ForwardingRule, error) {
  8702. klog.V(5).Infof("GCEGlobalForwardingRules.List(%v, %v) called", ctx, fl)
  8703. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "GlobalForwardingRules")
  8704. rk := &RateLimitKey{
  8705. ProjectID: projectID,
  8706. Operation: "List",
  8707. Version: meta.Version("ga"),
  8708. Service: "GlobalForwardingRules",
  8709. }
  8710. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  8711. return nil, err
  8712. }
  8713. klog.V(5).Infof("GCEGlobalForwardingRules.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  8714. call := g.s.GA.GlobalForwardingRules.List(projectID)
  8715. if fl != filter.None {
  8716. call.Filter(fl.String())
  8717. }
  8718. var all []*ga.ForwardingRule
  8719. f := func(l *ga.ForwardingRuleList) error {
  8720. klog.V(5).Infof("GCEGlobalForwardingRules.List(%v, ..., %v): page %+v", ctx, fl, l)
  8721. all = append(all, l.Items...)
  8722. return nil
  8723. }
  8724. if err := call.Pages(ctx, f); err != nil {
  8725. klog.V(4).Infof("GCEGlobalForwardingRules.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  8726. return nil, err
  8727. }
  8728. if klog.V(4) {
  8729. klog.V(4).Infof("GCEGlobalForwardingRules.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  8730. } else if klog.V(5) {
  8731. var asStr []string
  8732. for _, o := range all {
  8733. asStr = append(asStr, fmt.Sprintf("%+v", o))
  8734. }
  8735. klog.V(5).Infof("GCEGlobalForwardingRules.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  8736. }
  8737. return all, nil
  8738. }
  8739. // Insert ForwardingRule with key of value obj.
  8740. func (g *GCEGlobalForwardingRules) Insert(ctx context.Context, key *meta.Key, obj *ga.ForwardingRule) error {
  8741. klog.V(5).Infof("GCEGlobalForwardingRules.Insert(%v, %v, %+v): called", ctx, key, obj)
  8742. if !key.Valid() {
  8743. klog.V(2).Infof("GCEGlobalForwardingRules.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  8744. return fmt.Errorf("invalid GCE key (%+v)", key)
  8745. }
  8746. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "GlobalForwardingRules")
  8747. rk := &RateLimitKey{
  8748. ProjectID: projectID,
  8749. Operation: "Insert",
  8750. Version: meta.Version("ga"),
  8751. Service: "GlobalForwardingRules",
  8752. }
  8753. klog.V(5).Infof("GCEGlobalForwardingRules.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  8754. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  8755. klog.V(4).Infof("GCEGlobalForwardingRules.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  8756. return err
  8757. }
  8758. obj.Name = key.Name
  8759. call := g.s.GA.GlobalForwardingRules.Insert(projectID, obj)
  8760. call.Context(ctx)
  8761. op, err := call.Do()
  8762. if err != nil {
  8763. klog.V(4).Infof("GCEGlobalForwardingRules.Insert(%v, %v, ...) = %+v", ctx, key, err)
  8764. return err
  8765. }
  8766. err = g.s.WaitForCompletion(ctx, op)
  8767. klog.V(4).Infof("GCEGlobalForwardingRules.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  8768. return err
  8769. }
  8770. // Delete the ForwardingRule referenced by key.
  8771. func (g *GCEGlobalForwardingRules) Delete(ctx context.Context, key *meta.Key) error {
  8772. klog.V(5).Infof("GCEGlobalForwardingRules.Delete(%v, %v): called", ctx, key)
  8773. if !key.Valid() {
  8774. klog.V(2).Infof("GCEGlobalForwardingRules.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  8775. return fmt.Errorf("invalid GCE key (%+v)", key)
  8776. }
  8777. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "GlobalForwardingRules")
  8778. rk := &RateLimitKey{
  8779. ProjectID: projectID,
  8780. Operation: "Delete",
  8781. Version: meta.Version("ga"),
  8782. Service: "GlobalForwardingRules",
  8783. }
  8784. klog.V(5).Infof("GCEGlobalForwardingRules.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  8785. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  8786. klog.V(4).Infof("GCEGlobalForwardingRules.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  8787. return err
  8788. }
  8789. call := g.s.GA.GlobalForwardingRules.Delete(projectID, key.Name)
  8790. call.Context(ctx)
  8791. op, err := call.Do()
  8792. if err != nil {
  8793. klog.V(4).Infof("GCEGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  8794. return err
  8795. }
  8796. err = g.s.WaitForCompletion(ctx, op)
  8797. klog.V(4).Infof("GCEGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err)
  8798. return err
  8799. }
  8800. // SetTarget is a method on GCEGlobalForwardingRules.
  8801. func (g *GCEGlobalForwardingRules) SetTarget(ctx context.Context, key *meta.Key, arg0 *ga.TargetReference) error {
  8802. klog.V(5).Infof("GCEGlobalForwardingRules.SetTarget(%v, %v, ...): called", ctx, key)
  8803. if !key.Valid() {
  8804. klog.V(2).Infof("GCEGlobalForwardingRules.SetTarget(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  8805. return fmt.Errorf("invalid GCE key (%+v)", key)
  8806. }
  8807. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "GlobalForwardingRules")
  8808. rk := &RateLimitKey{
  8809. ProjectID: projectID,
  8810. Operation: "SetTarget",
  8811. Version: meta.Version("ga"),
  8812. Service: "GlobalForwardingRules",
  8813. }
  8814. klog.V(5).Infof("GCEGlobalForwardingRules.SetTarget(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  8815. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  8816. klog.V(4).Infof("GCEGlobalForwardingRules.SetTarget(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  8817. return err
  8818. }
  8819. call := g.s.GA.GlobalForwardingRules.SetTarget(projectID, key.Name, arg0)
  8820. call.Context(ctx)
  8821. op, err := call.Do()
  8822. if err != nil {
  8823. klog.V(4).Infof("GCEGlobalForwardingRules.SetTarget(%v, %v, ...) = %+v", ctx, key, err)
  8824. return err
  8825. }
  8826. err = g.s.WaitForCompletion(ctx, op)
  8827. klog.V(4).Infof("GCEGlobalForwardingRules.SetTarget(%v, %v, ...) = %+v", ctx, key, err)
  8828. return err
  8829. }
  8830. // HealthChecks is an interface that allows for mocking of HealthChecks.
  8831. type HealthChecks interface {
  8832. Get(ctx context.Context, key *meta.Key) (*ga.HealthCheck, error)
  8833. List(ctx context.Context, fl *filter.F) ([]*ga.HealthCheck, error)
  8834. Insert(ctx context.Context, key *meta.Key, obj *ga.HealthCheck) error
  8835. Delete(ctx context.Context, key *meta.Key) error
  8836. Update(context.Context, *meta.Key, *ga.HealthCheck) error
  8837. }
  8838. // NewMockHealthChecks returns a new mock for HealthChecks.
  8839. func NewMockHealthChecks(pr ProjectRouter, objs map[meta.Key]*MockHealthChecksObj) *MockHealthChecks {
  8840. mock := &MockHealthChecks{
  8841. ProjectRouter: pr,
  8842. Objects: objs,
  8843. GetError: map[meta.Key]error{},
  8844. InsertError: map[meta.Key]error{},
  8845. DeleteError: map[meta.Key]error{},
  8846. }
  8847. return mock
  8848. }
  8849. // MockHealthChecks is the mock for HealthChecks.
  8850. type MockHealthChecks struct {
  8851. Lock sync.Mutex
  8852. ProjectRouter ProjectRouter
  8853. // Objects maintained by the mock.
  8854. Objects map[meta.Key]*MockHealthChecksObj
  8855. // If an entry exists for the given key and operation, then the error
  8856. // will be returned instead of the operation.
  8857. GetError map[meta.Key]error
  8858. ListError *error
  8859. InsertError map[meta.Key]error
  8860. DeleteError map[meta.Key]error
  8861. // xxxHook allow you to intercept the standard processing of the mock in
  8862. // order to add your own logic. Return (true, _, _) to prevent the normal
  8863. // execution flow of the mock. Return (false, nil, nil) to continue with
  8864. // normal mock behavior/ after the hook function executes.
  8865. GetHook func(ctx context.Context, key *meta.Key, m *MockHealthChecks) (bool, *ga.HealthCheck, error)
  8866. ListHook func(ctx context.Context, fl *filter.F, m *MockHealthChecks) (bool, []*ga.HealthCheck, error)
  8867. InsertHook func(ctx context.Context, key *meta.Key, obj *ga.HealthCheck, m *MockHealthChecks) (bool, error)
  8868. DeleteHook func(ctx context.Context, key *meta.Key, m *MockHealthChecks) (bool, error)
  8869. UpdateHook func(context.Context, *meta.Key, *ga.HealthCheck, *MockHealthChecks) error
  8870. // X is extra state that can be used as part of the mock. Generated code
  8871. // will not use this field.
  8872. X interface{}
  8873. }
  8874. // Get returns the object from the mock.
  8875. func (m *MockHealthChecks) Get(ctx context.Context, key *meta.Key) (*ga.HealthCheck, error) {
  8876. if m.GetHook != nil {
  8877. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  8878. klog.V(5).Infof("MockHealthChecks.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  8879. return obj, err
  8880. }
  8881. }
  8882. if !key.Valid() {
  8883. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  8884. }
  8885. m.Lock.Lock()
  8886. defer m.Lock.Unlock()
  8887. if err, ok := m.GetError[*key]; ok {
  8888. klog.V(5).Infof("MockHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err)
  8889. return nil, err
  8890. }
  8891. if obj, ok := m.Objects[*key]; ok {
  8892. typedObj := obj.ToGA()
  8893. klog.V(5).Infof("MockHealthChecks.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  8894. return typedObj, nil
  8895. }
  8896. err := &googleapi.Error{
  8897. Code: http.StatusNotFound,
  8898. Message: fmt.Sprintf("MockHealthChecks %v not found", key),
  8899. }
  8900. klog.V(5).Infof("MockHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err)
  8901. return nil, err
  8902. }
  8903. // List all of the objects in the mock.
  8904. func (m *MockHealthChecks) List(ctx context.Context, fl *filter.F) ([]*ga.HealthCheck, error) {
  8905. if m.ListHook != nil {
  8906. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  8907. klog.V(5).Infof("MockHealthChecks.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  8908. return objs, err
  8909. }
  8910. }
  8911. m.Lock.Lock()
  8912. defer m.Lock.Unlock()
  8913. if m.ListError != nil {
  8914. err := *m.ListError
  8915. klog.V(5).Infof("MockHealthChecks.List(%v, %v) = nil, %v", ctx, fl, err)
  8916. return nil, *m.ListError
  8917. }
  8918. var objs []*ga.HealthCheck
  8919. for _, obj := range m.Objects {
  8920. if !fl.Match(obj.ToGA()) {
  8921. continue
  8922. }
  8923. objs = append(objs, obj.ToGA())
  8924. }
  8925. klog.V(5).Infof("MockHealthChecks.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  8926. return objs, nil
  8927. }
  8928. // Insert is a mock for inserting/creating a new object.
  8929. func (m *MockHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *ga.HealthCheck) error {
  8930. if m.InsertHook != nil {
  8931. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  8932. klog.V(5).Infof("MockHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  8933. return err
  8934. }
  8935. }
  8936. if !key.Valid() {
  8937. return fmt.Errorf("invalid GCE key (%+v)", key)
  8938. }
  8939. m.Lock.Lock()
  8940. defer m.Lock.Unlock()
  8941. if err, ok := m.InsertError[*key]; ok {
  8942. klog.V(5).Infof("MockHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  8943. return err
  8944. }
  8945. if _, ok := m.Objects[*key]; ok {
  8946. err := &googleapi.Error{
  8947. Code: http.StatusConflict,
  8948. Message: fmt.Sprintf("MockHealthChecks %v exists", key),
  8949. }
  8950. klog.V(5).Infof("MockHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  8951. return err
  8952. }
  8953. obj.Name = key.Name
  8954. projectID := m.ProjectRouter.ProjectID(ctx, "ga", "healthChecks")
  8955. obj.SelfLink = SelfLink(meta.VersionGA, projectID, "healthChecks", key)
  8956. m.Objects[*key] = &MockHealthChecksObj{obj}
  8957. klog.V(5).Infof("MockHealthChecks.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  8958. return nil
  8959. }
  8960. // Delete is a mock for deleting the object.
  8961. func (m *MockHealthChecks) Delete(ctx context.Context, key *meta.Key) error {
  8962. if m.DeleteHook != nil {
  8963. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  8964. klog.V(5).Infof("MockHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  8965. return err
  8966. }
  8967. }
  8968. if !key.Valid() {
  8969. return fmt.Errorf("invalid GCE key (%+v)", key)
  8970. }
  8971. m.Lock.Lock()
  8972. defer m.Lock.Unlock()
  8973. if err, ok := m.DeleteError[*key]; ok {
  8974. klog.V(5).Infof("MockHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  8975. return err
  8976. }
  8977. if _, ok := m.Objects[*key]; !ok {
  8978. err := &googleapi.Error{
  8979. Code: http.StatusNotFound,
  8980. Message: fmt.Sprintf("MockHealthChecks %v not found", key),
  8981. }
  8982. klog.V(5).Infof("MockHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  8983. return err
  8984. }
  8985. delete(m.Objects, *key)
  8986. klog.V(5).Infof("MockHealthChecks.Delete(%v, %v) = nil", ctx, key)
  8987. return nil
  8988. }
  8989. // Obj wraps the object for use in the mock.
  8990. func (m *MockHealthChecks) Obj(o *ga.HealthCheck) *MockHealthChecksObj {
  8991. return &MockHealthChecksObj{o}
  8992. }
  8993. // Update is a mock for the corresponding method.
  8994. func (m *MockHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *ga.HealthCheck) error {
  8995. if m.UpdateHook != nil {
  8996. return m.UpdateHook(ctx, key, arg0, m)
  8997. }
  8998. return nil
  8999. }
  9000. // GCEHealthChecks is a simplifying adapter for the GCE HealthChecks.
  9001. type GCEHealthChecks struct {
  9002. s *Service
  9003. }
  9004. // Get the HealthCheck named by key.
  9005. func (g *GCEHealthChecks) Get(ctx context.Context, key *meta.Key) (*ga.HealthCheck, error) {
  9006. klog.V(5).Infof("GCEHealthChecks.Get(%v, %v): called", ctx, key)
  9007. if !key.Valid() {
  9008. klog.V(2).Infof("GCEHealthChecks.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  9009. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  9010. }
  9011. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HealthChecks")
  9012. rk := &RateLimitKey{
  9013. ProjectID: projectID,
  9014. Operation: "Get",
  9015. Version: meta.Version("ga"),
  9016. Service: "HealthChecks",
  9017. }
  9018. klog.V(5).Infof("GCEHealthChecks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  9019. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  9020. klog.V(4).Infof("GCEHealthChecks.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  9021. return nil, err
  9022. }
  9023. call := g.s.GA.HealthChecks.Get(projectID, key.Name)
  9024. call.Context(ctx)
  9025. v, err := call.Do()
  9026. klog.V(4).Infof("GCEHealthChecks.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  9027. return v, err
  9028. }
  9029. // List all HealthCheck objects.
  9030. func (g *GCEHealthChecks) List(ctx context.Context, fl *filter.F) ([]*ga.HealthCheck, error) {
  9031. klog.V(5).Infof("GCEHealthChecks.List(%v, %v) called", ctx, fl)
  9032. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HealthChecks")
  9033. rk := &RateLimitKey{
  9034. ProjectID: projectID,
  9035. Operation: "List",
  9036. Version: meta.Version("ga"),
  9037. Service: "HealthChecks",
  9038. }
  9039. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  9040. return nil, err
  9041. }
  9042. klog.V(5).Infof("GCEHealthChecks.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  9043. call := g.s.GA.HealthChecks.List(projectID)
  9044. if fl != filter.None {
  9045. call.Filter(fl.String())
  9046. }
  9047. var all []*ga.HealthCheck
  9048. f := func(l *ga.HealthCheckList) error {
  9049. klog.V(5).Infof("GCEHealthChecks.List(%v, ..., %v): page %+v", ctx, fl, l)
  9050. all = append(all, l.Items...)
  9051. return nil
  9052. }
  9053. if err := call.Pages(ctx, f); err != nil {
  9054. klog.V(4).Infof("GCEHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  9055. return nil, err
  9056. }
  9057. if klog.V(4) {
  9058. klog.V(4).Infof("GCEHealthChecks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  9059. } else if klog.V(5) {
  9060. var asStr []string
  9061. for _, o := range all {
  9062. asStr = append(asStr, fmt.Sprintf("%+v", o))
  9063. }
  9064. klog.V(5).Infof("GCEHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  9065. }
  9066. return all, nil
  9067. }
  9068. // Insert HealthCheck with key of value obj.
  9069. func (g *GCEHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *ga.HealthCheck) error {
  9070. klog.V(5).Infof("GCEHealthChecks.Insert(%v, %v, %+v): called", ctx, key, obj)
  9071. if !key.Valid() {
  9072. klog.V(2).Infof("GCEHealthChecks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  9073. return fmt.Errorf("invalid GCE key (%+v)", key)
  9074. }
  9075. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HealthChecks")
  9076. rk := &RateLimitKey{
  9077. ProjectID: projectID,
  9078. Operation: "Insert",
  9079. Version: meta.Version("ga"),
  9080. Service: "HealthChecks",
  9081. }
  9082. klog.V(5).Infof("GCEHealthChecks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  9083. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  9084. klog.V(4).Infof("GCEHealthChecks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  9085. return err
  9086. }
  9087. obj.Name = key.Name
  9088. call := g.s.GA.HealthChecks.Insert(projectID, obj)
  9089. call.Context(ctx)
  9090. op, err := call.Do()
  9091. if err != nil {
  9092. klog.V(4).Infof("GCEHealthChecks.Insert(%v, %v, ...) = %+v", ctx, key, err)
  9093. return err
  9094. }
  9095. err = g.s.WaitForCompletion(ctx, op)
  9096. klog.V(4).Infof("GCEHealthChecks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  9097. return err
  9098. }
  9099. // Delete the HealthCheck referenced by key.
  9100. func (g *GCEHealthChecks) Delete(ctx context.Context, key *meta.Key) error {
  9101. klog.V(5).Infof("GCEHealthChecks.Delete(%v, %v): called", ctx, key)
  9102. if !key.Valid() {
  9103. klog.V(2).Infof("GCEHealthChecks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  9104. return fmt.Errorf("invalid GCE key (%+v)", key)
  9105. }
  9106. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HealthChecks")
  9107. rk := &RateLimitKey{
  9108. ProjectID: projectID,
  9109. Operation: "Delete",
  9110. Version: meta.Version("ga"),
  9111. Service: "HealthChecks",
  9112. }
  9113. klog.V(5).Infof("GCEHealthChecks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  9114. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  9115. klog.V(4).Infof("GCEHealthChecks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  9116. return err
  9117. }
  9118. call := g.s.GA.HealthChecks.Delete(projectID, key.Name)
  9119. call.Context(ctx)
  9120. op, err := call.Do()
  9121. if err != nil {
  9122. klog.V(4).Infof("GCEHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  9123. return err
  9124. }
  9125. err = g.s.WaitForCompletion(ctx, op)
  9126. klog.V(4).Infof("GCEHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  9127. return err
  9128. }
  9129. // Update is a method on GCEHealthChecks.
  9130. func (g *GCEHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *ga.HealthCheck) error {
  9131. klog.V(5).Infof("GCEHealthChecks.Update(%v, %v, ...): called", ctx, key)
  9132. if !key.Valid() {
  9133. klog.V(2).Infof("GCEHealthChecks.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  9134. return fmt.Errorf("invalid GCE key (%+v)", key)
  9135. }
  9136. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HealthChecks")
  9137. rk := &RateLimitKey{
  9138. ProjectID: projectID,
  9139. Operation: "Update",
  9140. Version: meta.Version("ga"),
  9141. Service: "HealthChecks",
  9142. }
  9143. klog.V(5).Infof("GCEHealthChecks.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  9144. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  9145. klog.V(4).Infof("GCEHealthChecks.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  9146. return err
  9147. }
  9148. call := g.s.GA.HealthChecks.Update(projectID, key.Name, arg0)
  9149. call.Context(ctx)
  9150. op, err := call.Do()
  9151. if err != nil {
  9152. klog.V(4).Infof("GCEHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err)
  9153. return err
  9154. }
  9155. err = g.s.WaitForCompletion(ctx, op)
  9156. klog.V(4).Infof("GCEHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err)
  9157. return err
  9158. }
  9159. // AlphaHealthChecks is an interface that allows for mocking of HealthChecks.
  9160. type AlphaHealthChecks interface {
  9161. Get(ctx context.Context, key *meta.Key) (*alpha.HealthCheck, error)
  9162. List(ctx context.Context, fl *filter.F) ([]*alpha.HealthCheck, error)
  9163. Insert(ctx context.Context, key *meta.Key, obj *alpha.HealthCheck) error
  9164. Delete(ctx context.Context, key *meta.Key) error
  9165. Update(context.Context, *meta.Key, *alpha.HealthCheck) error
  9166. }
  9167. // NewMockAlphaHealthChecks returns a new mock for HealthChecks.
  9168. func NewMockAlphaHealthChecks(pr ProjectRouter, objs map[meta.Key]*MockHealthChecksObj) *MockAlphaHealthChecks {
  9169. mock := &MockAlphaHealthChecks{
  9170. ProjectRouter: pr,
  9171. Objects: objs,
  9172. GetError: map[meta.Key]error{},
  9173. InsertError: map[meta.Key]error{},
  9174. DeleteError: map[meta.Key]error{},
  9175. }
  9176. return mock
  9177. }
  9178. // MockAlphaHealthChecks is the mock for HealthChecks.
  9179. type MockAlphaHealthChecks struct {
  9180. Lock sync.Mutex
  9181. ProjectRouter ProjectRouter
  9182. // Objects maintained by the mock.
  9183. Objects map[meta.Key]*MockHealthChecksObj
  9184. // If an entry exists for the given key and operation, then the error
  9185. // will be returned instead of the operation.
  9186. GetError map[meta.Key]error
  9187. ListError *error
  9188. InsertError map[meta.Key]error
  9189. DeleteError map[meta.Key]error
  9190. // xxxHook allow you to intercept the standard processing of the mock in
  9191. // order to add your own logic. Return (true, _, _) to prevent the normal
  9192. // execution flow of the mock. Return (false, nil, nil) to continue with
  9193. // normal mock behavior/ after the hook function executes.
  9194. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaHealthChecks) (bool, *alpha.HealthCheck, error)
  9195. ListHook func(ctx context.Context, fl *filter.F, m *MockAlphaHealthChecks) (bool, []*alpha.HealthCheck, error)
  9196. InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.HealthCheck, m *MockAlphaHealthChecks) (bool, error)
  9197. DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaHealthChecks) (bool, error)
  9198. UpdateHook func(context.Context, *meta.Key, *alpha.HealthCheck, *MockAlphaHealthChecks) error
  9199. // X is extra state that can be used as part of the mock. Generated code
  9200. // will not use this field.
  9201. X interface{}
  9202. }
  9203. // Get returns the object from the mock.
  9204. func (m *MockAlphaHealthChecks) Get(ctx context.Context, key *meta.Key) (*alpha.HealthCheck, error) {
  9205. if m.GetHook != nil {
  9206. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  9207. klog.V(5).Infof("MockAlphaHealthChecks.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  9208. return obj, err
  9209. }
  9210. }
  9211. if !key.Valid() {
  9212. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  9213. }
  9214. m.Lock.Lock()
  9215. defer m.Lock.Unlock()
  9216. if err, ok := m.GetError[*key]; ok {
  9217. klog.V(5).Infof("MockAlphaHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err)
  9218. return nil, err
  9219. }
  9220. if obj, ok := m.Objects[*key]; ok {
  9221. typedObj := obj.ToAlpha()
  9222. klog.V(5).Infof("MockAlphaHealthChecks.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  9223. return typedObj, nil
  9224. }
  9225. err := &googleapi.Error{
  9226. Code: http.StatusNotFound,
  9227. Message: fmt.Sprintf("MockAlphaHealthChecks %v not found", key),
  9228. }
  9229. klog.V(5).Infof("MockAlphaHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err)
  9230. return nil, err
  9231. }
  9232. // List all of the objects in the mock.
  9233. func (m *MockAlphaHealthChecks) List(ctx context.Context, fl *filter.F) ([]*alpha.HealthCheck, error) {
  9234. if m.ListHook != nil {
  9235. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  9236. klog.V(5).Infof("MockAlphaHealthChecks.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  9237. return objs, err
  9238. }
  9239. }
  9240. m.Lock.Lock()
  9241. defer m.Lock.Unlock()
  9242. if m.ListError != nil {
  9243. err := *m.ListError
  9244. klog.V(5).Infof("MockAlphaHealthChecks.List(%v, %v) = nil, %v", ctx, fl, err)
  9245. return nil, *m.ListError
  9246. }
  9247. var objs []*alpha.HealthCheck
  9248. for _, obj := range m.Objects {
  9249. if !fl.Match(obj.ToAlpha()) {
  9250. continue
  9251. }
  9252. objs = append(objs, obj.ToAlpha())
  9253. }
  9254. klog.V(5).Infof("MockAlphaHealthChecks.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  9255. return objs, nil
  9256. }
  9257. // Insert is a mock for inserting/creating a new object.
  9258. func (m *MockAlphaHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *alpha.HealthCheck) error {
  9259. if m.InsertHook != nil {
  9260. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  9261. klog.V(5).Infof("MockAlphaHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  9262. return err
  9263. }
  9264. }
  9265. if !key.Valid() {
  9266. return fmt.Errorf("invalid GCE key (%+v)", key)
  9267. }
  9268. m.Lock.Lock()
  9269. defer m.Lock.Unlock()
  9270. if err, ok := m.InsertError[*key]; ok {
  9271. klog.V(5).Infof("MockAlphaHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  9272. return err
  9273. }
  9274. if _, ok := m.Objects[*key]; ok {
  9275. err := &googleapi.Error{
  9276. Code: http.StatusConflict,
  9277. Message: fmt.Sprintf("MockAlphaHealthChecks %v exists", key),
  9278. }
  9279. klog.V(5).Infof("MockAlphaHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  9280. return err
  9281. }
  9282. obj.Name = key.Name
  9283. projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "healthChecks")
  9284. obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "healthChecks", key)
  9285. m.Objects[*key] = &MockHealthChecksObj{obj}
  9286. klog.V(5).Infof("MockAlphaHealthChecks.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  9287. return nil
  9288. }
  9289. // Delete is a mock for deleting the object.
  9290. func (m *MockAlphaHealthChecks) Delete(ctx context.Context, key *meta.Key) error {
  9291. if m.DeleteHook != nil {
  9292. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  9293. klog.V(5).Infof("MockAlphaHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  9294. return err
  9295. }
  9296. }
  9297. if !key.Valid() {
  9298. return fmt.Errorf("invalid GCE key (%+v)", key)
  9299. }
  9300. m.Lock.Lock()
  9301. defer m.Lock.Unlock()
  9302. if err, ok := m.DeleteError[*key]; ok {
  9303. klog.V(5).Infof("MockAlphaHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  9304. return err
  9305. }
  9306. if _, ok := m.Objects[*key]; !ok {
  9307. err := &googleapi.Error{
  9308. Code: http.StatusNotFound,
  9309. Message: fmt.Sprintf("MockAlphaHealthChecks %v not found", key),
  9310. }
  9311. klog.V(5).Infof("MockAlphaHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  9312. return err
  9313. }
  9314. delete(m.Objects, *key)
  9315. klog.V(5).Infof("MockAlphaHealthChecks.Delete(%v, %v) = nil", ctx, key)
  9316. return nil
  9317. }
  9318. // Obj wraps the object for use in the mock.
  9319. func (m *MockAlphaHealthChecks) Obj(o *alpha.HealthCheck) *MockHealthChecksObj {
  9320. return &MockHealthChecksObj{o}
  9321. }
  9322. // Update is a mock for the corresponding method.
  9323. func (m *MockAlphaHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *alpha.HealthCheck) error {
  9324. if m.UpdateHook != nil {
  9325. return m.UpdateHook(ctx, key, arg0, m)
  9326. }
  9327. return nil
  9328. }
  9329. // GCEAlphaHealthChecks is a simplifying adapter for the GCE HealthChecks.
  9330. type GCEAlphaHealthChecks struct {
  9331. s *Service
  9332. }
  9333. // Get the HealthCheck named by key.
  9334. func (g *GCEAlphaHealthChecks) Get(ctx context.Context, key *meta.Key) (*alpha.HealthCheck, error) {
  9335. klog.V(5).Infof("GCEAlphaHealthChecks.Get(%v, %v): called", ctx, key)
  9336. if !key.Valid() {
  9337. klog.V(2).Infof("GCEAlphaHealthChecks.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  9338. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  9339. }
  9340. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "HealthChecks")
  9341. rk := &RateLimitKey{
  9342. ProjectID: projectID,
  9343. Operation: "Get",
  9344. Version: meta.Version("alpha"),
  9345. Service: "HealthChecks",
  9346. }
  9347. klog.V(5).Infof("GCEAlphaHealthChecks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  9348. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  9349. klog.V(4).Infof("GCEAlphaHealthChecks.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  9350. return nil, err
  9351. }
  9352. call := g.s.Alpha.HealthChecks.Get(projectID, key.Name)
  9353. call.Context(ctx)
  9354. v, err := call.Do()
  9355. klog.V(4).Infof("GCEAlphaHealthChecks.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  9356. return v, err
  9357. }
  9358. // List all HealthCheck objects.
  9359. func (g *GCEAlphaHealthChecks) List(ctx context.Context, fl *filter.F) ([]*alpha.HealthCheck, error) {
  9360. klog.V(5).Infof("GCEAlphaHealthChecks.List(%v, %v) called", ctx, fl)
  9361. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "HealthChecks")
  9362. rk := &RateLimitKey{
  9363. ProjectID: projectID,
  9364. Operation: "List",
  9365. Version: meta.Version("alpha"),
  9366. Service: "HealthChecks",
  9367. }
  9368. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  9369. return nil, err
  9370. }
  9371. klog.V(5).Infof("GCEAlphaHealthChecks.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  9372. call := g.s.Alpha.HealthChecks.List(projectID)
  9373. if fl != filter.None {
  9374. call.Filter(fl.String())
  9375. }
  9376. var all []*alpha.HealthCheck
  9377. f := func(l *alpha.HealthCheckList) error {
  9378. klog.V(5).Infof("GCEAlphaHealthChecks.List(%v, ..., %v): page %+v", ctx, fl, l)
  9379. all = append(all, l.Items...)
  9380. return nil
  9381. }
  9382. if err := call.Pages(ctx, f); err != nil {
  9383. klog.V(4).Infof("GCEAlphaHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  9384. return nil, err
  9385. }
  9386. if klog.V(4) {
  9387. klog.V(4).Infof("GCEAlphaHealthChecks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  9388. } else if klog.V(5) {
  9389. var asStr []string
  9390. for _, o := range all {
  9391. asStr = append(asStr, fmt.Sprintf("%+v", o))
  9392. }
  9393. klog.V(5).Infof("GCEAlphaHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  9394. }
  9395. return all, nil
  9396. }
  9397. // Insert HealthCheck with key of value obj.
  9398. func (g *GCEAlphaHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *alpha.HealthCheck) error {
  9399. klog.V(5).Infof("GCEAlphaHealthChecks.Insert(%v, %v, %+v): called", ctx, key, obj)
  9400. if !key.Valid() {
  9401. klog.V(2).Infof("GCEAlphaHealthChecks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  9402. return fmt.Errorf("invalid GCE key (%+v)", key)
  9403. }
  9404. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "HealthChecks")
  9405. rk := &RateLimitKey{
  9406. ProjectID: projectID,
  9407. Operation: "Insert",
  9408. Version: meta.Version("alpha"),
  9409. Service: "HealthChecks",
  9410. }
  9411. klog.V(5).Infof("GCEAlphaHealthChecks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  9412. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  9413. klog.V(4).Infof("GCEAlphaHealthChecks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  9414. return err
  9415. }
  9416. obj.Name = key.Name
  9417. call := g.s.Alpha.HealthChecks.Insert(projectID, obj)
  9418. call.Context(ctx)
  9419. op, err := call.Do()
  9420. if err != nil {
  9421. klog.V(4).Infof("GCEAlphaHealthChecks.Insert(%v, %v, ...) = %+v", ctx, key, err)
  9422. return err
  9423. }
  9424. err = g.s.WaitForCompletion(ctx, op)
  9425. klog.V(4).Infof("GCEAlphaHealthChecks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  9426. return err
  9427. }
  9428. // Delete the HealthCheck referenced by key.
  9429. func (g *GCEAlphaHealthChecks) Delete(ctx context.Context, key *meta.Key) error {
  9430. klog.V(5).Infof("GCEAlphaHealthChecks.Delete(%v, %v): called", ctx, key)
  9431. if !key.Valid() {
  9432. klog.V(2).Infof("GCEAlphaHealthChecks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  9433. return fmt.Errorf("invalid GCE key (%+v)", key)
  9434. }
  9435. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "HealthChecks")
  9436. rk := &RateLimitKey{
  9437. ProjectID: projectID,
  9438. Operation: "Delete",
  9439. Version: meta.Version("alpha"),
  9440. Service: "HealthChecks",
  9441. }
  9442. klog.V(5).Infof("GCEAlphaHealthChecks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  9443. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  9444. klog.V(4).Infof("GCEAlphaHealthChecks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  9445. return err
  9446. }
  9447. call := g.s.Alpha.HealthChecks.Delete(projectID, key.Name)
  9448. call.Context(ctx)
  9449. op, err := call.Do()
  9450. if err != nil {
  9451. klog.V(4).Infof("GCEAlphaHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  9452. return err
  9453. }
  9454. err = g.s.WaitForCompletion(ctx, op)
  9455. klog.V(4).Infof("GCEAlphaHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  9456. return err
  9457. }
  9458. // Update is a method on GCEAlphaHealthChecks.
  9459. func (g *GCEAlphaHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *alpha.HealthCheck) error {
  9460. klog.V(5).Infof("GCEAlphaHealthChecks.Update(%v, %v, ...): called", ctx, key)
  9461. if !key.Valid() {
  9462. klog.V(2).Infof("GCEAlphaHealthChecks.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  9463. return fmt.Errorf("invalid GCE key (%+v)", key)
  9464. }
  9465. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "HealthChecks")
  9466. rk := &RateLimitKey{
  9467. ProjectID: projectID,
  9468. Operation: "Update",
  9469. Version: meta.Version("alpha"),
  9470. Service: "HealthChecks",
  9471. }
  9472. klog.V(5).Infof("GCEAlphaHealthChecks.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  9473. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  9474. klog.V(4).Infof("GCEAlphaHealthChecks.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  9475. return err
  9476. }
  9477. call := g.s.Alpha.HealthChecks.Update(projectID, key.Name, arg0)
  9478. call.Context(ctx)
  9479. op, err := call.Do()
  9480. if err != nil {
  9481. klog.V(4).Infof("GCEAlphaHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err)
  9482. return err
  9483. }
  9484. err = g.s.WaitForCompletion(ctx, op)
  9485. klog.V(4).Infof("GCEAlphaHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err)
  9486. return err
  9487. }
  9488. // BetaHealthChecks is an interface that allows for mocking of HealthChecks.
  9489. type BetaHealthChecks interface {
  9490. Get(ctx context.Context, key *meta.Key) (*beta.HealthCheck, error)
  9491. List(ctx context.Context, fl *filter.F) ([]*beta.HealthCheck, error)
  9492. Insert(ctx context.Context, key *meta.Key, obj *beta.HealthCheck) error
  9493. Delete(ctx context.Context, key *meta.Key) error
  9494. Update(context.Context, *meta.Key, *beta.HealthCheck) error
  9495. }
  9496. // NewMockBetaHealthChecks returns a new mock for HealthChecks.
  9497. func NewMockBetaHealthChecks(pr ProjectRouter, objs map[meta.Key]*MockHealthChecksObj) *MockBetaHealthChecks {
  9498. mock := &MockBetaHealthChecks{
  9499. ProjectRouter: pr,
  9500. Objects: objs,
  9501. GetError: map[meta.Key]error{},
  9502. InsertError: map[meta.Key]error{},
  9503. DeleteError: map[meta.Key]error{},
  9504. }
  9505. return mock
  9506. }
  9507. // MockBetaHealthChecks is the mock for HealthChecks.
  9508. type MockBetaHealthChecks struct {
  9509. Lock sync.Mutex
  9510. ProjectRouter ProjectRouter
  9511. // Objects maintained by the mock.
  9512. Objects map[meta.Key]*MockHealthChecksObj
  9513. // If an entry exists for the given key and operation, then the error
  9514. // will be returned instead of the operation.
  9515. GetError map[meta.Key]error
  9516. ListError *error
  9517. InsertError map[meta.Key]error
  9518. DeleteError map[meta.Key]error
  9519. // xxxHook allow you to intercept the standard processing of the mock in
  9520. // order to add your own logic. Return (true, _, _) to prevent the normal
  9521. // execution flow of the mock. Return (false, nil, nil) to continue with
  9522. // normal mock behavior/ after the hook function executes.
  9523. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaHealthChecks) (bool, *beta.HealthCheck, error)
  9524. ListHook func(ctx context.Context, fl *filter.F, m *MockBetaHealthChecks) (bool, []*beta.HealthCheck, error)
  9525. InsertHook func(ctx context.Context, key *meta.Key, obj *beta.HealthCheck, m *MockBetaHealthChecks) (bool, error)
  9526. DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaHealthChecks) (bool, error)
  9527. UpdateHook func(context.Context, *meta.Key, *beta.HealthCheck, *MockBetaHealthChecks) error
  9528. // X is extra state that can be used as part of the mock. Generated code
  9529. // will not use this field.
  9530. X interface{}
  9531. }
  9532. // Get returns the object from the mock.
  9533. func (m *MockBetaHealthChecks) Get(ctx context.Context, key *meta.Key) (*beta.HealthCheck, error) {
  9534. if m.GetHook != nil {
  9535. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  9536. klog.V(5).Infof("MockBetaHealthChecks.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  9537. return obj, err
  9538. }
  9539. }
  9540. if !key.Valid() {
  9541. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  9542. }
  9543. m.Lock.Lock()
  9544. defer m.Lock.Unlock()
  9545. if err, ok := m.GetError[*key]; ok {
  9546. klog.V(5).Infof("MockBetaHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err)
  9547. return nil, err
  9548. }
  9549. if obj, ok := m.Objects[*key]; ok {
  9550. typedObj := obj.ToBeta()
  9551. klog.V(5).Infof("MockBetaHealthChecks.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  9552. return typedObj, nil
  9553. }
  9554. err := &googleapi.Error{
  9555. Code: http.StatusNotFound,
  9556. Message: fmt.Sprintf("MockBetaHealthChecks %v not found", key),
  9557. }
  9558. klog.V(5).Infof("MockBetaHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err)
  9559. return nil, err
  9560. }
  9561. // List all of the objects in the mock.
  9562. func (m *MockBetaHealthChecks) List(ctx context.Context, fl *filter.F) ([]*beta.HealthCheck, error) {
  9563. if m.ListHook != nil {
  9564. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  9565. klog.V(5).Infof("MockBetaHealthChecks.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  9566. return objs, err
  9567. }
  9568. }
  9569. m.Lock.Lock()
  9570. defer m.Lock.Unlock()
  9571. if m.ListError != nil {
  9572. err := *m.ListError
  9573. klog.V(5).Infof("MockBetaHealthChecks.List(%v, %v) = nil, %v", ctx, fl, err)
  9574. return nil, *m.ListError
  9575. }
  9576. var objs []*beta.HealthCheck
  9577. for _, obj := range m.Objects {
  9578. if !fl.Match(obj.ToBeta()) {
  9579. continue
  9580. }
  9581. objs = append(objs, obj.ToBeta())
  9582. }
  9583. klog.V(5).Infof("MockBetaHealthChecks.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  9584. return objs, nil
  9585. }
  9586. // Insert is a mock for inserting/creating a new object.
  9587. func (m *MockBetaHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *beta.HealthCheck) error {
  9588. if m.InsertHook != nil {
  9589. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  9590. klog.V(5).Infof("MockBetaHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  9591. return err
  9592. }
  9593. }
  9594. if !key.Valid() {
  9595. return fmt.Errorf("invalid GCE key (%+v)", key)
  9596. }
  9597. m.Lock.Lock()
  9598. defer m.Lock.Unlock()
  9599. if err, ok := m.InsertError[*key]; ok {
  9600. klog.V(5).Infof("MockBetaHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  9601. return err
  9602. }
  9603. if _, ok := m.Objects[*key]; ok {
  9604. err := &googleapi.Error{
  9605. Code: http.StatusConflict,
  9606. Message: fmt.Sprintf("MockBetaHealthChecks %v exists", key),
  9607. }
  9608. klog.V(5).Infof("MockBetaHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  9609. return err
  9610. }
  9611. obj.Name = key.Name
  9612. projectID := m.ProjectRouter.ProjectID(ctx, "beta", "healthChecks")
  9613. obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "healthChecks", key)
  9614. m.Objects[*key] = &MockHealthChecksObj{obj}
  9615. klog.V(5).Infof("MockBetaHealthChecks.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  9616. return nil
  9617. }
  9618. // Delete is a mock for deleting the object.
  9619. func (m *MockBetaHealthChecks) Delete(ctx context.Context, key *meta.Key) error {
  9620. if m.DeleteHook != nil {
  9621. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  9622. klog.V(5).Infof("MockBetaHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  9623. return err
  9624. }
  9625. }
  9626. if !key.Valid() {
  9627. return fmt.Errorf("invalid GCE key (%+v)", key)
  9628. }
  9629. m.Lock.Lock()
  9630. defer m.Lock.Unlock()
  9631. if err, ok := m.DeleteError[*key]; ok {
  9632. klog.V(5).Infof("MockBetaHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  9633. return err
  9634. }
  9635. if _, ok := m.Objects[*key]; !ok {
  9636. err := &googleapi.Error{
  9637. Code: http.StatusNotFound,
  9638. Message: fmt.Sprintf("MockBetaHealthChecks %v not found", key),
  9639. }
  9640. klog.V(5).Infof("MockBetaHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  9641. return err
  9642. }
  9643. delete(m.Objects, *key)
  9644. klog.V(5).Infof("MockBetaHealthChecks.Delete(%v, %v) = nil", ctx, key)
  9645. return nil
  9646. }
  9647. // Obj wraps the object for use in the mock.
  9648. func (m *MockBetaHealthChecks) Obj(o *beta.HealthCheck) *MockHealthChecksObj {
  9649. return &MockHealthChecksObj{o}
  9650. }
  9651. // Update is a mock for the corresponding method.
  9652. func (m *MockBetaHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *beta.HealthCheck) error {
  9653. if m.UpdateHook != nil {
  9654. return m.UpdateHook(ctx, key, arg0, m)
  9655. }
  9656. return nil
  9657. }
  9658. // GCEBetaHealthChecks is a simplifying adapter for the GCE HealthChecks.
  9659. type GCEBetaHealthChecks struct {
  9660. s *Service
  9661. }
  9662. // Get the HealthCheck named by key.
  9663. func (g *GCEBetaHealthChecks) Get(ctx context.Context, key *meta.Key) (*beta.HealthCheck, error) {
  9664. klog.V(5).Infof("GCEBetaHealthChecks.Get(%v, %v): called", ctx, key)
  9665. if !key.Valid() {
  9666. klog.V(2).Infof("GCEBetaHealthChecks.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  9667. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  9668. }
  9669. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "HealthChecks")
  9670. rk := &RateLimitKey{
  9671. ProjectID: projectID,
  9672. Operation: "Get",
  9673. Version: meta.Version("beta"),
  9674. Service: "HealthChecks",
  9675. }
  9676. klog.V(5).Infof("GCEBetaHealthChecks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  9677. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  9678. klog.V(4).Infof("GCEBetaHealthChecks.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  9679. return nil, err
  9680. }
  9681. call := g.s.Beta.HealthChecks.Get(projectID, key.Name)
  9682. call.Context(ctx)
  9683. v, err := call.Do()
  9684. klog.V(4).Infof("GCEBetaHealthChecks.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  9685. return v, err
  9686. }
  9687. // List all HealthCheck objects.
  9688. func (g *GCEBetaHealthChecks) List(ctx context.Context, fl *filter.F) ([]*beta.HealthCheck, error) {
  9689. klog.V(5).Infof("GCEBetaHealthChecks.List(%v, %v) called", ctx, fl)
  9690. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "HealthChecks")
  9691. rk := &RateLimitKey{
  9692. ProjectID: projectID,
  9693. Operation: "List",
  9694. Version: meta.Version("beta"),
  9695. Service: "HealthChecks",
  9696. }
  9697. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  9698. return nil, err
  9699. }
  9700. klog.V(5).Infof("GCEBetaHealthChecks.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  9701. call := g.s.Beta.HealthChecks.List(projectID)
  9702. if fl != filter.None {
  9703. call.Filter(fl.String())
  9704. }
  9705. var all []*beta.HealthCheck
  9706. f := func(l *beta.HealthCheckList) error {
  9707. klog.V(5).Infof("GCEBetaHealthChecks.List(%v, ..., %v): page %+v", ctx, fl, l)
  9708. all = append(all, l.Items...)
  9709. return nil
  9710. }
  9711. if err := call.Pages(ctx, f); err != nil {
  9712. klog.V(4).Infof("GCEBetaHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  9713. return nil, err
  9714. }
  9715. if klog.V(4) {
  9716. klog.V(4).Infof("GCEBetaHealthChecks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  9717. } else if klog.V(5) {
  9718. var asStr []string
  9719. for _, o := range all {
  9720. asStr = append(asStr, fmt.Sprintf("%+v", o))
  9721. }
  9722. klog.V(5).Infof("GCEBetaHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  9723. }
  9724. return all, nil
  9725. }
  9726. // Insert HealthCheck with key of value obj.
  9727. func (g *GCEBetaHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *beta.HealthCheck) error {
  9728. klog.V(5).Infof("GCEBetaHealthChecks.Insert(%v, %v, %+v): called", ctx, key, obj)
  9729. if !key.Valid() {
  9730. klog.V(2).Infof("GCEBetaHealthChecks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  9731. return fmt.Errorf("invalid GCE key (%+v)", key)
  9732. }
  9733. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "HealthChecks")
  9734. rk := &RateLimitKey{
  9735. ProjectID: projectID,
  9736. Operation: "Insert",
  9737. Version: meta.Version("beta"),
  9738. Service: "HealthChecks",
  9739. }
  9740. klog.V(5).Infof("GCEBetaHealthChecks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  9741. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  9742. klog.V(4).Infof("GCEBetaHealthChecks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  9743. return err
  9744. }
  9745. obj.Name = key.Name
  9746. call := g.s.Beta.HealthChecks.Insert(projectID, obj)
  9747. call.Context(ctx)
  9748. op, err := call.Do()
  9749. if err != nil {
  9750. klog.V(4).Infof("GCEBetaHealthChecks.Insert(%v, %v, ...) = %+v", ctx, key, err)
  9751. return err
  9752. }
  9753. err = g.s.WaitForCompletion(ctx, op)
  9754. klog.V(4).Infof("GCEBetaHealthChecks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  9755. return err
  9756. }
  9757. // Delete the HealthCheck referenced by key.
  9758. func (g *GCEBetaHealthChecks) Delete(ctx context.Context, key *meta.Key) error {
  9759. klog.V(5).Infof("GCEBetaHealthChecks.Delete(%v, %v): called", ctx, key)
  9760. if !key.Valid() {
  9761. klog.V(2).Infof("GCEBetaHealthChecks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  9762. return fmt.Errorf("invalid GCE key (%+v)", key)
  9763. }
  9764. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "HealthChecks")
  9765. rk := &RateLimitKey{
  9766. ProjectID: projectID,
  9767. Operation: "Delete",
  9768. Version: meta.Version("beta"),
  9769. Service: "HealthChecks",
  9770. }
  9771. klog.V(5).Infof("GCEBetaHealthChecks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  9772. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  9773. klog.V(4).Infof("GCEBetaHealthChecks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  9774. return err
  9775. }
  9776. call := g.s.Beta.HealthChecks.Delete(projectID, key.Name)
  9777. call.Context(ctx)
  9778. op, err := call.Do()
  9779. if err != nil {
  9780. klog.V(4).Infof("GCEBetaHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  9781. return err
  9782. }
  9783. err = g.s.WaitForCompletion(ctx, op)
  9784. klog.V(4).Infof("GCEBetaHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  9785. return err
  9786. }
  9787. // Update is a method on GCEBetaHealthChecks.
  9788. func (g *GCEBetaHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *beta.HealthCheck) error {
  9789. klog.V(5).Infof("GCEBetaHealthChecks.Update(%v, %v, ...): called", ctx, key)
  9790. if !key.Valid() {
  9791. klog.V(2).Infof("GCEBetaHealthChecks.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  9792. return fmt.Errorf("invalid GCE key (%+v)", key)
  9793. }
  9794. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "HealthChecks")
  9795. rk := &RateLimitKey{
  9796. ProjectID: projectID,
  9797. Operation: "Update",
  9798. Version: meta.Version("beta"),
  9799. Service: "HealthChecks",
  9800. }
  9801. klog.V(5).Infof("GCEBetaHealthChecks.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  9802. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  9803. klog.V(4).Infof("GCEBetaHealthChecks.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  9804. return err
  9805. }
  9806. call := g.s.Beta.HealthChecks.Update(projectID, key.Name, arg0)
  9807. call.Context(ctx)
  9808. op, err := call.Do()
  9809. if err != nil {
  9810. klog.V(4).Infof("GCEBetaHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err)
  9811. return err
  9812. }
  9813. err = g.s.WaitForCompletion(ctx, op)
  9814. klog.V(4).Infof("GCEBetaHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err)
  9815. return err
  9816. }
  9817. // AlphaRegionHealthChecks is an interface that allows for mocking of RegionHealthChecks.
  9818. type AlphaRegionHealthChecks interface {
  9819. Get(ctx context.Context, key *meta.Key) (*alpha.HealthCheck, error)
  9820. List(ctx context.Context, region string, fl *filter.F) ([]*alpha.HealthCheck, error)
  9821. Insert(ctx context.Context, key *meta.Key, obj *alpha.HealthCheck) error
  9822. Delete(ctx context.Context, key *meta.Key) error
  9823. Update(context.Context, *meta.Key, *alpha.HealthCheck) error
  9824. }
  9825. // NewMockAlphaRegionHealthChecks returns a new mock for RegionHealthChecks.
  9826. func NewMockAlphaRegionHealthChecks(pr ProjectRouter, objs map[meta.Key]*MockRegionHealthChecksObj) *MockAlphaRegionHealthChecks {
  9827. mock := &MockAlphaRegionHealthChecks{
  9828. ProjectRouter: pr,
  9829. Objects: objs,
  9830. GetError: map[meta.Key]error{},
  9831. InsertError: map[meta.Key]error{},
  9832. DeleteError: map[meta.Key]error{},
  9833. }
  9834. return mock
  9835. }
  9836. // MockAlphaRegionHealthChecks is the mock for RegionHealthChecks.
  9837. type MockAlphaRegionHealthChecks struct {
  9838. Lock sync.Mutex
  9839. ProjectRouter ProjectRouter
  9840. // Objects maintained by the mock.
  9841. Objects map[meta.Key]*MockRegionHealthChecksObj
  9842. // If an entry exists for the given key and operation, then the error
  9843. // will be returned instead of the operation.
  9844. GetError map[meta.Key]error
  9845. ListError *error
  9846. InsertError map[meta.Key]error
  9847. DeleteError map[meta.Key]error
  9848. // xxxHook allow you to intercept the standard processing of the mock in
  9849. // order to add your own logic. Return (true, _, _) to prevent the normal
  9850. // execution flow of the mock. Return (false, nil, nil) to continue with
  9851. // normal mock behavior/ after the hook function executes.
  9852. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaRegionHealthChecks) (bool, *alpha.HealthCheck, error)
  9853. ListHook func(ctx context.Context, region string, fl *filter.F, m *MockAlphaRegionHealthChecks) (bool, []*alpha.HealthCheck, error)
  9854. InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.HealthCheck, m *MockAlphaRegionHealthChecks) (bool, error)
  9855. DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaRegionHealthChecks) (bool, error)
  9856. UpdateHook func(context.Context, *meta.Key, *alpha.HealthCheck, *MockAlphaRegionHealthChecks) error
  9857. // X is extra state that can be used as part of the mock. Generated code
  9858. // will not use this field.
  9859. X interface{}
  9860. }
  9861. // Get returns the object from the mock.
  9862. func (m *MockAlphaRegionHealthChecks) Get(ctx context.Context, key *meta.Key) (*alpha.HealthCheck, error) {
  9863. if m.GetHook != nil {
  9864. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  9865. klog.V(5).Infof("MockAlphaRegionHealthChecks.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  9866. return obj, err
  9867. }
  9868. }
  9869. if !key.Valid() {
  9870. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  9871. }
  9872. m.Lock.Lock()
  9873. defer m.Lock.Unlock()
  9874. if err, ok := m.GetError[*key]; ok {
  9875. klog.V(5).Infof("MockAlphaRegionHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err)
  9876. return nil, err
  9877. }
  9878. if obj, ok := m.Objects[*key]; ok {
  9879. typedObj := obj.ToAlpha()
  9880. klog.V(5).Infof("MockAlphaRegionHealthChecks.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  9881. return typedObj, nil
  9882. }
  9883. err := &googleapi.Error{
  9884. Code: http.StatusNotFound,
  9885. Message: fmt.Sprintf("MockAlphaRegionHealthChecks %v not found", key),
  9886. }
  9887. klog.V(5).Infof("MockAlphaRegionHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err)
  9888. return nil, err
  9889. }
  9890. // List all of the objects in the mock in the given region.
  9891. func (m *MockAlphaRegionHealthChecks) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.HealthCheck, error) {
  9892. if m.ListHook != nil {
  9893. if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept {
  9894. klog.V(5).Infof("MockAlphaRegionHealthChecks.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err)
  9895. return objs, err
  9896. }
  9897. }
  9898. m.Lock.Lock()
  9899. defer m.Lock.Unlock()
  9900. if m.ListError != nil {
  9901. err := *m.ListError
  9902. klog.V(5).Infof("MockAlphaRegionHealthChecks.List(%v, %q, %v) = nil, %v", ctx, region, fl, err)
  9903. return nil, *m.ListError
  9904. }
  9905. var objs []*alpha.HealthCheck
  9906. for key, obj := range m.Objects {
  9907. if key.Region != region {
  9908. continue
  9909. }
  9910. if !fl.Match(obj.ToAlpha()) {
  9911. continue
  9912. }
  9913. objs = append(objs, obj.ToAlpha())
  9914. }
  9915. klog.V(5).Infof("MockAlphaRegionHealthChecks.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs))
  9916. return objs, nil
  9917. }
  9918. // Insert is a mock for inserting/creating a new object.
  9919. func (m *MockAlphaRegionHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *alpha.HealthCheck) error {
  9920. if m.InsertHook != nil {
  9921. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  9922. klog.V(5).Infof("MockAlphaRegionHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  9923. return err
  9924. }
  9925. }
  9926. if !key.Valid() {
  9927. return fmt.Errorf("invalid GCE key (%+v)", key)
  9928. }
  9929. m.Lock.Lock()
  9930. defer m.Lock.Unlock()
  9931. if err, ok := m.InsertError[*key]; ok {
  9932. klog.V(5).Infof("MockAlphaRegionHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  9933. return err
  9934. }
  9935. if _, ok := m.Objects[*key]; ok {
  9936. err := &googleapi.Error{
  9937. Code: http.StatusConflict,
  9938. Message: fmt.Sprintf("MockAlphaRegionHealthChecks %v exists", key),
  9939. }
  9940. klog.V(5).Infof("MockAlphaRegionHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  9941. return err
  9942. }
  9943. obj.Name = key.Name
  9944. projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "healthChecks")
  9945. obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "healthChecks", key)
  9946. m.Objects[*key] = &MockRegionHealthChecksObj{obj}
  9947. klog.V(5).Infof("MockAlphaRegionHealthChecks.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  9948. return nil
  9949. }
  9950. // Delete is a mock for deleting the object.
  9951. func (m *MockAlphaRegionHealthChecks) Delete(ctx context.Context, key *meta.Key) error {
  9952. if m.DeleteHook != nil {
  9953. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  9954. klog.V(5).Infof("MockAlphaRegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  9955. return err
  9956. }
  9957. }
  9958. if !key.Valid() {
  9959. return fmt.Errorf("invalid GCE key (%+v)", key)
  9960. }
  9961. m.Lock.Lock()
  9962. defer m.Lock.Unlock()
  9963. if err, ok := m.DeleteError[*key]; ok {
  9964. klog.V(5).Infof("MockAlphaRegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  9965. return err
  9966. }
  9967. if _, ok := m.Objects[*key]; !ok {
  9968. err := &googleapi.Error{
  9969. Code: http.StatusNotFound,
  9970. Message: fmt.Sprintf("MockAlphaRegionHealthChecks %v not found", key),
  9971. }
  9972. klog.V(5).Infof("MockAlphaRegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  9973. return err
  9974. }
  9975. delete(m.Objects, *key)
  9976. klog.V(5).Infof("MockAlphaRegionHealthChecks.Delete(%v, %v) = nil", ctx, key)
  9977. return nil
  9978. }
  9979. // Obj wraps the object for use in the mock.
  9980. func (m *MockAlphaRegionHealthChecks) Obj(o *alpha.HealthCheck) *MockRegionHealthChecksObj {
  9981. return &MockRegionHealthChecksObj{o}
  9982. }
  9983. // Update is a mock for the corresponding method.
  9984. func (m *MockAlphaRegionHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *alpha.HealthCheck) error {
  9985. if m.UpdateHook != nil {
  9986. return m.UpdateHook(ctx, key, arg0, m)
  9987. }
  9988. return nil
  9989. }
  9990. // GCEAlphaRegionHealthChecks is a simplifying adapter for the GCE RegionHealthChecks.
  9991. type GCEAlphaRegionHealthChecks struct {
  9992. s *Service
  9993. }
  9994. // Get the HealthCheck named by key.
  9995. func (g *GCEAlphaRegionHealthChecks) Get(ctx context.Context, key *meta.Key) (*alpha.HealthCheck, error) {
  9996. klog.V(5).Infof("GCEAlphaRegionHealthChecks.Get(%v, %v): called", ctx, key)
  9997. if !key.Valid() {
  9998. klog.V(2).Infof("GCEAlphaRegionHealthChecks.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  9999. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  10000. }
  10001. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionHealthChecks")
  10002. rk := &RateLimitKey{
  10003. ProjectID: projectID,
  10004. Operation: "Get",
  10005. Version: meta.Version("alpha"),
  10006. Service: "RegionHealthChecks",
  10007. }
  10008. klog.V(5).Infof("GCEAlphaRegionHealthChecks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  10009. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  10010. klog.V(4).Infof("GCEAlphaRegionHealthChecks.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  10011. return nil, err
  10012. }
  10013. call := g.s.Alpha.RegionHealthChecks.Get(projectID, key.Region, key.Name)
  10014. call.Context(ctx)
  10015. v, err := call.Do()
  10016. klog.V(4).Infof("GCEAlphaRegionHealthChecks.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  10017. return v, err
  10018. }
  10019. // List all HealthCheck objects.
  10020. func (g *GCEAlphaRegionHealthChecks) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.HealthCheck, error) {
  10021. klog.V(5).Infof("GCEAlphaRegionHealthChecks.List(%v, %v, %v) called", ctx, region, fl)
  10022. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionHealthChecks")
  10023. rk := &RateLimitKey{
  10024. ProjectID: projectID,
  10025. Operation: "List",
  10026. Version: meta.Version("alpha"),
  10027. Service: "RegionHealthChecks",
  10028. }
  10029. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  10030. return nil, err
  10031. }
  10032. klog.V(5).Infof("GCEAlphaRegionHealthChecks.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk)
  10033. call := g.s.Alpha.RegionHealthChecks.List(projectID, region)
  10034. if fl != filter.None {
  10035. call.Filter(fl.String())
  10036. }
  10037. var all []*alpha.HealthCheck
  10038. f := func(l *alpha.HealthCheckList) error {
  10039. klog.V(5).Infof("GCEAlphaRegionHealthChecks.List(%v, ..., %v): page %+v", ctx, fl, l)
  10040. all = append(all, l.Items...)
  10041. return nil
  10042. }
  10043. if err := call.Pages(ctx, f); err != nil {
  10044. klog.V(4).Infof("GCEAlphaRegionHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  10045. return nil, err
  10046. }
  10047. if klog.V(4) {
  10048. klog.V(4).Infof("GCEAlphaRegionHealthChecks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  10049. } else if klog.V(5) {
  10050. var asStr []string
  10051. for _, o := range all {
  10052. asStr = append(asStr, fmt.Sprintf("%+v", o))
  10053. }
  10054. klog.V(5).Infof("GCEAlphaRegionHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  10055. }
  10056. return all, nil
  10057. }
  10058. // Insert HealthCheck with key of value obj.
  10059. func (g *GCEAlphaRegionHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *alpha.HealthCheck) error {
  10060. klog.V(5).Infof("GCEAlphaRegionHealthChecks.Insert(%v, %v, %+v): called", ctx, key, obj)
  10061. if !key.Valid() {
  10062. klog.V(2).Infof("GCEAlphaRegionHealthChecks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  10063. return fmt.Errorf("invalid GCE key (%+v)", key)
  10064. }
  10065. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionHealthChecks")
  10066. rk := &RateLimitKey{
  10067. ProjectID: projectID,
  10068. Operation: "Insert",
  10069. Version: meta.Version("alpha"),
  10070. Service: "RegionHealthChecks",
  10071. }
  10072. klog.V(5).Infof("GCEAlphaRegionHealthChecks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  10073. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  10074. klog.V(4).Infof("GCEAlphaRegionHealthChecks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  10075. return err
  10076. }
  10077. obj.Name = key.Name
  10078. call := g.s.Alpha.RegionHealthChecks.Insert(projectID, key.Region, obj)
  10079. call.Context(ctx)
  10080. op, err := call.Do()
  10081. if err != nil {
  10082. klog.V(4).Infof("GCEAlphaRegionHealthChecks.Insert(%v, %v, ...) = %+v", ctx, key, err)
  10083. return err
  10084. }
  10085. err = g.s.WaitForCompletion(ctx, op)
  10086. klog.V(4).Infof("GCEAlphaRegionHealthChecks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  10087. return err
  10088. }
  10089. // Delete the HealthCheck referenced by key.
  10090. func (g *GCEAlphaRegionHealthChecks) Delete(ctx context.Context, key *meta.Key) error {
  10091. klog.V(5).Infof("GCEAlphaRegionHealthChecks.Delete(%v, %v): called", ctx, key)
  10092. if !key.Valid() {
  10093. klog.V(2).Infof("GCEAlphaRegionHealthChecks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  10094. return fmt.Errorf("invalid GCE key (%+v)", key)
  10095. }
  10096. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionHealthChecks")
  10097. rk := &RateLimitKey{
  10098. ProjectID: projectID,
  10099. Operation: "Delete",
  10100. Version: meta.Version("alpha"),
  10101. Service: "RegionHealthChecks",
  10102. }
  10103. klog.V(5).Infof("GCEAlphaRegionHealthChecks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  10104. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  10105. klog.V(4).Infof("GCEAlphaRegionHealthChecks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  10106. return err
  10107. }
  10108. call := g.s.Alpha.RegionHealthChecks.Delete(projectID, key.Region, key.Name)
  10109. call.Context(ctx)
  10110. op, err := call.Do()
  10111. if err != nil {
  10112. klog.V(4).Infof("GCEAlphaRegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  10113. return err
  10114. }
  10115. err = g.s.WaitForCompletion(ctx, op)
  10116. klog.V(4).Infof("GCEAlphaRegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  10117. return err
  10118. }
  10119. // Update is a method on GCEAlphaRegionHealthChecks.
  10120. func (g *GCEAlphaRegionHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *alpha.HealthCheck) error {
  10121. klog.V(5).Infof("GCEAlphaRegionHealthChecks.Update(%v, %v, ...): called", ctx, key)
  10122. if !key.Valid() {
  10123. klog.V(2).Infof("GCEAlphaRegionHealthChecks.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  10124. return fmt.Errorf("invalid GCE key (%+v)", key)
  10125. }
  10126. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionHealthChecks")
  10127. rk := &RateLimitKey{
  10128. ProjectID: projectID,
  10129. Operation: "Update",
  10130. Version: meta.Version("alpha"),
  10131. Service: "RegionHealthChecks",
  10132. }
  10133. klog.V(5).Infof("GCEAlphaRegionHealthChecks.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  10134. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  10135. klog.V(4).Infof("GCEAlphaRegionHealthChecks.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  10136. return err
  10137. }
  10138. call := g.s.Alpha.RegionHealthChecks.Update(projectID, key.Region, key.Name, arg0)
  10139. call.Context(ctx)
  10140. op, err := call.Do()
  10141. if err != nil {
  10142. klog.V(4).Infof("GCEAlphaRegionHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err)
  10143. return err
  10144. }
  10145. err = g.s.WaitForCompletion(ctx, op)
  10146. klog.V(4).Infof("GCEAlphaRegionHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err)
  10147. return err
  10148. }
  10149. // BetaRegionHealthChecks is an interface that allows for mocking of RegionHealthChecks.
  10150. type BetaRegionHealthChecks interface {
  10151. Get(ctx context.Context, key *meta.Key) (*beta.HealthCheck, error)
  10152. List(ctx context.Context, region string, fl *filter.F) ([]*beta.HealthCheck, error)
  10153. Insert(ctx context.Context, key *meta.Key, obj *beta.HealthCheck) error
  10154. Delete(ctx context.Context, key *meta.Key) error
  10155. Update(context.Context, *meta.Key, *beta.HealthCheck) error
  10156. }
  10157. // NewMockBetaRegionHealthChecks returns a new mock for RegionHealthChecks.
  10158. func NewMockBetaRegionHealthChecks(pr ProjectRouter, objs map[meta.Key]*MockRegionHealthChecksObj) *MockBetaRegionHealthChecks {
  10159. mock := &MockBetaRegionHealthChecks{
  10160. ProjectRouter: pr,
  10161. Objects: objs,
  10162. GetError: map[meta.Key]error{},
  10163. InsertError: map[meta.Key]error{},
  10164. DeleteError: map[meta.Key]error{},
  10165. }
  10166. return mock
  10167. }
  10168. // MockBetaRegionHealthChecks is the mock for RegionHealthChecks.
  10169. type MockBetaRegionHealthChecks struct {
  10170. Lock sync.Mutex
  10171. ProjectRouter ProjectRouter
  10172. // Objects maintained by the mock.
  10173. Objects map[meta.Key]*MockRegionHealthChecksObj
  10174. // If an entry exists for the given key and operation, then the error
  10175. // will be returned instead of the operation.
  10176. GetError map[meta.Key]error
  10177. ListError *error
  10178. InsertError map[meta.Key]error
  10179. DeleteError map[meta.Key]error
  10180. // xxxHook allow you to intercept the standard processing of the mock in
  10181. // order to add your own logic. Return (true, _, _) to prevent the normal
  10182. // execution flow of the mock. Return (false, nil, nil) to continue with
  10183. // normal mock behavior/ after the hook function executes.
  10184. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaRegionHealthChecks) (bool, *beta.HealthCheck, error)
  10185. ListHook func(ctx context.Context, region string, fl *filter.F, m *MockBetaRegionHealthChecks) (bool, []*beta.HealthCheck, error)
  10186. InsertHook func(ctx context.Context, key *meta.Key, obj *beta.HealthCheck, m *MockBetaRegionHealthChecks) (bool, error)
  10187. DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaRegionHealthChecks) (bool, error)
  10188. UpdateHook func(context.Context, *meta.Key, *beta.HealthCheck, *MockBetaRegionHealthChecks) error
  10189. // X is extra state that can be used as part of the mock. Generated code
  10190. // will not use this field.
  10191. X interface{}
  10192. }
  10193. // Get returns the object from the mock.
  10194. func (m *MockBetaRegionHealthChecks) Get(ctx context.Context, key *meta.Key) (*beta.HealthCheck, error) {
  10195. if m.GetHook != nil {
  10196. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  10197. klog.V(5).Infof("MockBetaRegionHealthChecks.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  10198. return obj, err
  10199. }
  10200. }
  10201. if !key.Valid() {
  10202. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  10203. }
  10204. m.Lock.Lock()
  10205. defer m.Lock.Unlock()
  10206. if err, ok := m.GetError[*key]; ok {
  10207. klog.V(5).Infof("MockBetaRegionHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err)
  10208. return nil, err
  10209. }
  10210. if obj, ok := m.Objects[*key]; ok {
  10211. typedObj := obj.ToBeta()
  10212. klog.V(5).Infof("MockBetaRegionHealthChecks.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  10213. return typedObj, nil
  10214. }
  10215. err := &googleapi.Error{
  10216. Code: http.StatusNotFound,
  10217. Message: fmt.Sprintf("MockBetaRegionHealthChecks %v not found", key),
  10218. }
  10219. klog.V(5).Infof("MockBetaRegionHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err)
  10220. return nil, err
  10221. }
  10222. // List all of the objects in the mock in the given region.
  10223. func (m *MockBetaRegionHealthChecks) List(ctx context.Context, region string, fl *filter.F) ([]*beta.HealthCheck, error) {
  10224. if m.ListHook != nil {
  10225. if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept {
  10226. klog.V(5).Infof("MockBetaRegionHealthChecks.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err)
  10227. return objs, err
  10228. }
  10229. }
  10230. m.Lock.Lock()
  10231. defer m.Lock.Unlock()
  10232. if m.ListError != nil {
  10233. err := *m.ListError
  10234. klog.V(5).Infof("MockBetaRegionHealthChecks.List(%v, %q, %v) = nil, %v", ctx, region, fl, err)
  10235. return nil, *m.ListError
  10236. }
  10237. var objs []*beta.HealthCheck
  10238. for key, obj := range m.Objects {
  10239. if key.Region != region {
  10240. continue
  10241. }
  10242. if !fl.Match(obj.ToBeta()) {
  10243. continue
  10244. }
  10245. objs = append(objs, obj.ToBeta())
  10246. }
  10247. klog.V(5).Infof("MockBetaRegionHealthChecks.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs))
  10248. return objs, nil
  10249. }
  10250. // Insert is a mock for inserting/creating a new object.
  10251. func (m *MockBetaRegionHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *beta.HealthCheck) error {
  10252. if m.InsertHook != nil {
  10253. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  10254. klog.V(5).Infof("MockBetaRegionHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  10255. return err
  10256. }
  10257. }
  10258. if !key.Valid() {
  10259. return fmt.Errorf("invalid GCE key (%+v)", key)
  10260. }
  10261. m.Lock.Lock()
  10262. defer m.Lock.Unlock()
  10263. if err, ok := m.InsertError[*key]; ok {
  10264. klog.V(5).Infof("MockBetaRegionHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  10265. return err
  10266. }
  10267. if _, ok := m.Objects[*key]; ok {
  10268. err := &googleapi.Error{
  10269. Code: http.StatusConflict,
  10270. Message: fmt.Sprintf("MockBetaRegionHealthChecks %v exists", key),
  10271. }
  10272. klog.V(5).Infof("MockBetaRegionHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  10273. return err
  10274. }
  10275. obj.Name = key.Name
  10276. projectID := m.ProjectRouter.ProjectID(ctx, "beta", "healthChecks")
  10277. obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "healthChecks", key)
  10278. m.Objects[*key] = &MockRegionHealthChecksObj{obj}
  10279. klog.V(5).Infof("MockBetaRegionHealthChecks.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  10280. return nil
  10281. }
  10282. // Delete is a mock for deleting the object.
  10283. func (m *MockBetaRegionHealthChecks) Delete(ctx context.Context, key *meta.Key) error {
  10284. if m.DeleteHook != nil {
  10285. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  10286. klog.V(5).Infof("MockBetaRegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  10287. return err
  10288. }
  10289. }
  10290. if !key.Valid() {
  10291. return fmt.Errorf("invalid GCE key (%+v)", key)
  10292. }
  10293. m.Lock.Lock()
  10294. defer m.Lock.Unlock()
  10295. if err, ok := m.DeleteError[*key]; ok {
  10296. klog.V(5).Infof("MockBetaRegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  10297. return err
  10298. }
  10299. if _, ok := m.Objects[*key]; !ok {
  10300. err := &googleapi.Error{
  10301. Code: http.StatusNotFound,
  10302. Message: fmt.Sprintf("MockBetaRegionHealthChecks %v not found", key),
  10303. }
  10304. klog.V(5).Infof("MockBetaRegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  10305. return err
  10306. }
  10307. delete(m.Objects, *key)
  10308. klog.V(5).Infof("MockBetaRegionHealthChecks.Delete(%v, %v) = nil", ctx, key)
  10309. return nil
  10310. }
  10311. // Obj wraps the object for use in the mock.
  10312. func (m *MockBetaRegionHealthChecks) Obj(o *beta.HealthCheck) *MockRegionHealthChecksObj {
  10313. return &MockRegionHealthChecksObj{o}
  10314. }
  10315. // Update is a mock for the corresponding method.
  10316. func (m *MockBetaRegionHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *beta.HealthCheck) error {
  10317. if m.UpdateHook != nil {
  10318. return m.UpdateHook(ctx, key, arg0, m)
  10319. }
  10320. return nil
  10321. }
  10322. // GCEBetaRegionHealthChecks is a simplifying adapter for the GCE RegionHealthChecks.
  10323. type GCEBetaRegionHealthChecks struct {
  10324. s *Service
  10325. }
  10326. // Get the HealthCheck named by key.
  10327. func (g *GCEBetaRegionHealthChecks) Get(ctx context.Context, key *meta.Key) (*beta.HealthCheck, error) {
  10328. klog.V(5).Infof("GCEBetaRegionHealthChecks.Get(%v, %v): called", ctx, key)
  10329. if !key.Valid() {
  10330. klog.V(2).Infof("GCEBetaRegionHealthChecks.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  10331. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  10332. }
  10333. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionHealthChecks")
  10334. rk := &RateLimitKey{
  10335. ProjectID: projectID,
  10336. Operation: "Get",
  10337. Version: meta.Version("beta"),
  10338. Service: "RegionHealthChecks",
  10339. }
  10340. klog.V(5).Infof("GCEBetaRegionHealthChecks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  10341. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  10342. klog.V(4).Infof("GCEBetaRegionHealthChecks.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  10343. return nil, err
  10344. }
  10345. call := g.s.Beta.RegionHealthChecks.Get(projectID, key.Region, key.Name)
  10346. call.Context(ctx)
  10347. v, err := call.Do()
  10348. klog.V(4).Infof("GCEBetaRegionHealthChecks.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  10349. return v, err
  10350. }
  10351. // List all HealthCheck objects.
  10352. func (g *GCEBetaRegionHealthChecks) List(ctx context.Context, region string, fl *filter.F) ([]*beta.HealthCheck, error) {
  10353. klog.V(5).Infof("GCEBetaRegionHealthChecks.List(%v, %v, %v) called", ctx, region, fl)
  10354. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionHealthChecks")
  10355. rk := &RateLimitKey{
  10356. ProjectID: projectID,
  10357. Operation: "List",
  10358. Version: meta.Version("beta"),
  10359. Service: "RegionHealthChecks",
  10360. }
  10361. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  10362. return nil, err
  10363. }
  10364. klog.V(5).Infof("GCEBetaRegionHealthChecks.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk)
  10365. call := g.s.Beta.RegionHealthChecks.List(projectID, region)
  10366. if fl != filter.None {
  10367. call.Filter(fl.String())
  10368. }
  10369. var all []*beta.HealthCheck
  10370. f := func(l *beta.HealthCheckList) error {
  10371. klog.V(5).Infof("GCEBetaRegionHealthChecks.List(%v, ..., %v): page %+v", ctx, fl, l)
  10372. all = append(all, l.Items...)
  10373. return nil
  10374. }
  10375. if err := call.Pages(ctx, f); err != nil {
  10376. klog.V(4).Infof("GCEBetaRegionHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  10377. return nil, err
  10378. }
  10379. if klog.V(4) {
  10380. klog.V(4).Infof("GCEBetaRegionHealthChecks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  10381. } else if klog.V(5) {
  10382. var asStr []string
  10383. for _, o := range all {
  10384. asStr = append(asStr, fmt.Sprintf("%+v", o))
  10385. }
  10386. klog.V(5).Infof("GCEBetaRegionHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  10387. }
  10388. return all, nil
  10389. }
  10390. // Insert HealthCheck with key of value obj.
  10391. func (g *GCEBetaRegionHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *beta.HealthCheck) error {
  10392. klog.V(5).Infof("GCEBetaRegionHealthChecks.Insert(%v, %v, %+v): called", ctx, key, obj)
  10393. if !key.Valid() {
  10394. klog.V(2).Infof("GCEBetaRegionHealthChecks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  10395. return fmt.Errorf("invalid GCE key (%+v)", key)
  10396. }
  10397. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionHealthChecks")
  10398. rk := &RateLimitKey{
  10399. ProjectID: projectID,
  10400. Operation: "Insert",
  10401. Version: meta.Version("beta"),
  10402. Service: "RegionHealthChecks",
  10403. }
  10404. klog.V(5).Infof("GCEBetaRegionHealthChecks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  10405. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  10406. klog.V(4).Infof("GCEBetaRegionHealthChecks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  10407. return err
  10408. }
  10409. obj.Name = key.Name
  10410. call := g.s.Beta.RegionHealthChecks.Insert(projectID, key.Region, obj)
  10411. call.Context(ctx)
  10412. op, err := call.Do()
  10413. if err != nil {
  10414. klog.V(4).Infof("GCEBetaRegionHealthChecks.Insert(%v, %v, ...) = %+v", ctx, key, err)
  10415. return err
  10416. }
  10417. err = g.s.WaitForCompletion(ctx, op)
  10418. klog.V(4).Infof("GCEBetaRegionHealthChecks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  10419. return err
  10420. }
  10421. // Delete the HealthCheck referenced by key.
  10422. func (g *GCEBetaRegionHealthChecks) Delete(ctx context.Context, key *meta.Key) error {
  10423. klog.V(5).Infof("GCEBetaRegionHealthChecks.Delete(%v, %v): called", ctx, key)
  10424. if !key.Valid() {
  10425. klog.V(2).Infof("GCEBetaRegionHealthChecks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  10426. return fmt.Errorf("invalid GCE key (%+v)", key)
  10427. }
  10428. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionHealthChecks")
  10429. rk := &RateLimitKey{
  10430. ProjectID: projectID,
  10431. Operation: "Delete",
  10432. Version: meta.Version("beta"),
  10433. Service: "RegionHealthChecks",
  10434. }
  10435. klog.V(5).Infof("GCEBetaRegionHealthChecks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  10436. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  10437. klog.V(4).Infof("GCEBetaRegionHealthChecks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  10438. return err
  10439. }
  10440. call := g.s.Beta.RegionHealthChecks.Delete(projectID, key.Region, key.Name)
  10441. call.Context(ctx)
  10442. op, err := call.Do()
  10443. if err != nil {
  10444. klog.V(4).Infof("GCEBetaRegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  10445. return err
  10446. }
  10447. err = g.s.WaitForCompletion(ctx, op)
  10448. klog.V(4).Infof("GCEBetaRegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  10449. return err
  10450. }
  10451. // Update is a method on GCEBetaRegionHealthChecks.
  10452. func (g *GCEBetaRegionHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *beta.HealthCheck) error {
  10453. klog.V(5).Infof("GCEBetaRegionHealthChecks.Update(%v, %v, ...): called", ctx, key)
  10454. if !key.Valid() {
  10455. klog.V(2).Infof("GCEBetaRegionHealthChecks.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  10456. return fmt.Errorf("invalid GCE key (%+v)", key)
  10457. }
  10458. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionHealthChecks")
  10459. rk := &RateLimitKey{
  10460. ProjectID: projectID,
  10461. Operation: "Update",
  10462. Version: meta.Version("beta"),
  10463. Service: "RegionHealthChecks",
  10464. }
  10465. klog.V(5).Infof("GCEBetaRegionHealthChecks.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  10466. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  10467. klog.V(4).Infof("GCEBetaRegionHealthChecks.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  10468. return err
  10469. }
  10470. call := g.s.Beta.RegionHealthChecks.Update(projectID, key.Region, key.Name, arg0)
  10471. call.Context(ctx)
  10472. op, err := call.Do()
  10473. if err != nil {
  10474. klog.V(4).Infof("GCEBetaRegionHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err)
  10475. return err
  10476. }
  10477. err = g.s.WaitForCompletion(ctx, op)
  10478. klog.V(4).Infof("GCEBetaRegionHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err)
  10479. return err
  10480. }
  10481. // HttpHealthChecks is an interface that allows for mocking of HttpHealthChecks.
  10482. type HttpHealthChecks interface {
  10483. Get(ctx context.Context, key *meta.Key) (*ga.HttpHealthCheck, error)
  10484. List(ctx context.Context, fl *filter.F) ([]*ga.HttpHealthCheck, error)
  10485. Insert(ctx context.Context, key *meta.Key, obj *ga.HttpHealthCheck) error
  10486. Delete(ctx context.Context, key *meta.Key) error
  10487. Update(context.Context, *meta.Key, *ga.HttpHealthCheck) error
  10488. }
  10489. // NewMockHttpHealthChecks returns a new mock for HttpHealthChecks.
  10490. func NewMockHttpHealthChecks(pr ProjectRouter, objs map[meta.Key]*MockHttpHealthChecksObj) *MockHttpHealthChecks {
  10491. mock := &MockHttpHealthChecks{
  10492. ProjectRouter: pr,
  10493. Objects: objs,
  10494. GetError: map[meta.Key]error{},
  10495. InsertError: map[meta.Key]error{},
  10496. DeleteError: map[meta.Key]error{},
  10497. }
  10498. return mock
  10499. }
  10500. // MockHttpHealthChecks is the mock for HttpHealthChecks.
  10501. type MockHttpHealthChecks struct {
  10502. Lock sync.Mutex
  10503. ProjectRouter ProjectRouter
  10504. // Objects maintained by the mock.
  10505. Objects map[meta.Key]*MockHttpHealthChecksObj
  10506. // If an entry exists for the given key and operation, then the error
  10507. // will be returned instead of the operation.
  10508. GetError map[meta.Key]error
  10509. ListError *error
  10510. InsertError map[meta.Key]error
  10511. DeleteError map[meta.Key]error
  10512. // xxxHook allow you to intercept the standard processing of the mock in
  10513. // order to add your own logic. Return (true, _, _) to prevent the normal
  10514. // execution flow of the mock. Return (false, nil, nil) to continue with
  10515. // normal mock behavior/ after the hook function executes.
  10516. GetHook func(ctx context.Context, key *meta.Key, m *MockHttpHealthChecks) (bool, *ga.HttpHealthCheck, error)
  10517. ListHook func(ctx context.Context, fl *filter.F, m *MockHttpHealthChecks) (bool, []*ga.HttpHealthCheck, error)
  10518. InsertHook func(ctx context.Context, key *meta.Key, obj *ga.HttpHealthCheck, m *MockHttpHealthChecks) (bool, error)
  10519. DeleteHook func(ctx context.Context, key *meta.Key, m *MockHttpHealthChecks) (bool, error)
  10520. UpdateHook func(context.Context, *meta.Key, *ga.HttpHealthCheck, *MockHttpHealthChecks) error
  10521. // X is extra state that can be used as part of the mock. Generated code
  10522. // will not use this field.
  10523. X interface{}
  10524. }
  10525. // Get returns the object from the mock.
  10526. func (m *MockHttpHealthChecks) Get(ctx context.Context, key *meta.Key) (*ga.HttpHealthCheck, error) {
  10527. if m.GetHook != nil {
  10528. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  10529. klog.V(5).Infof("MockHttpHealthChecks.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  10530. return obj, err
  10531. }
  10532. }
  10533. if !key.Valid() {
  10534. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  10535. }
  10536. m.Lock.Lock()
  10537. defer m.Lock.Unlock()
  10538. if err, ok := m.GetError[*key]; ok {
  10539. klog.V(5).Infof("MockHttpHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err)
  10540. return nil, err
  10541. }
  10542. if obj, ok := m.Objects[*key]; ok {
  10543. typedObj := obj.ToGA()
  10544. klog.V(5).Infof("MockHttpHealthChecks.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  10545. return typedObj, nil
  10546. }
  10547. err := &googleapi.Error{
  10548. Code: http.StatusNotFound,
  10549. Message: fmt.Sprintf("MockHttpHealthChecks %v not found", key),
  10550. }
  10551. klog.V(5).Infof("MockHttpHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err)
  10552. return nil, err
  10553. }
  10554. // List all of the objects in the mock.
  10555. func (m *MockHttpHealthChecks) List(ctx context.Context, fl *filter.F) ([]*ga.HttpHealthCheck, error) {
  10556. if m.ListHook != nil {
  10557. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  10558. klog.V(5).Infof("MockHttpHealthChecks.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  10559. return objs, err
  10560. }
  10561. }
  10562. m.Lock.Lock()
  10563. defer m.Lock.Unlock()
  10564. if m.ListError != nil {
  10565. err := *m.ListError
  10566. klog.V(5).Infof("MockHttpHealthChecks.List(%v, %v) = nil, %v", ctx, fl, err)
  10567. return nil, *m.ListError
  10568. }
  10569. var objs []*ga.HttpHealthCheck
  10570. for _, obj := range m.Objects {
  10571. if !fl.Match(obj.ToGA()) {
  10572. continue
  10573. }
  10574. objs = append(objs, obj.ToGA())
  10575. }
  10576. klog.V(5).Infof("MockHttpHealthChecks.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  10577. return objs, nil
  10578. }
  10579. // Insert is a mock for inserting/creating a new object.
  10580. func (m *MockHttpHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *ga.HttpHealthCheck) error {
  10581. if m.InsertHook != nil {
  10582. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  10583. klog.V(5).Infof("MockHttpHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  10584. return err
  10585. }
  10586. }
  10587. if !key.Valid() {
  10588. return fmt.Errorf("invalid GCE key (%+v)", key)
  10589. }
  10590. m.Lock.Lock()
  10591. defer m.Lock.Unlock()
  10592. if err, ok := m.InsertError[*key]; ok {
  10593. klog.V(5).Infof("MockHttpHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  10594. return err
  10595. }
  10596. if _, ok := m.Objects[*key]; ok {
  10597. err := &googleapi.Error{
  10598. Code: http.StatusConflict,
  10599. Message: fmt.Sprintf("MockHttpHealthChecks %v exists", key),
  10600. }
  10601. klog.V(5).Infof("MockHttpHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  10602. return err
  10603. }
  10604. obj.Name = key.Name
  10605. projectID := m.ProjectRouter.ProjectID(ctx, "ga", "httpHealthChecks")
  10606. obj.SelfLink = SelfLink(meta.VersionGA, projectID, "httpHealthChecks", key)
  10607. m.Objects[*key] = &MockHttpHealthChecksObj{obj}
  10608. klog.V(5).Infof("MockHttpHealthChecks.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  10609. return nil
  10610. }
  10611. // Delete is a mock for deleting the object.
  10612. func (m *MockHttpHealthChecks) Delete(ctx context.Context, key *meta.Key) error {
  10613. if m.DeleteHook != nil {
  10614. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  10615. klog.V(5).Infof("MockHttpHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  10616. return err
  10617. }
  10618. }
  10619. if !key.Valid() {
  10620. return fmt.Errorf("invalid GCE key (%+v)", key)
  10621. }
  10622. m.Lock.Lock()
  10623. defer m.Lock.Unlock()
  10624. if err, ok := m.DeleteError[*key]; ok {
  10625. klog.V(5).Infof("MockHttpHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  10626. return err
  10627. }
  10628. if _, ok := m.Objects[*key]; !ok {
  10629. err := &googleapi.Error{
  10630. Code: http.StatusNotFound,
  10631. Message: fmt.Sprintf("MockHttpHealthChecks %v not found", key),
  10632. }
  10633. klog.V(5).Infof("MockHttpHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  10634. return err
  10635. }
  10636. delete(m.Objects, *key)
  10637. klog.V(5).Infof("MockHttpHealthChecks.Delete(%v, %v) = nil", ctx, key)
  10638. return nil
  10639. }
  10640. // Obj wraps the object for use in the mock.
  10641. func (m *MockHttpHealthChecks) Obj(o *ga.HttpHealthCheck) *MockHttpHealthChecksObj {
  10642. return &MockHttpHealthChecksObj{o}
  10643. }
  10644. // Update is a mock for the corresponding method.
  10645. func (m *MockHttpHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *ga.HttpHealthCheck) error {
  10646. if m.UpdateHook != nil {
  10647. return m.UpdateHook(ctx, key, arg0, m)
  10648. }
  10649. return nil
  10650. }
  10651. // GCEHttpHealthChecks is a simplifying adapter for the GCE HttpHealthChecks.
  10652. type GCEHttpHealthChecks struct {
  10653. s *Service
  10654. }
  10655. // Get the HttpHealthCheck named by key.
  10656. func (g *GCEHttpHealthChecks) Get(ctx context.Context, key *meta.Key) (*ga.HttpHealthCheck, error) {
  10657. klog.V(5).Infof("GCEHttpHealthChecks.Get(%v, %v): called", ctx, key)
  10658. if !key.Valid() {
  10659. klog.V(2).Infof("GCEHttpHealthChecks.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  10660. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  10661. }
  10662. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HttpHealthChecks")
  10663. rk := &RateLimitKey{
  10664. ProjectID: projectID,
  10665. Operation: "Get",
  10666. Version: meta.Version("ga"),
  10667. Service: "HttpHealthChecks",
  10668. }
  10669. klog.V(5).Infof("GCEHttpHealthChecks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  10670. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  10671. klog.V(4).Infof("GCEHttpHealthChecks.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  10672. return nil, err
  10673. }
  10674. call := g.s.GA.HttpHealthChecks.Get(projectID, key.Name)
  10675. call.Context(ctx)
  10676. v, err := call.Do()
  10677. klog.V(4).Infof("GCEHttpHealthChecks.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  10678. return v, err
  10679. }
  10680. // List all HttpHealthCheck objects.
  10681. func (g *GCEHttpHealthChecks) List(ctx context.Context, fl *filter.F) ([]*ga.HttpHealthCheck, error) {
  10682. klog.V(5).Infof("GCEHttpHealthChecks.List(%v, %v) called", ctx, fl)
  10683. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HttpHealthChecks")
  10684. rk := &RateLimitKey{
  10685. ProjectID: projectID,
  10686. Operation: "List",
  10687. Version: meta.Version("ga"),
  10688. Service: "HttpHealthChecks",
  10689. }
  10690. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  10691. return nil, err
  10692. }
  10693. klog.V(5).Infof("GCEHttpHealthChecks.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  10694. call := g.s.GA.HttpHealthChecks.List(projectID)
  10695. if fl != filter.None {
  10696. call.Filter(fl.String())
  10697. }
  10698. var all []*ga.HttpHealthCheck
  10699. f := func(l *ga.HttpHealthCheckList) error {
  10700. klog.V(5).Infof("GCEHttpHealthChecks.List(%v, ..., %v): page %+v", ctx, fl, l)
  10701. all = append(all, l.Items...)
  10702. return nil
  10703. }
  10704. if err := call.Pages(ctx, f); err != nil {
  10705. klog.V(4).Infof("GCEHttpHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  10706. return nil, err
  10707. }
  10708. if klog.V(4) {
  10709. klog.V(4).Infof("GCEHttpHealthChecks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  10710. } else if klog.V(5) {
  10711. var asStr []string
  10712. for _, o := range all {
  10713. asStr = append(asStr, fmt.Sprintf("%+v", o))
  10714. }
  10715. klog.V(5).Infof("GCEHttpHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  10716. }
  10717. return all, nil
  10718. }
  10719. // Insert HttpHealthCheck with key of value obj.
  10720. func (g *GCEHttpHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *ga.HttpHealthCheck) error {
  10721. klog.V(5).Infof("GCEHttpHealthChecks.Insert(%v, %v, %+v): called", ctx, key, obj)
  10722. if !key.Valid() {
  10723. klog.V(2).Infof("GCEHttpHealthChecks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  10724. return fmt.Errorf("invalid GCE key (%+v)", key)
  10725. }
  10726. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HttpHealthChecks")
  10727. rk := &RateLimitKey{
  10728. ProjectID: projectID,
  10729. Operation: "Insert",
  10730. Version: meta.Version("ga"),
  10731. Service: "HttpHealthChecks",
  10732. }
  10733. klog.V(5).Infof("GCEHttpHealthChecks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  10734. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  10735. klog.V(4).Infof("GCEHttpHealthChecks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  10736. return err
  10737. }
  10738. obj.Name = key.Name
  10739. call := g.s.GA.HttpHealthChecks.Insert(projectID, obj)
  10740. call.Context(ctx)
  10741. op, err := call.Do()
  10742. if err != nil {
  10743. klog.V(4).Infof("GCEHttpHealthChecks.Insert(%v, %v, ...) = %+v", ctx, key, err)
  10744. return err
  10745. }
  10746. err = g.s.WaitForCompletion(ctx, op)
  10747. klog.V(4).Infof("GCEHttpHealthChecks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  10748. return err
  10749. }
  10750. // Delete the HttpHealthCheck referenced by key.
  10751. func (g *GCEHttpHealthChecks) Delete(ctx context.Context, key *meta.Key) error {
  10752. klog.V(5).Infof("GCEHttpHealthChecks.Delete(%v, %v): called", ctx, key)
  10753. if !key.Valid() {
  10754. klog.V(2).Infof("GCEHttpHealthChecks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  10755. return fmt.Errorf("invalid GCE key (%+v)", key)
  10756. }
  10757. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HttpHealthChecks")
  10758. rk := &RateLimitKey{
  10759. ProjectID: projectID,
  10760. Operation: "Delete",
  10761. Version: meta.Version("ga"),
  10762. Service: "HttpHealthChecks",
  10763. }
  10764. klog.V(5).Infof("GCEHttpHealthChecks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  10765. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  10766. klog.V(4).Infof("GCEHttpHealthChecks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  10767. return err
  10768. }
  10769. call := g.s.GA.HttpHealthChecks.Delete(projectID, key.Name)
  10770. call.Context(ctx)
  10771. op, err := call.Do()
  10772. if err != nil {
  10773. klog.V(4).Infof("GCEHttpHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  10774. return err
  10775. }
  10776. err = g.s.WaitForCompletion(ctx, op)
  10777. klog.V(4).Infof("GCEHttpHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  10778. return err
  10779. }
  10780. // Update is a method on GCEHttpHealthChecks.
  10781. func (g *GCEHttpHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *ga.HttpHealthCheck) error {
  10782. klog.V(5).Infof("GCEHttpHealthChecks.Update(%v, %v, ...): called", ctx, key)
  10783. if !key.Valid() {
  10784. klog.V(2).Infof("GCEHttpHealthChecks.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  10785. return fmt.Errorf("invalid GCE key (%+v)", key)
  10786. }
  10787. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HttpHealthChecks")
  10788. rk := &RateLimitKey{
  10789. ProjectID: projectID,
  10790. Operation: "Update",
  10791. Version: meta.Version("ga"),
  10792. Service: "HttpHealthChecks",
  10793. }
  10794. klog.V(5).Infof("GCEHttpHealthChecks.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  10795. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  10796. klog.V(4).Infof("GCEHttpHealthChecks.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  10797. return err
  10798. }
  10799. call := g.s.GA.HttpHealthChecks.Update(projectID, key.Name, arg0)
  10800. call.Context(ctx)
  10801. op, err := call.Do()
  10802. if err != nil {
  10803. klog.V(4).Infof("GCEHttpHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err)
  10804. return err
  10805. }
  10806. err = g.s.WaitForCompletion(ctx, op)
  10807. klog.V(4).Infof("GCEHttpHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err)
  10808. return err
  10809. }
  10810. // HttpsHealthChecks is an interface that allows for mocking of HttpsHealthChecks.
  10811. type HttpsHealthChecks interface {
  10812. Get(ctx context.Context, key *meta.Key) (*ga.HttpsHealthCheck, error)
  10813. List(ctx context.Context, fl *filter.F) ([]*ga.HttpsHealthCheck, error)
  10814. Insert(ctx context.Context, key *meta.Key, obj *ga.HttpsHealthCheck) error
  10815. Delete(ctx context.Context, key *meta.Key) error
  10816. Update(context.Context, *meta.Key, *ga.HttpsHealthCheck) error
  10817. }
  10818. // NewMockHttpsHealthChecks returns a new mock for HttpsHealthChecks.
  10819. func NewMockHttpsHealthChecks(pr ProjectRouter, objs map[meta.Key]*MockHttpsHealthChecksObj) *MockHttpsHealthChecks {
  10820. mock := &MockHttpsHealthChecks{
  10821. ProjectRouter: pr,
  10822. Objects: objs,
  10823. GetError: map[meta.Key]error{},
  10824. InsertError: map[meta.Key]error{},
  10825. DeleteError: map[meta.Key]error{},
  10826. }
  10827. return mock
  10828. }
  10829. // MockHttpsHealthChecks is the mock for HttpsHealthChecks.
  10830. type MockHttpsHealthChecks struct {
  10831. Lock sync.Mutex
  10832. ProjectRouter ProjectRouter
  10833. // Objects maintained by the mock.
  10834. Objects map[meta.Key]*MockHttpsHealthChecksObj
  10835. // If an entry exists for the given key and operation, then the error
  10836. // will be returned instead of the operation.
  10837. GetError map[meta.Key]error
  10838. ListError *error
  10839. InsertError map[meta.Key]error
  10840. DeleteError map[meta.Key]error
  10841. // xxxHook allow you to intercept the standard processing of the mock in
  10842. // order to add your own logic. Return (true, _, _) to prevent the normal
  10843. // execution flow of the mock. Return (false, nil, nil) to continue with
  10844. // normal mock behavior/ after the hook function executes.
  10845. GetHook func(ctx context.Context, key *meta.Key, m *MockHttpsHealthChecks) (bool, *ga.HttpsHealthCheck, error)
  10846. ListHook func(ctx context.Context, fl *filter.F, m *MockHttpsHealthChecks) (bool, []*ga.HttpsHealthCheck, error)
  10847. InsertHook func(ctx context.Context, key *meta.Key, obj *ga.HttpsHealthCheck, m *MockHttpsHealthChecks) (bool, error)
  10848. DeleteHook func(ctx context.Context, key *meta.Key, m *MockHttpsHealthChecks) (bool, error)
  10849. UpdateHook func(context.Context, *meta.Key, *ga.HttpsHealthCheck, *MockHttpsHealthChecks) error
  10850. // X is extra state that can be used as part of the mock. Generated code
  10851. // will not use this field.
  10852. X interface{}
  10853. }
  10854. // Get returns the object from the mock.
  10855. func (m *MockHttpsHealthChecks) Get(ctx context.Context, key *meta.Key) (*ga.HttpsHealthCheck, error) {
  10856. if m.GetHook != nil {
  10857. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  10858. klog.V(5).Infof("MockHttpsHealthChecks.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  10859. return obj, err
  10860. }
  10861. }
  10862. if !key.Valid() {
  10863. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  10864. }
  10865. m.Lock.Lock()
  10866. defer m.Lock.Unlock()
  10867. if err, ok := m.GetError[*key]; ok {
  10868. klog.V(5).Infof("MockHttpsHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err)
  10869. return nil, err
  10870. }
  10871. if obj, ok := m.Objects[*key]; ok {
  10872. typedObj := obj.ToGA()
  10873. klog.V(5).Infof("MockHttpsHealthChecks.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  10874. return typedObj, nil
  10875. }
  10876. err := &googleapi.Error{
  10877. Code: http.StatusNotFound,
  10878. Message: fmt.Sprintf("MockHttpsHealthChecks %v not found", key),
  10879. }
  10880. klog.V(5).Infof("MockHttpsHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err)
  10881. return nil, err
  10882. }
  10883. // List all of the objects in the mock.
  10884. func (m *MockHttpsHealthChecks) List(ctx context.Context, fl *filter.F) ([]*ga.HttpsHealthCheck, error) {
  10885. if m.ListHook != nil {
  10886. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  10887. klog.V(5).Infof("MockHttpsHealthChecks.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  10888. return objs, err
  10889. }
  10890. }
  10891. m.Lock.Lock()
  10892. defer m.Lock.Unlock()
  10893. if m.ListError != nil {
  10894. err := *m.ListError
  10895. klog.V(5).Infof("MockHttpsHealthChecks.List(%v, %v) = nil, %v", ctx, fl, err)
  10896. return nil, *m.ListError
  10897. }
  10898. var objs []*ga.HttpsHealthCheck
  10899. for _, obj := range m.Objects {
  10900. if !fl.Match(obj.ToGA()) {
  10901. continue
  10902. }
  10903. objs = append(objs, obj.ToGA())
  10904. }
  10905. klog.V(5).Infof("MockHttpsHealthChecks.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  10906. return objs, nil
  10907. }
  10908. // Insert is a mock for inserting/creating a new object.
  10909. func (m *MockHttpsHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *ga.HttpsHealthCheck) error {
  10910. if m.InsertHook != nil {
  10911. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  10912. klog.V(5).Infof("MockHttpsHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  10913. return err
  10914. }
  10915. }
  10916. if !key.Valid() {
  10917. return fmt.Errorf("invalid GCE key (%+v)", key)
  10918. }
  10919. m.Lock.Lock()
  10920. defer m.Lock.Unlock()
  10921. if err, ok := m.InsertError[*key]; ok {
  10922. klog.V(5).Infof("MockHttpsHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  10923. return err
  10924. }
  10925. if _, ok := m.Objects[*key]; ok {
  10926. err := &googleapi.Error{
  10927. Code: http.StatusConflict,
  10928. Message: fmt.Sprintf("MockHttpsHealthChecks %v exists", key),
  10929. }
  10930. klog.V(5).Infof("MockHttpsHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  10931. return err
  10932. }
  10933. obj.Name = key.Name
  10934. projectID := m.ProjectRouter.ProjectID(ctx, "ga", "httpsHealthChecks")
  10935. obj.SelfLink = SelfLink(meta.VersionGA, projectID, "httpsHealthChecks", key)
  10936. m.Objects[*key] = &MockHttpsHealthChecksObj{obj}
  10937. klog.V(5).Infof("MockHttpsHealthChecks.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  10938. return nil
  10939. }
  10940. // Delete is a mock for deleting the object.
  10941. func (m *MockHttpsHealthChecks) Delete(ctx context.Context, key *meta.Key) error {
  10942. if m.DeleteHook != nil {
  10943. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  10944. klog.V(5).Infof("MockHttpsHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  10945. return err
  10946. }
  10947. }
  10948. if !key.Valid() {
  10949. return fmt.Errorf("invalid GCE key (%+v)", key)
  10950. }
  10951. m.Lock.Lock()
  10952. defer m.Lock.Unlock()
  10953. if err, ok := m.DeleteError[*key]; ok {
  10954. klog.V(5).Infof("MockHttpsHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  10955. return err
  10956. }
  10957. if _, ok := m.Objects[*key]; !ok {
  10958. err := &googleapi.Error{
  10959. Code: http.StatusNotFound,
  10960. Message: fmt.Sprintf("MockHttpsHealthChecks %v not found", key),
  10961. }
  10962. klog.V(5).Infof("MockHttpsHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  10963. return err
  10964. }
  10965. delete(m.Objects, *key)
  10966. klog.V(5).Infof("MockHttpsHealthChecks.Delete(%v, %v) = nil", ctx, key)
  10967. return nil
  10968. }
  10969. // Obj wraps the object for use in the mock.
  10970. func (m *MockHttpsHealthChecks) Obj(o *ga.HttpsHealthCheck) *MockHttpsHealthChecksObj {
  10971. return &MockHttpsHealthChecksObj{o}
  10972. }
  10973. // Update is a mock for the corresponding method.
  10974. func (m *MockHttpsHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *ga.HttpsHealthCheck) error {
  10975. if m.UpdateHook != nil {
  10976. return m.UpdateHook(ctx, key, arg0, m)
  10977. }
  10978. return nil
  10979. }
  10980. // GCEHttpsHealthChecks is a simplifying adapter for the GCE HttpsHealthChecks.
  10981. type GCEHttpsHealthChecks struct {
  10982. s *Service
  10983. }
  10984. // Get the HttpsHealthCheck named by key.
  10985. func (g *GCEHttpsHealthChecks) Get(ctx context.Context, key *meta.Key) (*ga.HttpsHealthCheck, error) {
  10986. klog.V(5).Infof("GCEHttpsHealthChecks.Get(%v, %v): called", ctx, key)
  10987. if !key.Valid() {
  10988. klog.V(2).Infof("GCEHttpsHealthChecks.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  10989. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  10990. }
  10991. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HttpsHealthChecks")
  10992. rk := &RateLimitKey{
  10993. ProjectID: projectID,
  10994. Operation: "Get",
  10995. Version: meta.Version("ga"),
  10996. Service: "HttpsHealthChecks",
  10997. }
  10998. klog.V(5).Infof("GCEHttpsHealthChecks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  10999. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  11000. klog.V(4).Infof("GCEHttpsHealthChecks.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  11001. return nil, err
  11002. }
  11003. call := g.s.GA.HttpsHealthChecks.Get(projectID, key.Name)
  11004. call.Context(ctx)
  11005. v, err := call.Do()
  11006. klog.V(4).Infof("GCEHttpsHealthChecks.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  11007. return v, err
  11008. }
  11009. // List all HttpsHealthCheck objects.
  11010. func (g *GCEHttpsHealthChecks) List(ctx context.Context, fl *filter.F) ([]*ga.HttpsHealthCheck, error) {
  11011. klog.V(5).Infof("GCEHttpsHealthChecks.List(%v, %v) called", ctx, fl)
  11012. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HttpsHealthChecks")
  11013. rk := &RateLimitKey{
  11014. ProjectID: projectID,
  11015. Operation: "List",
  11016. Version: meta.Version("ga"),
  11017. Service: "HttpsHealthChecks",
  11018. }
  11019. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  11020. return nil, err
  11021. }
  11022. klog.V(5).Infof("GCEHttpsHealthChecks.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  11023. call := g.s.GA.HttpsHealthChecks.List(projectID)
  11024. if fl != filter.None {
  11025. call.Filter(fl.String())
  11026. }
  11027. var all []*ga.HttpsHealthCheck
  11028. f := func(l *ga.HttpsHealthCheckList) error {
  11029. klog.V(5).Infof("GCEHttpsHealthChecks.List(%v, ..., %v): page %+v", ctx, fl, l)
  11030. all = append(all, l.Items...)
  11031. return nil
  11032. }
  11033. if err := call.Pages(ctx, f); err != nil {
  11034. klog.V(4).Infof("GCEHttpsHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  11035. return nil, err
  11036. }
  11037. if klog.V(4) {
  11038. klog.V(4).Infof("GCEHttpsHealthChecks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  11039. } else if klog.V(5) {
  11040. var asStr []string
  11041. for _, o := range all {
  11042. asStr = append(asStr, fmt.Sprintf("%+v", o))
  11043. }
  11044. klog.V(5).Infof("GCEHttpsHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  11045. }
  11046. return all, nil
  11047. }
  11048. // Insert HttpsHealthCheck with key of value obj.
  11049. func (g *GCEHttpsHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *ga.HttpsHealthCheck) error {
  11050. klog.V(5).Infof("GCEHttpsHealthChecks.Insert(%v, %v, %+v): called", ctx, key, obj)
  11051. if !key.Valid() {
  11052. klog.V(2).Infof("GCEHttpsHealthChecks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  11053. return fmt.Errorf("invalid GCE key (%+v)", key)
  11054. }
  11055. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HttpsHealthChecks")
  11056. rk := &RateLimitKey{
  11057. ProjectID: projectID,
  11058. Operation: "Insert",
  11059. Version: meta.Version("ga"),
  11060. Service: "HttpsHealthChecks",
  11061. }
  11062. klog.V(5).Infof("GCEHttpsHealthChecks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  11063. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  11064. klog.V(4).Infof("GCEHttpsHealthChecks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  11065. return err
  11066. }
  11067. obj.Name = key.Name
  11068. call := g.s.GA.HttpsHealthChecks.Insert(projectID, obj)
  11069. call.Context(ctx)
  11070. op, err := call.Do()
  11071. if err != nil {
  11072. klog.V(4).Infof("GCEHttpsHealthChecks.Insert(%v, %v, ...) = %+v", ctx, key, err)
  11073. return err
  11074. }
  11075. err = g.s.WaitForCompletion(ctx, op)
  11076. klog.V(4).Infof("GCEHttpsHealthChecks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  11077. return err
  11078. }
  11079. // Delete the HttpsHealthCheck referenced by key.
  11080. func (g *GCEHttpsHealthChecks) Delete(ctx context.Context, key *meta.Key) error {
  11081. klog.V(5).Infof("GCEHttpsHealthChecks.Delete(%v, %v): called", ctx, key)
  11082. if !key.Valid() {
  11083. klog.V(2).Infof("GCEHttpsHealthChecks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  11084. return fmt.Errorf("invalid GCE key (%+v)", key)
  11085. }
  11086. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HttpsHealthChecks")
  11087. rk := &RateLimitKey{
  11088. ProjectID: projectID,
  11089. Operation: "Delete",
  11090. Version: meta.Version("ga"),
  11091. Service: "HttpsHealthChecks",
  11092. }
  11093. klog.V(5).Infof("GCEHttpsHealthChecks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  11094. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  11095. klog.V(4).Infof("GCEHttpsHealthChecks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  11096. return err
  11097. }
  11098. call := g.s.GA.HttpsHealthChecks.Delete(projectID, key.Name)
  11099. call.Context(ctx)
  11100. op, err := call.Do()
  11101. if err != nil {
  11102. klog.V(4).Infof("GCEHttpsHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  11103. return err
  11104. }
  11105. err = g.s.WaitForCompletion(ctx, op)
  11106. klog.V(4).Infof("GCEHttpsHealthChecks.Delete(%v, %v) = %v", ctx, key, err)
  11107. return err
  11108. }
  11109. // Update is a method on GCEHttpsHealthChecks.
  11110. func (g *GCEHttpsHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *ga.HttpsHealthCheck) error {
  11111. klog.V(5).Infof("GCEHttpsHealthChecks.Update(%v, %v, ...): called", ctx, key)
  11112. if !key.Valid() {
  11113. klog.V(2).Infof("GCEHttpsHealthChecks.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  11114. return fmt.Errorf("invalid GCE key (%+v)", key)
  11115. }
  11116. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HttpsHealthChecks")
  11117. rk := &RateLimitKey{
  11118. ProjectID: projectID,
  11119. Operation: "Update",
  11120. Version: meta.Version("ga"),
  11121. Service: "HttpsHealthChecks",
  11122. }
  11123. klog.V(5).Infof("GCEHttpsHealthChecks.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  11124. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  11125. klog.V(4).Infof("GCEHttpsHealthChecks.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  11126. return err
  11127. }
  11128. call := g.s.GA.HttpsHealthChecks.Update(projectID, key.Name, arg0)
  11129. call.Context(ctx)
  11130. op, err := call.Do()
  11131. if err != nil {
  11132. klog.V(4).Infof("GCEHttpsHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err)
  11133. return err
  11134. }
  11135. err = g.s.WaitForCompletion(ctx, op)
  11136. klog.V(4).Infof("GCEHttpsHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err)
  11137. return err
  11138. }
  11139. // InstanceGroups is an interface that allows for mocking of InstanceGroups.
  11140. type InstanceGroups interface {
  11141. Get(ctx context.Context, key *meta.Key) (*ga.InstanceGroup, error)
  11142. List(ctx context.Context, zone string, fl *filter.F) ([]*ga.InstanceGroup, error)
  11143. Insert(ctx context.Context, key *meta.Key, obj *ga.InstanceGroup) error
  11144. Delete(ctx context.Context, key *meta.Key) error
  11145. AddInstances(context.Context, *meta.Key, *ga.InstanceGroupsAddInstancesRequest) error
  11146. ListInstances(context.Context, *meta.Key, *ga.InstanceGroupsListInstancesRequest, *filter.F) ([]*ga.InstanceWithNamedPorts, error)
  11147. RemoveInstances(context.Context, *meta.Key, *ga.InstanceGroupsRemoveInstancesRequest) error
  11148. SetNamedPorts(context.Context, *meta.Key, *ga.InstanceGroupsSetNamedPortsRequest) error
  11149. }
  11150. // NewMockInstanceGroups returns a new mock for InstanceGroups.
  11151. func NewMockInstanceGroups(pr ProjectRouter, objs map[meta.Key]*MockInstanceGroupsObj) *MockInstanceGroups {
  11152. mock := &MockInstanceGroups{
  11153. ProjectRouter: pr,
  11154. Objects: objs,
  11155. GetError: map[meta.Key]error{},
  11156. InsertError: map[meta.Key]error{},
  11157. DeleteError: map[meta.Key]error{},
  11158. }
  11159. return mock
  11160. }
  11161. // MockInstanceGroups is the mock for InstanceGroups.
  11162. type MockInstanceGroups struct {
  11163. Lock sync.Mutex
  11164. ProjectRouter ProjectRouter
  11165. // Objects maintained by the mock.
  11166. Objects map[meta.Key]*MockInstanceGroupsObj
  11167. // If an entry exists for the given key and operation, then the error
  11168. // will be returned instead of the operation.
  11169. GetError map[meta.Key]error
  11170. ListError *error
  11171. InsertError map[meta.Key]error
  11172. DeleteError map[meta.Key]error
  11173. // xxxHook allow you to intercept the standard processing of the mock in
  11174. // order to add your own logic. Return (true, _, _) to prevent the normal
  11175. // execution flow of the mock. Return (false, nil, nil) to continue with
  11176. // normal mock behavior/ after the hook function executes.
  11177. GetHook func(ctx context.Context, key *meta.Key, m *MockInstanceGroups) (bool, *ga.InstanceGroup, error)
  11178. ListHook func(ctx context.Context, zone string, fl *filter.F, m *MockInstanceGroups) (bool, []*ga.InstanceGroup, error)
  11179. InsertHook func(ctx context.Context, key *meta.Key, obj *ga.InstanceGroup, m *MockInstanceGroups) (bool, error)
  11180. DeleteHook func(ctx context.Context, key *meta.Key, m *MockInstanceGroups) (bool, error)
  11181. AddInstancesHook func(context.Context, *meta.Key, *ga.InstanceGroupsAddInstancesRequest, *MockInstanceGroups) error
  11182. ListInstancesHook func(context.Context, *meta.Key, *ga.InstanceGroupsListInstancesRequest, *filter.F, *MockInstanceGroups) ([]*ga.InstanceWithNamedPorts, error)
  11183. RemoveInstancesHook func(context.Context, *meta.Key, *ga.InstanceGroupsRemoveInstancesRequest, *MockInstanceGroups) error
  11184. SetNamedPortsHook func(context.Context, *meta.Key, *ga.InstanceGroupsSetNamedPortsRequest, *MockInstanceGroups) error
  11185. // X is extra state that can be used as part of the mock. Generated code
  11186. // will not use this field.
  11187. X interface{}
  11188. }
  11189. // Get returns the object from the mock.
  11190. func (m *MockInstanceGroups) Get(ctx context.Context, key *meta.Key) (*ga.InstanceGroup, error) {
  11191. if m.GetHook != nil {
  11192. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  11193. klog.V(5).Infof("MockInstanceGroups.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  11194. return obj, err
  11195. }
  11196. }
  11197. if !key.Valid() {
  11198. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  11199. }
  11200. m.Lock.Lock()
  11201. defer m.Lock.Unlock()
  11202. if err, ok := m.GetError[*key]; ok {
  11203. klog.V(5).Infof("MockInstanceGroups.Get(%v, %s) = nil, %v", ctx, key, err)
  11204. return nil, err
  11205. }
  11206. if obj, ok := m.Objects[*key]; ok {
  11207. typedObj := obj.ToGA()
  11208. klog.V(5).Infof("MockInstanceGroups.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  11209. return typedObj, nil
  11210. }
  11211. err := &googleapi.Error{
  11212. Code: http.StatusNotFound,
  11213. Message: fmt.Sprintf("MockInstanceGroups %v not found", key),
  11214. }
  11215. klog.V(5).Infof("MockInstanceGroups.Get(%v, %s) = nil, %v", ctx, key, err)
  11216. return nil, err
  11217. }
  11218. // List all of the objects in the mock in the given zone.
  11219. func (m *MockInstanceGroups) List(ctx context.Context, zone string, fl *filter.F) ([]*ga.InstanceGroup, error) {
  11220. if m.ListHook != nil {
  11221. if intercept, objs, err := m.ListHook(ctx, zone, fl, m); intercept {
  11222. klog.V(5).Infof("MockInstanceGroups.List(%v, %q, %v) = [%v items], %v", ctx, zone, fl, len(objs), err)
  11223. return objs, err
  11224. }
  11225. }
  11226. m.Lock.Lock()
  11227. defer m.Lock.Unlock()
  11228. if m.ListError != nil {
  11229. err := *m.ListError
  11230. klog.V(5).Infof("MockInstanceGroups.List(%v, %q, %v) = nil, %v", ctx, zone, fl, err)
  11231. return nil, *m.ListError
  11232. }
  11233. var objs []*ga.InstanceGroup
  11234. for key, obj := range m.Objects {
  11235. if key.Zone != zone {
  11236. continue
  11237. }
  11238. if !fl.Match(obj.ToGA()) {
  11239. continue
  11240. }
  11241. objs = append(objs, obj.ToGA())
  11242. }
  11243. klog.V(5).Infof("MockInstanceGroups.List(%v, %q, %v) = [%v items], nil", ctx, zone, fl, len(objs))
  11244. return objs, nil
  11245. }
  11246. // Insert is a mock for inserting/creating a new object.
  11247. func (m *MockInstanceGroups) Insert(ctx context.Context, key *meta.Key, obj *ga.InstanceGroup) error {
  11248. if m.InsertHook != nil {
  11249. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  11250. klog.V(5).Infof("MockInstanceGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  11251. return err
  11252. }
  11253. }
  11254. if !key.Valid() {
  11255. return fmt.Errorf("invalid GCE key (%+v)", key)
  11256. }
  11257. m.Lock.Lock()
  11258. defer m.Lock.Unlock()
  11259. if err, ok := m.InsertError[*key]; ok {
  11260. klog.V(5).Infof("MockInstanceGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  11261. return err
  11262. }
  11263. if _, ok := m.Objects[*key]; ok {
  11264. err := &googleapi.Error{
  11265. Code: http.StatusConflict,
  11266. Message: fmt.Sprintf("MockInstanceGroups %v exists", key),
  11267. }
  11268. klog.V(5).Infof("MockInstanceGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  11269. return err
  11270. }
  11271. obj.Name = key.Name
  11272. projectID := m.ProjectRouter.ProjectID(ctx, "ga", "instanceGroups")
  11273. obj.SelfLink = SelfLink(meta.VersionGA, projectID, "instanceGroups", key)
  11274. m.Objects[*key] = &MockInstanceGroupsObj{obj}
  11275. klog.V(5).Infof("MockInstanceGroups.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  11276. return nil
  11277. }
  11278. // Delete is a mock for deleting the object.
  11279. func (m *MockInstanceGroups) Delete(ctx context.Context, key *meta.Key) error {
  11280. if m.DeleteHook != nil {
  11281. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  11282. klog.V(5).Infof("MockInstanceGroups.Delete(%v, %v) = %v", ctx, key, err)
  11283. return err
  11284. }
  11285. }
  11286. if !key.Valid() {
  11287. return fmt.Errorf("invalid GCE key (%+v)", key)
  11288. }
  11289. m.Lock.Lock()
  11290. defer m.Lock.Unlock()
  11291. if err, ok := m.DeleteError[*key]; ok {
  11292. klog.V(5).Infof("MockInstanceGroups.Delete(%v, %v) = %v", ctx, key, err)
  11293. return err
  11294. }
  11295. if _, ok := m.Objects[*key]; !ok {
  11296. err := &googleapi.Error{
  11297. Code: http.StatusNotFound,
  11298. Message: fmt.Sprintf("MockInstanceGroups %v not found", key),
  11299. }
  11300. klog.V(5).Infof("MockInstanceGroups.Delete(%v, %v) = %v", ctx, key, err)
  11301. return err
  11302. }
  11303. delete(m.Objects, *key)
  11304. klog.V(5).Infof("MockInstanceGroups.Delete(%v, %v) = nil", ctx, key)
  11305. return nil
  11306. }
  11307. // Obj wraps the object for use in the mock.
  11308. func (m *MockInstanceGroups) Obj(o *ga.InstanceGroup) *MockInstanceGroupsObj {
  11309. return &MockInstanceGroupsObj{o}
  11310. }
  11311. // AddInstances is a mock for the corresponding method.
  11312. func (m *MockInstanceGroups) AddInstances(ctx context.Context, key *meta.Key, arg0 *ga.InstanceGroupsAddInstancesRequest) error {
  11313. if m.AddInstancesHook != nil {
  11314. return m.AddInstancesHook(ctx, key, arg0, m)
  11315. }
  11316. return nil
  11317. }
  11318. // ListInstances is a mock for the corresponding method.
  11319. func (m *MockInstanceGroups) ListInstances(ctx context.Context, key *meta.Key, arg0 *ga.InstanceGroupsListInstancesRequest, fl *filter.F) ([]*ga.InstanceWithNamedPorts, error) {
  11320. if m.ListInstancesHook != nil {
  11321. return m.ListInstancesHook(ctx, key, arg0, fl, m)
  11322. }
  11323. return nil, nil
  11324. }
  11325. // RemoveInstances is a mock for the corresponding method.
  11326. func (m *MockInstanceGroups) RemoveInstances(ctx context.Context, key *meta.Key, arg0 *ga.InstanceGroupsRemoveInstancesRequest) error {
  11327. if m.RemoveInstancesHook != nil {
  11328. return m.RemoveInstancesHook(ctx, key, arg0, m)
  11329. }
  11330. return nil
  11331. }
  11332. // SetNamedPorts is a mock for the corresponding method.
  11333. func (m *MockInstanceGroups) SetNamedPorts(ctx context.Context, key *meta.Key, arg0 *ga.InstanceGroupsSetNamedPortsRequest) error {
  11334. if m.SetNamedPortsHook != nil {
  11335. return m.SetNamedPortsHook(ctx, key, arg0, m)
  11336. }
  11337. return nil
  11338. }
  11339. // GCEInstanceGroups is a simplifying adapter for the GCE InstanceGroups.
  11340. type GCEInstanceGroups struct {
  11341. s *Service
  11342. }
  11343. // Get the InstanceGroup named by key.
  11344. func (g *GCEInstanceGroups) Get(ctx context.Context, key *meta.Key) (*ga.InstanceGroup, error) {
  11345. klog.V(5).Infof("GCEInstanceGroups.Get(%v, %v): called", ctx, key)
  11346. if !key.Valid() {
  11347. klog.V(2).Infof("GCEInstanceGroups.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  11348. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  11349. }
  11350. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "InstanceGroups")
  11351. rk := &RateLimitKey{
  11352. ProjectID: projectID,
  11353. Operation: "Get",
  11354. Version: meta.Version("ga"),
  11355. Service: "InstanceGroups",
  11356. }
  11357. klog.V(5).Infof("GCEInstanceGroups.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  11358. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  11359. klog.V(4).Infof("GCEInstanceGroups.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  11360. return nil, err
  11361. }
  11362. call := g.s.GA.InstanceGroups.Get(projectID, key.Zone, key.Name)
  11363. call.Context(ctx)
  11364. v, err := call.Do()
  11365. klog.V(4).Infof("GCEInstanceGroups.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  11366. return v, err
  11367. }
  11368. // List all InstanceGroup objects.
  11369. func (g *GCEInstanceGroups) List(ctx context.Context, zone string, fl *filter.F) ([]*ga.InstanceGroup, error) {
  11370. klog.V(5).Infof("GCEInstanceGroups.List(%v, %v, %v) called", ctx, zone, fl)
  11371. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "InstanceGroups")
  11372. rk := &RateLimitKey{
  11373. ProjectID: projectID,
  11374. Operation: "List",
  11375. Version: meta.Version("ga"),
  11376. Service: "InstanceGroups",
  11377. }
  11378. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  11379. return nil, err
  11380. }
  11381. klog.V(5).Infof("GCEInstanceGroups.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, zone, fl, projectID, rk)
  11382. call := g.s.GA.InstanceGroups.List(projectID, zone)
  11383. if fl != filter.None {
  11384. call.Filter(fl.String())
  11385. }
  11386. var all []*ga.InstanceGroup
  11387. f := func(l *ga.InstanceGroupList) error {
  11388. klog.V(5).Infof("GCEInstanceGroups.List(%v, ..., %v): page %+v", ctx, fl, l)
  11389. all = append(all, l.Items...)
  11390. return nil
  11391. }
  11392. if err := call.Pages(ctx, f); err != nil {
  11393. klog.V(4).Infof("GCEInstanceGroups.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  11394. return nil, err
  11395. }
  11396. if klog.V(4) {
  11397. klog.V(4).Infof("GCEInstanceGroups.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  11398. } else if klog.V(5) {
  11399. var asStr []string
  11400. for _, o := range all {
  11401. asStr = append(asStr, fmt.Sprintf("%+v", o))
  11402. }
  11403. klog.V(5).Infof("GCEInstanceGroups.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  11404. }
  11405. return all, nil
  11406. }
  11407. // Insert InstanceGroup with key of value obj.
  11408. func (g *GCEInstanceGroups) Insert(ctx context.Context, key *meta.Key, obj *ga.InstanceGroup) error {
  11409. klog.V(5).Infof("GCEInstanceGroups.Insert(%v, %v, %+v): called", ctx, key, obj)
  11410. if !key.Valid() {
  11411. klog.V(2).Infof("GCEInstanceGroups.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  11412. return fmt.Errorf("invalid GCE key (%+v)", key)
  11413. }
  11414. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "InstanceGroups")
  11415. rk := &RateLimitKey{
  11416. ProjectID: projectID,
  11417. Operation: "Insert",
  11418. Version: meta.Version("ga"),
  11419. Service: "InstanceGroups",
  11420. }
  11421. klog.V(5).Infof("GCEInstanceGroups.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  11422. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  11423. klog.V(4).Infof("GCEInstanceGroups.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  11424. return err
  11425. }
  11426. obj.Name = key.Name
  11427. call := g.s.GA.InstanceGroups.Insert(projectID, key.Zone, obj)
  11428. call.Context(ctx)
  11429. op, err := call.Do()
  11430. if err != nil {
  11431. klog.V(4).Infof("GCEInstanceGroups.Insert(%v, %v, ...) = %+v", ctx, key, err)
  11432. return err
  11433. }
  11434. err = g.s.WaitForCompletion(ctx, op)
  11435. klog.V(4).Infof("GCEInstanceGroups.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  11436. return err
  11437. }
  11438. // Delete the InstanceGroup referenced by key.
  11439. func (g *GCEInstanceGroups) Delete(ctx context.Context, key *meta.Key) error {
  11440. klog.V(5).Infof("GCEInstanceGroups.Delete(%v, %v): called", ctx, key)
  11441. if !key.Valid() {
  11442. klog.V(2).Infof("GCEInstanceGroups.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  11443. return fmt.Errorf("invalid GCE key (%+v)", key)
  11444. }
  11445. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "InstanceGroups")
  11446. rk := &RateLimitKey{
  11447. ProjectID: projectID,
  11448. Operation: "Delete",
  11449. Version: meta.Version("ga"),
  11450. Service: "InstanceGroups",
  11451. }
  11452. klog.V(5).Infof("GCEInstanceGroups.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  11453. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  11454. klog.V(4).Infof("GCEInstanceGroups.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  11455. return err
  11456. }
  11457. call := g.s.GA.InstanceGroups.Delete(projectID, key.Zone, key.Name)
  11458. call.Context(ctx)
  11459. op, err := call.Do()
  11460. if err != nil {
  11461. klog.V(4).Infof("GCEInstanceGroups.Delete(%v, %v) = %v", ctx, key, err)
  11462. return err
  11463. }
  11464. err = g.s.WaitForCompletion(ctx, op)
  11465. klog.V(4).Infof("GCEInstanceGroups.Delete(%v, %v) = %v", ctx, key, err)
  11466. return err
  11467. }
  11468. // AddInstances is a method on GCEInstanceGroups.
  11469. func (g *GCEInstanceGroups) AddInstances(ctx context.Context, key *meta.Key, arg0 *ga.InstanceGroupsAddInstancesRequest) error {
  11470. klog.V(5).Infof("GCEInstanceGroups.AddInstances(%v, %v, ...): called", ctx, key)
  11471. if !key.Valid() {
  11472. klog.V(2).Infof("GCEInstanceGroups.AddInstances(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  11473. return fmt.Errorf("invalid GCE key (%+v)", key)
  11474. }
  11475. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "InstanceGroups")
  11476. rk := &RateLimitKey{
  11477. ProjectID: projectID,
  11478. Operation: "AddInstances",
  11479. Version: meta.Version("ga"),
  11480. Service: "InstanceGroups",
  11481. }
  11482. klog.V(5).Infof("GCEInstanceGroups.AddInstances(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  11483. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  11484. klog.V(4).Infof("GCEInstanceGroups.AddInstances(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  11485. return err
  11486. }
  11487. call := g.s.GA.InstanceGroups.AddInstances(projectID, key.Zone, key.Name, arg0)
  11488. call.Context(ctx)
  11489. op, err := call.Do()
  11490. if err != nil {
  11491. klog.V(4).Infof("GCEInstanceGroups.AddInstances(%v, %v, ...) = %+v", ctx, key, err)
  11492. return err
  11493. }
  11494. err = g.s.WaitForCompletion(ctx, op)
  11495. klog.V(4).Infof("GCEInstanceGroups.AddInstances(%v, %v, ...) = %+v", ctx, key, err)
  11496. return err
  11497. }
  11498. // ListInstances is a method on GCEInstanceGroups.
  11499. func (g *GCEInstanceGroups) ListInstances(ctx context.Context, key *meta.Key, arg0 *ga.InstanceGroupsListInstancesRequest, fl *filter.F) ([]*ga.InstanceWithNamedPorts, error) {
  11500. klog.V(5).Infof("GCEInstanceGroups.ListInstances(%v, %v, ...): called", ctx, key)
  11501. if !key.Valid() {
  11502. klog.V(2).Infof("GCEInstanceGroups.ListInstances(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  11503. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  11504. }
  11505. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "InstanceGroups")
  11506. rk := &RateLimitKey{
  11507. ProjectID: projectID,
  11508. Operation: "ListInstances",
  11509. Version: meta.Version("ga"),
  11510. Service: "InstanceGroups",
  11511. }
  11512. klog.V(5).Infof("GCEInstanceGroups.ListInstances(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  11513. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  11514. klog.V(4).Infof("GCEInstanceGroups.ListInstances(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  11515. return nil, err
  11516. }
  11517. call := g.s.GA.InstanceGroups.ListInstances(projectID, key.Zone, key.Name, arg0)
  11518. var all []*ga.InstanceWithNamedPorts
  11519. f := func(l *ga.InstanceGroupsListInstances) error {
  11520. klog.V(5).Infof("GCEInstanceGroups.ListInstances(%v, %v, ...): page %+v", ctx, key, l)
  11521. all = append(all, l.Items...)
  11522. return nil
  11523. }
  11524. if err := call.Pages(ctx, f); err != nil {
  11525. klog.V(4).Infof("GCEInstanceGroups.ListInstances(%v, %v, ...) = %v, %v", ctx, key, nil, err)
  11526. return nil, err
  11527. }
  11528. if klog.V(4) {
  11529. klog.V(4).Infof("GCEInstanceGroups.ListInstances(%v, %v, ...) = [%v items], %v", ctx, key, len(all), nil)
  11530. } else if klog.V(5) {
  11531. var asStr []string
  11532. for _, o := range all {
  11533. asStr = append(asStr, fmt.Sprintf("%+v", o))
  11534. }
  11535. klog.V(5).Infof("GCEInstanceGroups.ListInstances(%v, %v, ...) = %v, %v", ctx, key, asStr, nil)
  11536. }
  11537. return all, nil
  11538. }
  11539. // RemoveInstances is a method on GCEInstanceGroups.
  11540. func (g *GCEInstanceGroups) RemoveInstances(ctx context.Context, key *meta.Key, arg0 *ga.InstanceGroupsRemoveInstancesRequest) error {
  11541. klog.V(5).Infof("GCEInstanceGroups.RemoveInstances(%v, %v, ...): called", ctx, key)
  11542. if !key.Valid() {
  11543. klog.V(2).Infof("GCEInstanceGroups.RemoveInstances(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  11544. return fmt.Errorf("invalid GCE key (%+v)", key)
  11545. }
  11546. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "InstanceGroups")
  11547. rk := &RateLimitKey{
  11548. ProjectID: projectID,
  11549. Operation: "RemoveInstances",
  11550. Version: meta.Version("ga"),
  11551. Service: "InstanceGroups",
  11552. }
  11553. klog.V(5).Infof("GCEInstanceGroups.RemoveInstances(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  11554. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  11555. klog.V(4).Infof("GCEInstanceGroups.RemoveInstances(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  11556. return err
  11557. }
  11558. call := g.s.GA.InstanceGroups.RemoveInstances(projectID, key.Zone, key.Name, arg0)
  11559. call.Context(ctx)
  11560. op, err := call.Do()
  11561. if err != nil {
  11562. klog.V(4).Infof("GCEInstanceGroups.RemoveInstances(%v, %v, ...) = %+v", ctx, key, err)
  11563. return err
  11564. }
  11565. err = g.s.WaitForCompletion(ctx, op)
  11566. klog.V(4).Infof("GCEInstanceGroups.RemoveInstances(%v, %v, ...) = %+v", ctx, key, err)
  11567. return err
  11568. }
  11569. // SetNamedPorts is a method on GCEInstanceGroups.
  11570. func (g *GCEInstanceGroups) SetNamedPorts(ctx context.Context, key *meta.Key, arg0 *ga.InstanceGroupsSetNamedPortsRequest) error {
  11571. klog.V(5).Infof("GCEInstanceGroups.SetNamedPorts(%v, %v, ...): called", ctx, key)
  11572. if !key.Valid() {
  11573. klog.V(2).Infof("GCEInstanceGroups.SetNamedPorts(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  11574. return fmt.Errorf("invalid GCE key (%+v)", key)
  11575. }
  11576. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "InstanceGroups")
  11577. rk := &RateLimitKey{
  11578. ProjectID: projectID,
  11579. Operation: "SetNamedPorts",
  11580. Version: meta.Version("ga"),
  11581. Service: "InstanceGroups",
  11582. }
  11583. klog.V(5).Infof("GCEInstanceGroups.SetNamedPorts(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  11584. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  11585. klog.V(4).Infof("GCEInstanceGroups.SetNamedPorts(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  11586. return err
  11587. }
  11588. call := g.s.GA.InstanceGroups.SetNamedPorts(projectID, key.Zone, key.Name, arg0)
  11589. call.Context(ctx)
  11590. op, err := call.Do()
  11591. if err != nil {
  11592. klog.V(4).Infof("GCEInstanceGroups.SetNamedPorts(%v, %v, ...) = %+v", ctx, key, err)
  11593. return err
  11594. }
  11595. err = g.s.WaitForCompletion(ctx, op)
  11596. klog.V(4).Infof("GCEInstanceGroups.SetNamedPorts(%v, %v, ...) = %+v", ctx, key, err)
  11597. return err
  11598. }
  11599. // Instances is an interface that allows for mocking of Instances.
  11600. type Instances interface {
  11601. Get(ctx context.Context, key *meta.Key) (*ga.Instance, error)
  11602. List(ctx context.Context, zone string, fl *filter.F) ([]*ga.Instance, error)
  11603. Insert(ctx context.Context, key *meta.Key, obj *ga.Instance) error
  11604. Delete(ctx context.Context, key *meta.Key) error
  11605. AttachDisk(context.Context, *meta.Key, *ga.AttachedDisk) error
  11606. DetachDisk(context.Context, *meta.Key, string) error
  11607. }
  11608. // NewMockInstances returns a new mock for Instances.
  11609. func NewMockInstances(pr ProjectRouter, objs map[meta.Key]*MockInstancesObj) *MockInstances {
  11610. mock := &MockInstances{
  11611. ProjectRouter: pr,
  11612. Objects: objs,
  11613. GetError: map[meta.Key]error{},
  11614. InsertError: map[meta.Key]error{},
  11615. DeleteError: map[meta.Key]error{},
  11616. }
  11617. return mock
  11618. }
  11619. // MockInstances is the mock for Instances.
  11620. type MockInstances struct {
  11621. Lock sync.Mutex
  11622. ProjectRouter ProjectRouter
  11623. // Objects maintained by the mock.
  11624. Objects map[meta.Key]*MockInstancesObj
  11625. // If an entry exists for the given key and operation, then the error
  11626. // will be returned instead of the operation.
  11627. GetError map[meta.Key]error
  11628. ListError *error
  11629. InsertError map[meta.Key]error
  11630. DeleteError map[meta.Key]error
  11631. // xxxHook allow you to intercept the standard processing of the mock in
  11632. // order to add your own logic. Return (true, _, _) to prevent the normal
  11633. // execution flow of the mock. Return (false, nil, nil) to continue with
  11634. // normal mock behavior/ after the hook function executes.
  11635. GetHook func(ctx context.Context, key *meta.Key, m *MockInstances) (bool, *ga.Instance, error)
  11636. ListHook func(ctx context.Context, zone string, fl *filter.F, m *MockInstances) (bool, []*ga.Instance, error)
  11637. InsertHook func(ctx context.Context, key *meta.Key, obj *ga.Instance, m *MockInstances) (bool, error)
  11638. DeleteHook func(ctx context.Context, key *meta.Key, m *MockInstances) (bool, error)
  11639. AttachDiskHook func(context.Context, *meta.Key, *ga.AttachedDisk, *MockInstances) error
  11640. DetachDiskHook func(context.Context, *meta.Key, string, *MockInstances) error
  11641. // X is extra state that can be used as part of the mock. Generated code
  11642. // will not use this field.
  11643. X interface{}
  11644. }
  11645. // Get returns the object from the mock.
  11646. func (m *MockInstances) Get(ctx context.Context, key *meta.Key) (*ga.Instance, error) {
  11647. if m.GetHook != nil {
  11648. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  11649. klog.V(5).Infof("MockInstances.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  11650. return obj, err
  11651. }
  11652. }
  11653. if !key.Valid() {
  11654. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  11655. }
  11656. m.Lock.Lock()
  11657. defer m.Lock.Unlock()
  11658. if err, ok := m.GetError[*key]; ok {
  11659. klog.V(5).Infof("MockInstances.Get(%v, %s) = nil, %v", ctx, key, err)
  11660. return nil, err
  11661. }
  11662. if obj, ok := m.Objects[*key]; ok {
  11663. typedObj := obj.ToGA()
  11664. klog.V(5).Infof("MockInstances.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  11665. return typedObj, nil
  11666. }
  11667. err := &googleapi.Error{
  11668. Code: http.StatusNotFound,
  11669. Message: fmt.Sprintf("MockInstances %v not found", key),
  11670. }
  11671. klog.V(5).Infof("MockInstances.Get(%v, %s) = nil, %v", ctx, key, err)
  11672. return nil, err
  11673. }
  11674. // List all of the objects in the mock in the given zone.
  11675. func (m *MockInstances) List(ctx context.Context, zone string, fl *filter.F) ([]*ga.Instance, error) {
  11676. if m.ListHook != nil {
  11677. if intercept, objs, err := m.ListHook(ctx, zone, fl, m); intercept {
  11678. klog.V(5).Infof("MockInstances.List(%v, %q, %v) = [%v items], %v", ctx, zone, fl, len(objs), err)
  11679. return objs, err
  11680. }
  11681. }
  11682. m.Lock.Lock()
  11683. defer m.Lock.Unlock()
  11684. if m.ListError != nil {
  11685. err := *m.ListError
  11686. klog.V(5).Infof("MockInstances.List(%v, %q, %v) = nil, %v", ctx, zone, fl, err)
  11687. return nil, *m.ListError
  11688. }
  11689. var objs []*ga.Instance
  11690. for key, obj := range m.Objects {
  11691. if key.Zone != zone {
  11692. continue
  11693. }
  11694. if !fl.Match(obj.ToGA()) {
  11695. continue
  11696. }
  11697. objs = append(objs, obj.ToGA())
  11698. }
  11699. klog.V(5).Infof("MockInstances.List(%v, %q, %v) = [%v items], nil", ctx, zone, fl, len(objs))
  11700. return objs, nil
  11701. }
  11702. // Insert is a mock for inserting/creating a new object.
  11703. func (m *MockInstances) Insert(ctx context.Context, key *meta.Key, obj *ga.Instance) error {
  11704. if m.InsertHook != nil {
  11705. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  11706. klog.V(5).Infof("MockInstances.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  11707. return err
  11708. }
  11709. }
  11710. if !key.Valid() {
  11711. return fmt.Errorf("invalid GCE key (%+v)", key)
  11712. }
  11713. m.Lock.Lock()
  11714. defer m.Lock.Unlock()
  11715. if err, ok := m.InsertError[*key]; ok {
  11716. klog.V(5).Infof("MockInstances.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  11717. return err
  11718. }
  11719. if _, ok := m.Objects[*key]; ok {
  11720. err := &googleapi.Error{
  11721. Code: http.StatusConflict,
  11722. Message: fmt.Sprintf("MockInstances %v exists", key),
  11723. }
  11724. klog.V(5).Infof("MockInstances.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  11725. return err
  11726. }
  11727. obj.Name = key.Name
  11728. projectID := m.ProjectRouter.ProjectID(ctx, "ga", "instances")
  11729. obj.SelfLink = SelfLink(meta.VersionGA, projectID, "instances", key)
  11730. m.Objects[*key] = &MockInstancesObj{obj}
  11731. klog.V(5).Infof("MockInstances.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  11732. return nil
  11733. }
  11734. // Delete is a mock for deleting the object.
  11735. func (m *MockInstances) Delete(ctx context.Context, key *meta.Key) error {
  11736. if m.DeleteHook != nil {
  11737. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  11738. klog.V(5).Infof("MockInstances.Delete(%v, %v) = %v", ctx, key, err)
  11739. return err
  11740. }
  11741. }
  11742. if !key.Valid() {
  11743. return fmt.Errorf("invalid GCE key (%+v)", key)
  11744. }
  11745. m.Lock.Lock()
  11746. defer m.Lock.Unlock()
  11747. if err, ok := m.DeleteError[*key]; ok {
  11748. klog.V(5).Infof("MockInstances.Delete(%v, %v) = %v", ctx, key, err)
  11749. return err
  11750. }
  11751. if _, ok := m.Objects[*key]; !ok {
  11752. err := &googleapi.Error{
  11753. Code: http.StatusNotFound,
  11754. Message: fmt.Sprintf("MockInstances %v not found", key),
  11755. }
  11756. klog.V(5).Infof("MockInstances.Delete(%v, %v) = %v", ctx, key, err)
  11757. return err
  11758. }
  11759. delete(m.Objects, *key)
  11760. klog.V(5).Infof("MockInstances.Delete(%v, %v) = nil", ctx, key)
  11761. return nil
  11762. }
  11763. // Obj wraps the object for use in the mock.
  11764. func (m *MockInstances) Obj(o *ga.Instance) *MockInstancesObj {
  11765. return &MockInstancesObj{o}
  11766. }
  11767. // AttachDisk is a mock for the corresponding method.
  11768. func (m *MockInstances) AttachDisk(ctx context.Context, key *meta.Key, arg0 *ga.AttachedDisk) error {
  11769. if m.AttachDiskHook != nil {
  11770. return m.AttachDiskHook(ctx, key, arg0, m)
  11771. }
  11772. return nil
  11773. }
  11774. // DetachDisk is a mock for the corresponding method.
  11775. func (m *MockInstances) DetachDisk(ctx context.Context, key *meta.Key, arg0 string) error {
  11776. if m.DetachDiskHook != nil {
  11777. return m.DetachDiskHook(ctx, key, arg0, m)
  11778. }
  11779. return nil
  11780. }
  11781. // GCEInstances is a simplifying adapter for the GCE Instances.
  11782. type GCEInstances struct {
  11783. s *Service
  11784. }
  11785. // Get the Instance named by key.
  11786. func (g *GCEInstances) Get(ctx context.Context, key *meta.Key) (*ga.Instance, error) {
  11787. klog.V(5).Infof("GCEInstances.Get(%v, %v): called", ctx, key)
  11788. if !key.Valid() {
  11789. klog.V(2).Infof("GCEInstances.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  11790. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  11791. }
  11792. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Instances")
  11793. rk := &RateLimitKey{
  11794. ProjectID: projectID,
  11795. Operation: "Get",
  11796. Version: meta.Version("ga"),
  11797. Service: "Instances",
  11798. }
  11799. klog.V(5).Infof("GCEInstances.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  11800. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  11801. klog.V(4).Infof("GCEInstances.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  11802. return nil, err
  11803. }
  11804. call := g.s.GA.Instances.Get(projectID, key.Zone, key.Name)
  11805. call.Context(ctx)
  11806. v, err := call.Do()
  11807. klog.V(4).Infof("GCEInstances.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  11808. return v, err
  11809. }
  11810. // List all Instance objects.
  11811. func (g *GCEInstances) List(ctx context.Context, zone string, fl *filter.F) ([]*ga.Instance, error) {
  11812. klog.V(5).Infof("GCEInstances.List(%v, %v, %v) called", ctx, zone, fl)
  11813. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Instances")
  11814. rk := &RateLimitKey{
  11815. ProjectID: projectID,
  11816. Operation: "List",
  11817. Version: meta.Version("ga"),
  11818. Service: "Instances",
  11819. }
  11820. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  11821. return nil, err
  11822. }
  11823. klog.V(5).Infof("GCEInstances.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, zone, fl, projectID, rk)
  11824. call := g.s.GA.Instances.List(projectID, zone)
  11825. if fl != filter.None {
  11826. call.Filter(fl.String())
  11827. }
  11828. var all []*ga.Instance
  11829. f := func(l *ga.InstanceList) error {
  11830. klog.V(5).Infof("GCEInstances.List(%v, ..., %v): page %+v", ctx, fl, l)
  11831. all = append(all, l.Items...)
  11832. return nil
  11833. }
  11834. if err := call.Pages(ctx, f); err != nil {
  11835. klog.V(4).Infof("GCEInstances.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  11836. return nil, err
  11837. }
  11838. if klog.V(4) {
  11839. klog.V(4).Infof("GCEInstances.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  11840. } else if klog.V(5) {
  11841. var asStr []string
  11842. for _, o := range all {
  11843. asStr = append(asStr, fmt.Sprintf("%+v", o))
  11844. }
  11845. klog.V(5).Infof("GCEInstances.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  11846. }
  11847. return all, nil
  11848. }
  11849. // Insert Instance with key of value obj.
  11850. func (g *GCEInstances) Insert(ctx context.Context, key *meta.Key, obj *ga.Instance) error {
  11851. klog.V(5).Infof("GCEInstances.Insert(%v, %v, %+v): called", ctx, key, obj)
  11852. if !key.Valid() {
  11853. klog.V(2).Infof("GCEInstances.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  11854. return fmt.Errorf("invalid GCE key (%+v)", key)
  11855. }
  11856. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Instances")
  11857. rk := &RateLimitKey{
  11858. ProjectID: projectID,
  11859. Operation: "Insert",
  11860. Version: meta.Version("ga"),
  11861. Service: "Instances",
  11862. }
  11863. klog.V(5).Infof("GCEInstances.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  11864. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  11865. klog.V(4).Infof("GCEInstances.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  11866. return err
  11867. }
  11868. obj.Name = key.Name
  11869. call := g.s.GA.Instances.Insert(projectID, key.Zone, obj)
  11870. call.Context(ctx)
  11871. op, err := call.Do()
  11872. if err != nil {
  11873. klog.V(4).Infof("GCEInstances.Insert(%v, %v, ...) = %+v", ctx, key, err)
  11874. return err
  11875. }
  11876. err = g.s.WaitForCompletion(ctx, op)
  11877. klog.V(4).Infof("GCEInstances.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  11878. return err
  11879. }
  11880. // Delete the Instance referenced by key.
  11881. func (g *GCEInstances) Delete(ctx context.Context, key *meta.Key) error {
  11882. klog.V(5).Infof("GCEInstances.Delete(%v, %v): called", ctx, key)
  11883. if !key.Valid() {
  11884. klog.V(2).Infof("GCEInstances.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  11885. return fmt.Errorf("invalid GCE key (%+v)", key)
  11886. }
  11887. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Instances")
  11888. rk := &RateLimitKey{
  11889. ProjectID: projectID,
  11890. Operation: "Delete",
  11891. Version: meta.Version("ga"),
  11892. Service: "Instances",
  11893. }
  11894. klog.V(5).Infof("GCEInstances.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  11895. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  11896. klog.V(4).Infof("GCEInstances.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  11897. return err
  11898. }
  11899. call := g.s.GA.Instances.Delete(projectID, key.Zone, key.Name)
  11900. call.Context(ctx)
  11901. op, err := call.Do()
  11902. if err != nil {
  11903. klog.V(4).Infof("GCEInstances.Delete(%v, %v) = %v", ctx, key, err)
  11904. return err
  11905. }
  11906. err = g.s.WaitForCompletion(ctx, op)
  11907. klog.V(4).Infof("GCEInstances.Delete(%v, %v) = %v", ctx, key, err)
  11908. return err
  11909. }
  11910. // AttachDisk is a method on GCEInstances.
  11911. func (g *GCEInstances) AttachDisk(ctx context.Context, key *meta.Key, arg0 *ga.AttachedDisk) error {
  11912. klog.V(5).Infof("GCEInstances.AttachDisk(%v, %v, ...): called", ctx, key)
  11913. if !key.Valid() {
  11914. klog.V(2).Infof("GCEInstances.AttachDisk(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  11915. return fmt.Errorf("invalid GCE key (%+v)", key)
  11916. }
  11917. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Instances")
  11918. rk := &RateLimitKey{
  11919. ProjectID: projectID,
  11920. Operation: "AttachDisk",
  11921. Version: meta.Version("ga"),
  11922. Service: "Instances",
  11923. }
  11924. klog.V(5).Infof("GCEInstances.AttachDisk(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  11925. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  11926. klog.V(4).Infof("GCEInstances.AttachDisk(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  11927. return err
  11928. }
  11929. call := g.s.GA.Instances.AttachDisk(projectID, key.Zone, key.Name, arg0)
  11930. call.Context(ctx)
  11931. op, err := call.Do()
  11932. if err != nil {
  11933. klog.V(4).Infof("GCEInstances.AttachDisk(%v, %v, ...) = %+v", ctx, key, err)
  11934. return err
  11935. }
  11936. err = g.s.WaitForCompletion(ctx, op)
  11937. klog.V(4).Infof("GCEInstances.AttachDisk(%v, %v, ...) = %+v", ctx, key, err)
  11938. return err
  11939. }
  11940. // DetachDisk is a method on GCEInstances.
  11941. func (g *GCEInstances) DetachDisk(ctx context.Context, key *meta.Key, arg0 string) error {
  11942. klog.V(5).Infof("GCEInstances.DetachDisk(%v, %v, ...): called", ctx, key)
  11943. if !key.Valid() {
  11944. klog.V(2).Infof("GCEInstances.DetachDisk(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  11945. return fmt.Errorf("invalid GCE key (%+v)", key)
  11946. }
  11947. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Instances")
  11948. rk := &RateLimitKey{
  11949. ProjectID: projectID,
  11950. Operation: "DetachDisk",
  11951. Version: meta.Version("ga"),
  11952. Service: "Instances",
  11953. }
  11954. klog.V(5).Infof("GCEInstances.DetachDisk(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  11955. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  11956. klog.V(4).Infof("GCEInstances.DetachDisk(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  11957. return err
  11958. }
  11959. call := g.s.GA.Instances.DetachDisk(projectID, key.Zone, key.Name, arg0)
  11960. call.Context(ctx)
  11961. op, err := call.Do()
  11962. if err != nil {
  11963. klog.V(4).Infof("GCEInstances.DetachDisk(%v, %v, ...) = %+v", ctx, key, err)
  11964. return err
  11965. }
  11966. err = g.s.WaitForCompletion(ctx, op)
  11967. klog.V(4).Infof("GCEInstances.DetachDisk(%v, %v, ...) = %+v", ctx, key, err)
  11968. return err
  11969. }
  11970. // BetaInstances is an interface that allows for mocking of Instances.
  11971. type BetaInstances interface {
  11972. Get(ctx context.Context, key *meta.Key) (*beta.Instance, error)
  11973. List(ctx context.Context, zone string, fl *filter.F) ([]*beta.Instance, error)
  11974. Insert(ctx context.Context, key *meta.Key, obj *beta.Instance) error
  11975. Delete(ctx context.Context, key *meta.Key) error
  11976. AttachDisk(context.Context, *meta.Key, *beta.AttachedDisk) error
  11977. DetachDisk(context.Context, *meta.Key, string) error
  11978. UpdateNetworkInterface(context.Context, *meta.Key, string, *beta.NetworkInterface) error
  11979. }
  11980. // NewMockBetaInstances returns a new mock for Instances.
  11981. func NewMockBetaInstances(pr ProjectRouter, objs map[meta.Key]*MockInstancesObj) *MockBetaInstances {
  11982. mock := &MockBetaInstances{
  11983. ProjectRouter: pr,
  11984. Objects: objs,
  11985. GetError: map[meta.Key]error{},
  11986. InsertError: map[meta.Key]error{},
  11987. DeleteError: map[meta.Key]error{},
  11988. }
  11989. return mock
  11990. }
  11991. // MockBetaInstances is the mock for Instances.
  11992. type MockBetaInstances struct {
  11993. Lock sync.Mutex
  11994. ProjectRouter ProjectRouter
  11995. // Objects maintained by the mock.
  11996. Objects map[meta.Key]*MockInstancesObj
  11997. // If an entry exists for the given key and operation, then the error
  11998. // will be returned instead of the operation.
  11999. GetError map[meta.Key]error
  12000. ListError *error
  12001. InsertError map[meta.Key]error
  12002. DeleteError map[meta.Key]error
  12003. // xxxHook allow you to intercept the standard processing of the mock in
  12004. // order to add your own logic. Return (true, _, _) to prevent the normal
  12005. // execution flow of the mock. Return (false, nil, nil) to continue with
  12006. // normal mock behavior/ after the hook function executes.
  12007. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaInstances) (bool, *beta.Instance, error)
  12008. ListHook func(ctx context.Context, zone string, fl *filter.F, m *MockBetaInstances) (bool, []*beta.Instance, error)
  12009. InsertHook func(ctx context.Context, key *meta.Key, obj *beta.Instance, m *MockBetaInstances) (bool, error)
  12010. DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaInstances) (bool, error)
  12011. AttachDiskHook func(context.Context, *meta.Key, *beta.AttachedDisk, *MockBetaInstances) error
  12012. DetachDiskHook func(context.Context, *meta.Key, string, *MockBetaInstances) error
  12013. UpdateNetworkInterfaceHook func(context.Context, *meta.Key, string, *beta.NetworkInterface, *MockBetaInstances) error
  12014. // X is extra state that can be used as part of the mock. Generated code
  12015. // will not use this field.
  12016. X interface{}
  12017. }
  12018. // Get returns the object from the mock.
  12019. func (m *MockBetaInstances) Get(ctx context.Context, key *meta.Key) (*beta.Instance, error) {
  12020. if m.GetHook != nil {
  12021. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  12022. klog.V(5).Infof("MockBetaInstances.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  12023. return obj, err
  12024. }
  12025. }
  12026. if !key.Valid() {
  12027. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  12028. }
  12029. m.Lock.Lock()
  12030. defer m.Lock.Unlock()
  12031. if err, ok := m.GetError[*key]; ok {
  12032. klog.V(5).Infof("MockBetaInstances.Get(%v, %s) = nil, %v", ctx, key, err)
  12033. return nil, err
  12034. }
  12035. if obj, ok := m.Objects[*key]; ok {
  12036. typedObj := obj.ToBeta()
  12037. klog.V(5).Infof("MockBetaInstances.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  12038. return typedObj, nil
  12039. }
  12040. err := &googleapi.Error{
  12041. Code: http.StatusNotFound,
  12042. Message: fmt.Sprintf("MockBetaInstances %v not found", key),
  12043. }
  12044. klog.V(5).Infof("MockBetaInstances.Get(%v, %s) = nil, %v", ctx, key, err)
  12045. return nil, err
  12046. }
  12047. // List all of the objects in the mock in the given zone.
  12048. func (m *MockBetaInstances) List(ctx context.Context, zone string, fl *filter.F) ([]*beta.Instance, error) {
  12049. if m.ListHook != nil {
  12050. if intercept, objs, err := m.ListHook(ctx, zone, fl, m); intercept {
  12051. klog.V(5).Infof("MockBetaInstances.List(%v, %q, %v) = [%v items], %v", ctx, zone, fl, len(objs), err)
  12052. return objs, err
  12053. }
  12054. }
  12055. m.Lock.Lock()
  12056. defer m.Lock.Unlock()
  12057. if m.ListError != nil {
  12058. err := *m.ListError
  12059. klog.V(5).Infof("MockBetaInstances.List(%v, %q, %v) = nil, %v", ctx, zone, fl, err)
  12060. return nil, *m.ListError
  12061. }
  12062. var objs []*beta.Instance
  12063. for key, obj := range m.Objects {
  12064. if key.Zone != zone {
  12065. continue
  12066. }
  12067. if !fl.Match(obj.ToBeta()) {
  12068. continue
  12069. }
  12070. objs = append(objs, obj.ToBeta())
  12071. }
  12072. klog.V(5).Infof("MockBetaInstances.List(%v, %q, %v) = [%v items], nil", ctx, zone, fl, len(objs))
  12073. return objs, nil
  12074. }
  12075. // Insert is a mock for inserting/creating a new object.
  12076. func (m *MockBetaInstances) Insert(ctx context.Context, key *meta.Key, obj *beta.Instance) error {
  12077. if m.InsertHook != nil {
  12078. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  12079. klog.V(5).Infof("MockBetaInstances.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  12080. return err
  12081. }
  12082. }
  12083. if !key.Valid() {
  12084. return fmt.Errorf("invalid GCE key (%+v)", key)
  12085. }
  12086. m.Lock.Lock()
  12087. defer m.Lock.Unlock()
  12088. if err, ok := m.InsertError[*key]; ok {
  12089. klog.V(5).Infof("MockBetaInstances.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  12090. return err
  12091. }
  12092. if _, ok := m.Objects[*key]; ok {
  12093. err := &googleapi.Error{
  12094. Code: http.StatusConflict,
  12095. Message: fmt.Sprintf("MockBetaInstances %v exists", key),
  12096. }
  12097. klog.V(5).Infof("MockBetaInstances.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  12098. return err
  12099. }
  12100. obj.Name = key.Name
  12101. projectID := m.ProjectRouter.ProjectID(ctx, "beta", "instances")
  12102. obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "instances", key)
  12103. m.Objects[*key] = &MockInstancesObj{obj}
  12104. klog.V(5).Infof("MockBetaInstances.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  12105. return nil
  12106. }
  12107. // Delete is a mock for deleting the object.
  12108. func (m *MockBetaInstances) Delete(ctx context.Context, key *meta.Key) error {
  12109. if m.DeleteHook != nil {
  12110. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  12111. klog.V(5).Infof("MockBetaInstances.Delete(%v, %v) = %v", ctx, key, err)
  12112. return err
  12113. }
  12114. }
  12115. if !key.Valid() {
  12116. return fmt.Errorf("invalid GCE key (%+v)", key)
  12117. }
  12118. m.Lock.Lock()
  12119. defer m.Lock.Unlock()
  12120. if err, ok := m.DeleteError[*key]; ok {
  12121. klog.V(5).Infof("MockBetaInstances.Delete(%v, %v) = %v", ctx, key, err)
  12122. return err
  12123. }
  12124. if _, ok := m.Objects[*key]; !ok {
  12125. err := &googleapi.Error{
  12126. Code: http.StatusNotFound,
  12127. Message: fmt.Sprintf("MockBetaInstances %v not found", key),
  12128. }
  12129. klog.V(5).Infof("MockBetaInstances.Delete(%v, %v) = %v", ctx, key, err)
  12130. return err
  12131. }
  12132. delete(m.Objects, *key)
  12133. klog.V(5).Infof("MockBetaInstances.Delete(%v, %v) = nil", ctx, key)
  12134. return nil
  12135. }
  12136. // Obj wraps the object for use in the mock.
  12137. func (m *MockBetaInstances) Obj(o *beta.Instance) *MockInstancesObj {
  12138. return &MockInstancesObj{o}
  12139. }
  12140. // AttachDisk is a mock for the corresponding method.
  12141. func (m *MockBetaInstances) AttachDisk(ctx context.Context, key *meta.Key, arg0 *beta.AttachedDisk) error {
  12142. if m.AttachDiskHook != nil {
  12143. return m.AttachDiskHook(ctx, key, arg0, m)
  12144. }
  12145. return nil
  12146. }
  12147. // DetachDisk is a mock for the corresponding method.
  12148. func (m *MockBetaInstances) DetachDisk(ctx context.Context, key *meta.Key, arg0 string) error {
  12149. if m.DetachDiskHook != nil {
  12150. return m.DetachDiskHook(ctx, key, arg0, m)
  12151. }
  12152. return nil
  12153. }
  12154. // UpdateNetworkInterface is a mock for the corresponding method.
  12155. func (m *MockBetaInstances) UpdateNetworkInterface(ctx context.Context, key *meta.Key, arg0 string, arg1 *beta.NetworkInterface) error {
  12156. if m.UpdateNetworkInterfaceHook != nil {
  12157. return m.UpdateNetworkInterfaceHook(ctx, key, arg0, arg1, m)
  12158. }
  12159. return nil
  12160. }
  12161. // GCEBetaInstances is a simplifying adapter for the GCE Instances.
  12162. type GCEBetaInstances struct {
  12163. s *Service
  12164. }
  12165. // Get the Instance named by key.
  12166. func (g *GCEBetaInstances) Get(ctx context.Context, key *meta.Key) (*beta.Instance, error) {
  12167. klog.V(5).Infof("GCEBetaInstances.Get(%v, %v): called", ctx, key)
  12168. if !key.Valid() {
  12169. klog.V(2).Infof("GCEBetaInstances.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  12170. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  12171. }
  12172. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Instances")
  12173. rk := &RateLimitKey{
  12174. ProjectID: projectID,
  12175. Operation: "Get",
  12176. Version: meta.Version("beta"),
  12177. Service: "Instances",
  12178. }
  12179. klog.V(5).Infof("GCEBetaInstances.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  12180. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  12181. klog.V(4).Infof("GCEBetaInstances.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  12182. return nil, err
  12183. }
  12184. call := g.s.Beta.Instances.Get(projectID, key.Zone, key.Name)
  12185. call.Context(ctx)
  12186. v, err := call.Do()
  12187. klog.V(4).Infof("GCEBetaInstances.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  12188. return v, err
  12189. }
  12190. // List all Instance objects.
  12191. func (g *GCEBetaInstances) List(ctx context.Context, zone string, fl *filter.F) ([]*beta.Instance, error) {
  12192. klog.V(5).Infof("GCEBetaInstances.List(%v, %v, %v) called", ctx, zone, fl)
  12193. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Instances")
  12194. rk := &RateLimitKey{
  12195. ProjectID: projectID,
  12196. Operation: "List",
  12197. Version: meta.Version("beta"),
  12198. Service: "Instances",
  12199. }
  12200. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  12201. return nil, err
  12202. }
  12203. klog.V(5).Infof("GCEBetaInstances.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, zone, fl, projectID, rk)
  12204. call := g.s.Beta.Instances.List(projectID, zone)
  12205. if fl != filter.None {
  12206. call.Filter(fl.String())
  12207. }
  12208. var all []*beta.Instance
  12209. f := func(l *beta.InstanceList) error {
  12210. klog.V(5).Infof("GCEBetaInstances.List(%v, ..., %v): page %+v", ctx, fl, l)
  12211. all = append(all, l.Items...)
  12212. return nil
  12213. }
  12214. if err := call.Pages(ctx, f); err != nil {
  12215. klog.V(4).Infof("GCEBetaInstances.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  12216. return nil, err
  12217. }
  12218. if klog.V(4) {
  12219. klog.V(4).Infof("GCEBetaInstances.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  12220. } else if klog.V(5) {
  12221. var asStr []string
  12222. for _, o := range all {
  12223. asStr = append(asStr, fmt.Sprintf("%+v", o))
  12224. }
  12225. klog.V(5).Infof("GCEBetaInstances.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  12226. }
  12227. return all, nil
  12228. }
  12229. // Insert Instance with key of value obj.
  12230. func (g *GCEBetaInstances) Insert(ctx context.Context, key *meta.Key, obj *beta.Instance) error {
  12231. klog.V(5).Infof("GCEBetaInstances.Insert(%v, %v, %+v): called", ctx, key, obj)
  12232. if !key.Valid() {
  12233. klog.V(2).Infof("GCEBetaInstances.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  12234. return fmt.Errorf("invalid GCE key (%+v)", key)
  12235. }
  12236. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Instances")
  12237. rk := &RateLimitKey{
  12238. ProjectID: projectID,
  12239. Operation: "Insert",
  12240. Version: meta.Version("beta"),
  12241. Service: "Instances",
  12242. }
  12243. klog.V(5).Infof("GCEBetaInstances.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  12244. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  12245. klog.V(4).Infof("GCEBetaInstances.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  12246. return err
  12247. }
  12248. obj.Name = key.Name
  12249. call := g.s.Beta.Instances.Insert(projectID, key.Zone, obj)
  12250. call.Context(ctx)
  12251. op, err := call.Do()
  12252. if err != nil {
  12253. klog.V(4).Infof("GCEBetaInstances.Insert(%v, %v, ...) = %+v", ctx, key, err)
  12254. return err
  12255. }
  12256. err = g.s.WaitForCompletion(ctx, op)
  12257. klog.V(4).Infof("GCEBetaInstances.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  12258. return err
  12259. }
  12260. // Delete the Instance referenced by key.
  12261. func (g *GCEBetaInstances) Delete(ctx context.Context, key *meta.Key) error {
  12262. klog.V(5).Infof("GCEBetaInstances.Delete(%v, %v): called", ctx, key)
  12263. if !key.Valid() {
  12264. klog.V(2).Infof("GCEBetaInstances.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  12265. return fmt.Errorf("invalid GCE key (%+v)", key)
  12266. }
  12267. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Instances")
  12268. rk := &RateLimitKey{
  12269. ProjectID: projectID,
  12270. Operation: "Delete",
  12271. Version: meta.Version("beta"),
  12272. Service: "Instances",
  12273. }
  12274. klog.V(5).Infof("GCEBetaInstances.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  12275. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  12276. klog.V(4).Infof("GCEBetaInstances.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  12277. return err
  12278. }
  12279. call := g.s.Beta.Instances.Delete(projectID, key.Zone, key.Name)
  12280. call.Context(ctx)
  12281. op, err := call.Do()
  12282. if err != nil {
  12283. klog.V(4).Infof("GCEBetaInstances.Delete(%v, %v) = %v", ctx, key, err)
  12284. return err
  12285. }
  12286. err = g.s.WaitForCompletion(ctx, op)
  12287. klog.V(4).Infof("GCEBetaInstances.Delete(%v, %v) = %v", ctx, key, err)
  12288. return err
  12289. }
  12290. // AttachDisk is a method on GCEBetaInstances.
  12291. func (g *GCEBetaInstances) AttachDisk(ctx context.Context, key *meta.Key, arg0 *beta.AttachedDisk) error {
  12292. klog.V(5).Infof("GCEBetaInstances.AttachDisk(%v, %v, ...): called", ctx, key)
  12293. if !key.Valid() {
  12294. klog.V(2).Infof("GCEBetaInstances.AttachDisk(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  12295. return fmt.Errorf("invalid GCE key (%+v)", key)
  12296. }
  12297. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Instances")
  12298. rk := &RateLimitKey{
  12299. ProjectID: projectID,
  12300. Operation: "AttachDisk",
  12301. Version: meta.Version("beta"),
  12302. Service: "Instances",
  12303. }
  12304. klog.V(5).Infof("GCEBetaInstances.AttachDisk(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  12305. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  12306. klog.V(4).Infof("GCEBetaInstances.AttachDisk(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  12307. return err
  12308. }
  12309. call := g.s.Beta.Instances.AttachDisk(projectID, key.Zone, key.Name, arg0)
  12310. call.Context(ctx)
  12311. op, err := call.Do()
  12312. if err != nil {
  12313. klog.V(4).Infof("GCEBetaInstances.AttachDisk(%v, %v, ...) = %+v", ctx, key, err)
  12314. return err
  12315. }
  12316. err = g.s.WaitForCompletion(ctx, op)
  12317. klog.V(4).Infof("GCEBetaInstances.AttachDisk(%v, %v, ...) = %+v", ctx, key, err)
  12318. return err
  12319. }
  12320. // DetachDisk is a method on GCEBetaInstances.
  12321. func (g *GCEBetaInstances) DetachDisk(ctx context.Context, key *meta.Key, arg0 string) error {
  12322. klog.V(5).Infof("GCEBetaInstances.DetachDisk(%v, %v, ...): called", ctx, key)
  12323. if !key.Valid() {
  12324. klog.V(2).Infof("GCEBetaInstances.DetachDisk(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  12325. return fmt.Errorf("invalid GCE key (%+v)", key)
  12326. }
  12327. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Instances")
  12328. rk := &RateLimitKey{
  12329. ProjectID: projectID,
  12330. Operation: "DetachDisk",
  12331. Version: meta.Version("beta"),
  12332. Service: "Instances",
  12333. }
  12334. klog.V(5).Infof("GCEBetaInstances.DetachDisk(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  12335. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  12336. klog.V(4).Infof("GCEBetaInstances.DetachDisk(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  12337. return err
  12338. }
  12339. call := g.s.Beta.Instances.DetachDisk(projectID, key.Zone, key.Name, arg0)
  12340. call.Context(ctx)
  12341. op, err := call.Do()
  12342. if err != nil {
  12343. klog.V(4).Infof("GCEBetaInstances.DetachDisk(%v, %v, ...) = %+v", ctx, key, err)
  12344. return err
  12345. }
  12346. err = g.s.WaitForCompletion(ctx, op)
  12347. klog.V(4).Infof("GCEBetaInstances.DetachDisk(%v, %v, ...) = %+v", ctx, key, err)
  12348. return err
  12349. }
  12350. // UpdateNetworkInterface is a method on GCEBetaInstances.
  12351. func (g *GCEBetaInstances) UpdateNetworkInterface(ctx context.Context, key *meta.Key, arg0 string, arg1 *beta.NetworkInterface) error {
  12352. klog.V(5).Infof("GCEBetaInstances.UpdateNetworkInterface(%v, %v, ...): called", ctx, key)
  12353. if !key.Valid() {
  12354. klog.V(2).Infof("GCEBetaInstances.UpdateNetworkInterface(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  12355. return fmt.Errorf("invalid GCE key (%+v)", key)
  12356. }
  12357. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Instances")
  12358. rk := &RateLimitKey{
  12359. ProjectID: projectID,
  12360. Operation: "UpdateNetworkInterface",
  12361. Version: meta.Version("beta"),
  12362. Service: "Instances",
  12363. }
  12364. klog.V(5).Infof("GCEBetaInstances.UpdateNetworkInterface(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  12365. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  12366. klog.V(4).Infof("GCEBetaInstances.UpdateNetworkInterface(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  12367. return err
  12368. }
  12369. call := g.s.Beta.Instances.UpdateNetworkInterface(projectID, key.Zone, key.Name, arg0, arg1)
  12370. call.Context(ctx)
  12371. op, err := call.Do()
  12372. if err != nil {
  12373. klog.V(4).Infof("GCEBetaInstances.UpdateNetworkInterface(%v, %v, ...) = %+v", ctx, key, err)
  12374. return err
  12375. }
  12376. err = g.s.WaitForCompletion(ctx, op)
  12377. klog.V(4).Infof("GCEBetaInstances.UpdateNetworkInterface(%v, %v, ...) = %+v", ctx, key, err)
  12378. return err
  12379. }
  12380. // AlphaInstances is an interface that allows for mocking of Instances.
  12381. type AlphaInstances interface {
  12382. Get(ctx context.Context, key *meta.Key) (*alpha.Instance, error)
  12383. List(ctx context.Context, zone string, fl *filter.F) ([]*alpha.Instance, error)
  12384. Insert(ctx context.Context, key *meta.Key, obj *alpha.Instance) error
  12385. Delete(ctx context.Context, key *meta.Key) error
  12386. AttachDisk(context.Context, *meta.Key, *alpha.AttachedDisk) error
  12387. DetachDisk(context.Context, *meta.Key, string) error
  12388. UpdateNetworkInterface(context.Context, *meta.Key, string, *alpha.NetworkInterface) error
  12389. }
  12390. // NewMockAlphaInstances returns a new mock for Instances.
  12391. func NewMockAlphaInstances(pr ProjectRouter, objs map[meta.Key]*MockInstancesObj) *MockAlphaInstances {
  12392. mock := &MockAlphaInstances{
  12393. ProjectRouter: pr,
  12394. Objects: objs,
  12395. GetError: map[meta.Key]error{},
  12396. InsertError: map[meta.Key]error{},
  12397. DeleteError: map[meta.Key]error{},
  12398. }
  12399. return mock
  12400. }
  12401. // MockAlphaInstances is the mock for Instances.
  12402. type MockAlphaInstances struct {
  12403. Lock sync.Mutex
  12404. ProjectRouter ProjectRouter
  12405. // Objects maintained by the mock.
  12406. Objects map[meta.Key]*MockInstancesObj
  12407. // If an entry exists for the given key and operation, then the error
  12408. // will be returned instead of the operation.
  12409. GetError map[meta.Key]error
  12410. ListError *error
  12411. InsertError map[meta.Key]error
  12412. DeleteError map[meta.Key]error
  12413. // xxxHook allow you to intercept the standard processing of the mock in
  12414. // order to add your own logic. Return (true, _, _) to prevent the normal
  12415. // execution flow of the mock. Return (false, nil, nil) to continue with
  12416. // normal mock behavior/ after the hook function executes.
  12417. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaInstances) (bool, *alpha.Instance, error)
  12418. ListHook func(ctx context.Context, zone string, fl *filter.F, m *MockAlphaInstances) (bool, []*alpha.Instance, error)
  12419. InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.Instance, m *MockAlphaInstances) (bool, error)
  12420. DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaInstances) (bool, error)
  12421. AttachDiskHook func(context.Context, *meta.Key, *alpha.AttachedDisk, *MockAlphaInstances) error
  12422. DetachDiskHook func(context.Context, *meta.Key, string, *MockAlphaInstances) error
  12423. UpdateNetworkInterfaceHook func(context.Context, *meta.Key, string, *alpha.NetworkInterface, *MockAlphaInstances) error
  12424. // X is extra state that can be used as part of the mock. Generated code
  12425. // will not use this field.
  12426. X interface{}
  12427. }
  12428. // Get returns the object from the mock.
  12429. func (m *MockAlphaInstances) Get(ctx context.Context, key *meta.Key) (*alpha.Instance, error) {
  12430. if m.GetHook != nil {
  12431. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  12432. klog.V(5).Infof("MockAlphaInstances.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  12433. return obj, err
  12434. }
  12435. }
  12436. if !key.Valid() {
  12437. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  12438. }
  12439. m.Lock.Lock()
  12440. defer m.Lock.Unlock()
  12441. if err, ok := m.GetError[*key]; ok {
  12442. klog.V(5).Infof("MockAlphaInstances.Get(%v, %s) = nil, %v", ctx, key, err)
  12443. return nil, err
  12444. }
  12445. if obj, ok := m.Objects[*key]; ok {
  12446. typedObj := obj.ToAlpha()
  12447. klog.V(5).Infof("MockAlphaInstances.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  12448. return typedObj, nil
  12449. }
  12450. err := &googleapi.Error{
  12451. Code: http.StatusNotFound,
  12452. Message: fmt.Sprintf("MockAlphaInstances %v not found", key),
  12453. }
  12454. klog.V(5).Infof("MockAlphaInstances.Get(%v, %s) = nil, %v", ctx, key, err)
  12455. return nil, err
  12456. }
  12457. // List all of the objects in the mock in the given zone.
  12458. func (m *MockAlphaInstances) List(ctx context.Context, zone string, fl *filter.F) ([]*alpha.Instance, error) {
  12459. if m.ListHook != nil {
  12460. if intercept, objs, err := m.ListHook(ctx, zone, fl, m); intercept {
  12461. klog.V(5).Infof("MockAlphaInstances.List(%v, %q, %v) = [%v items], %v", ctx, zone, fl, len(objs), err)
  12462. return objs, err
  12463. }
  12464. }
  12465. m.Lock.Lock()
  12466. defer m.Lock.Unlock()
  12467. if m.ListError != nil {
  12468. err := *m.ListError
  12469. klog.V(5).Infof("MockAlphaInstances.List(%v, %q, %v) = nil, %v", ctx, zone, fl, err)
  12470. return nil, *m.ListError
  12471. }
  12472. var objs []*alpha.Instance
  12473. for key, obj := range m.Objects {
  12474. if key.Zone != zone {
  12475. continue
  12476. }
  12477. if !fl.Match(obj.ToAlpha()) {
  12478. continue
  12479. }
  12480. objs = append(objs, obj.ToAlpha())
  12481. }
  12482. klog.V(5).Infof("MockAlphaInstances.List(%v, %q, %v) = [%v items], nil", ctx, zone, fl, len(objs))
  12483. return objs, nil
  12484. }
  12485. // Insert is a mock for inserting/creating a new object.
  12486. func (m *MockAlphaInstances) Insert(ctx context.Context, key *meta.Key, obj *alpha.Instance) error {
  12487. if m.InsertHook != nil {
  12488. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  12489. klog.V(5).Infof("MockAlphaInstances.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  12490. return err
  12491. }
  12492. }
  12493. if !key.Valid() {
  12494. return fmt.Errorf("invalid GCE key (%+v)", key)
  12495. }
  12496. m.Lock.Lock()
  12497. defer m.Lock.Unlock()
  12498. if err, ok := m.InsertError[*key]; ok {
  12499. klog.V(5).Infof("MockAlphaInstances.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  12500. return err
  12501. }
  12502. if _, ok := m.Objects[*key]; ok {
  12503. err := &googleapi.Error{
  12504. Code: http.StatusConflict,
  12505. Message: fmt.Sprintf("MockAlphaInstances %v exists", key),
  12506. }
  12507. klog.V(5).Infof("MockAlphaInstances.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  12508. return err
  12509. }
  12510. obj.Name = key.Name
  12511. projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "instances")
  12512. obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "instances", key)
  12513. m.Objects[*key] = &MockInstancesObj{obj}
  12514. klog.V(5).Infof("MockAlphaInstances.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  12515. return nil
  12516. }
  12517. // Delete is a mock for deleting the object.
  12518. func (m *MockAlphaInstances) Delete(ctx context.Context, key *meta.Key) error {
  12519. if m.DeleteHook != nil {
  12520. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  12521. klog.V(5).Infof("MockAlphaInstances.Delete(%v, %v) = %v", ctx, key, err)
  12522. return err
  12523. }
  12524. }
  12525. if !key.Valid() {
  12526. return fmt.Errorf("invalid GCE key (%+v)", key)
  12527. }
  12528. m.Lock.Lock()
  12529. defer m.Lock.Unlock()
  12530. if err, ok := m.DeleteError[*key]; ok {
  12531. klog.V(5).Infof("MockAlphaInstances.Delete(%v, %v) = %v", ctx, key, err)
  12532. return err
  12533. }
  12534. if _, ok := m.Objects[*key]; !ok {
  12535. err := &googleapi.Error{
  12536. Code: http.StatusNotFound,
  12537. Message: fmt.Sprintf("MockAlphaInstances %v not found", key),
  12538. }
  12539. klog.V(5).Infof("MockAlphaInstances.Delete(%v, %v) = %v", ctx, key, err)
  12540. return err
  12541. }
  12542. delete(m.Objects, *key)
  12543. klog.V(5).Infof("MockAlphaInstances.Delete(%v, %v) = nil", ctx, key)
  12544. return nil
  12545. }
  12546. // Obj wraps the object for use in the mock.
  12547. func (m *MockAlphaInstances) Obj(o *alpha.Instance) *MockInstancesObj {
  12548. return &MockInstancesObj{o}
  12549. }
  12550. // AttachDisk is a mock for the corresponding method.
  12551. func (m *MockAlphaInstances) AttachDisk(ctx context.Context, key *meta.Key, arg0 *alpha.AttachedDisk) error {
  12552. if m.AttachDiskHook != nil {
  12553. return m.AttachDiskHook(ctx, key, arg0, m)
  12554. }
  12555. return nil
  12556. }
  12557. // DetachDisk is a mock for the corresponding method.
  12558. func (m *MockAlphaInstances) DetachDisk(ctx context.Context, key *meta.Key, arg0 string) error {
  12559. if m.DetachDiskHook != nil {
  12560. return m.DetachDiskHook(ctx, key, arg0, m)
  12561. }
  12562. return nil
  12563. }
  12564. // UpdateNetworkInterface is a mock for the corresponding method.
  12565. func (m *MockAlphaInstances) UpdateNetworkInterface(ctx context.Context, key *meta.Key, arg0 string, arg1 *alpha.NetworkInterface) error {
  12566. if m.UpdateNetworkInterfaceHook != nil {
  12567. return m.UpdateNetworkInterfaceHook(ctx, key, arg0, arg1, m)
  12568. }
  12569. return nil
  12570. }
  12571. // GCEAlphaInstances is a simplifying adapter for the GCE Instances.
  12572. type GCEAlphaInstances struct {
  12573. s *Service
  12574. }
  12575. // Get the Instance named by key.
  12576. func (g *GCEAlphaInstances) Get(ctx context.Context, key *meta.Key) (*alpha.Instance, error) {
  12577. klog.V(5).Infof("GCEAlphaInstances.Get(%v, %v): called", ctx, key)
  12578. if !key.Valid() {
  12579. klog.V(2).Infof("GCEAlphaInstances.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  12580. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  12581. }
  12582. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Instances")
  12583. rk := &RateLimitKey{
  12584. ProjectID: projectID,
  12585. Operation: "Get",
  12586. Version: meta.Version("alpha"),
  12587. Service: "Instances",
  12588. }
  12589. klog.V(5).Infof("GCEAlphaInstances.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  12590. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  12591. klog.V(4).Infof("GCEAlphaInstances.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  12592. return nil, err
  12593. }
  12594. call := g.s.Alpha.Instances.Get(projectID, key.Zone, key.Name)
  12595. call.Context(ctx)
  12596. v, err := call.Do()
  12597. klog.V(4).Infof("GCEAlphaInstances.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  12598. return v, err
  12599. }
  12600. // List all Instance objects.
  12601. func (g *GCEAlphaInstances) List(ctx context.Context, zone string, fl *filter.F) ([]*alpha.Instance, error) {
  12602. klog.V(5).Infof("GCEAlphaInstances.List(%v, %v, %v) called", ctx, zone, fl)
  12603. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Instances")
  12604. rk := &RateLimitKey{
  12605. ProjectID: projectID,
  12606. Operation: "List",
  12607. Version: meta.Version("alpha"),
  12608. Service: "Instances",
  12609. }
  12610. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  12611. return nil, err
  12612. }
  12613. klog.V(5).Infof("GCEAlphaInstances.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, zone, fl, projectID, rk)
  12614. call := g.s.Alpha.Instances.List(projectID, zone)
  12615. if fl != filter.None {
  12616. call.Filter(fl.String())
  12617. }
  12618. var all []*alpha.Instance
  12619. f := func(l *alpha.InstanceList) error {
  12620. klog.V(5).Infof("GCEAlphaInstances.List(%v, ..., %v): page %+v", ctx, fl, l)
  12621. all = append(all, l.Items...)
  12622. return nil
  12623. }
  12624. if err := call.Pages(ctx, f); err != nil {
  12625. klog.V(4).Infof("GCEAlphaInstances.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  12626. return nil, err
  12627. }
  12628. if klog.V(4) {
  12629. klog.V(4).Infof("GCEAlphaInstances.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  12630. } else if klog.V(5) {
  12631. var asStr []string
  12632. for _, o := range all {
  12633. asStr = append(asStr, fmt.Sprintf("%+v", o))
  12634. }
  12635. klog.V(5).Infof("GCEAlphaInstances.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  12636. }
  12637. return all, nil
  12638. }
  12639. // Insert Instance with key of value obj.
  12640. func (g *GCEAlphaInstances) Insert(ctx context.Context, key *meta.Key, obj *alpha.Instance) error {
  12641. klog.V(5).Infof("GCEAlphaInstances.Insert(%v, %v, %+v): called", ctx, key, obj)
  12642. if !key.Valid() {
  12643. klog.V(2).Infof("GCEAlphaInstances.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  12644. return fmt.Errorf("invalid GCE key (%+v)", key)
  12645. }
  12646. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Instances")
  12647. rk := &RateLimitKey{
  12648. ProjectID: projectID,
  12649. Operation: "Insert",
  12650. Version: meta.Version("alpha"),
  12651. Service: "Instances",
  12652. }
  12653. klog.V(5).Infof("GCEAlphaInstances.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  12654. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  12655. klog.V(4).Infof("GCEAlphaInstances.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  12656. return err
  12657. }
  12658. obj.Name = key.Name
  12659. call := g.s.Alpha.Instances.Insert(projectID, key.Zone, obj)
  12660. call.Context(ctx)
  12661. op, err := call.Do()
  12662. if err != nil {
  12663. klog.V(4).Infof("GCEAlphaInstances.Insert(%v, %v, ...) = %+v", ctx, key, err)
  12664. return err
  12665. }
  12666. err = g.s.WaitForCompletion(ctx, op)
  12667. klog.V(4).Infof("GCEAlphaInstances.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  12668. return err
  12669. }
  12670. // Delete the Instance referenced by key.
  12671. func (g *GCEAlphaInstances) Delete(ctx context.Context, key *meta.Key) error {
  12672. klog.V(5).Infof("GCEAlphaInstances.Delete(%v, %v): called", ctx, key)
  12673. if !key.Valid() {
  12674. klog.V(2).Infof("GCEAlphaInstances.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  12675. return fmt.Errorf("invalid GCE key (%+v)", key)
  12676. }
  12677. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Instances")
  12678. rk := &RateLimitKey{
  12679. ProjectID: projectID,
  12680. Operation: "Delete",
  12681. Version: meta.Version("alpha"),
  12682. Service: "Instances",
  12683. }
  12684. klog.V(5).Infof("GCEAlphaInstances.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  12685. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  12686. klog.V(4).Infof("GCEAlphaInstances.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  12687. return err
  12688. }
  12689. call := g.s.Alpha.Instances.Delete(projectID, key.Zone, key.Name)
  12690. call.Context(ctx)
  12691. op, err := call.Do()
  12692. if err != nil {
  12693. klog.V(4).Infof("GCEAlphaInstances.Delete(%v, %v) = %v", ctx, key, err)
  12694. return err
  12695. }
  12696. err = g.s.WaitForCompletion(ctx, op)
  12697. klog.V(4).Infof("GCEAlphaInstances.Delete(%v, %v) = %v", ctx, key, err)
  12698. return err
  12699. }
  12700. // AttachDisk is a method on GCEAlphaInstances.
  12701. func (g *GCEAlphaInstances) AttachDisk(ctx context.Context, key *meta.Key, arg0 *alpha.AttachedDisk) error {
  12702. klog.V(5).Infof("GCEAlphaInstances.AttachDisk(%v, %v, ...): called", ctx, key)
  12703. if !key.Valid() {
  12704. klog.V(2).Infof("GCEAlphaInstances.AttachDisk(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  12705. return fmt.Errorf("invalid GCE key (%+v)", key)
  12706. }
  12707. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Instances")
  12708. rk := &RateLimitKey{
  12709. ProjectID: projectID,
  12710. Operation: "AttachDisk",
  12711. Version: meta.Version("alpha"),
  12712. Service: "Instances",
  12713. }
  12714. klog.V(5).Infof("GCEAlphaInstances.AttachDisk(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  12715. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  12716. klog.V(4).Infof("GCEAlphaInstances.AttachDisk(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  12717. return err
  12718. }
  12719. call := g.s.Alpha.Instances.AttachDisk(projectID, key.Zone, key.Name, arg0)
  12720. call.Context(ctx)
  12721. op, err := call.Do()
  12722. if err != nil {
  12723. klog.V(4).Infof("GCEAlphaInstances.AttachDisk(%v, %v, ...) = %+v", ctx, key, err)
  12724. return err
  12725. }
  12726. err = g.s.WaitForCompletion(ctx, op)
  12727. klog.V(4).Infof("GCEAlphaInstances.AttachDisk(%v, %v, ...) = %+v", ctx, key, err)
  12728. return err
  12729. }
  12730. // DetachDisk is a method on GCEAlphaInstances.
  12731. func (g *GCEAlphaInstances) DetachDisk(ctx context.Context, key *meta.Key, arg0 string) error {
  12732. klog.V(5).Infof("GCEAlphaInstances.DetachDisk(%v, %v, ...): called", ctx, key)
  12733. if !key.Valid() {
  12734. klog.V(2).Infof("GCEAlphaInstances.DetachDisk(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  12735. return fmt.Errorf("invalid GCE key (%+v)", key)
  12736. }
  12737. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Instances")
  12738. rk := &RateLimitKey{
  12739. ProjectID: projectID,
  12740. Operation: "DetachDisk",
  12741. Version: meta.Version("alpha"),
  12742. Service: "Instances",
  12743. }
  12744. klog.V(5).Infof("GCEAlphaInstances.DetachDisk(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  12745. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  12746. klog.V(4).Infof("GCEAlphaInstances.DetachDisk(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  12747. return err
  12748. }
  12749. call := g.s.Alpha.Instances.DetachDisk(projectID, key.Zone, key.Name, arg0)
  12750. call.Context(ctx)
  12751. op, err := call.Do()
  12752. if err != nil {
  12753. klog.V(4).Infof("GCEAlphaInstances.DetachDisk(%v, %v, ...) = %+v", ctx, key, err)
  12754. return err
  12755. }
  12756. err = g.s.WaitForCompletion(ctx, op)
  12757. klog.V(4).Infof("GCEAlphaInstances.DetachDisk(%v, %v, ...) = %+v", ctx, key, err)
  12758. return err
  12759. }
  12760. // UpdateNetworkInterface is a method on GCEAlphaInstances.
  12761. func (g *GCEAlphaInstances) UpdateNetworkInterface(ctx context.Context, key *meta.Key, arg0 string, arg1 *alpha.NetworkInterface) error {
  12762. klog.V(5).Infof("GCEAlphaInstances.UpdateNetworkInterface(%v, %v, ...): called", ctx, key)
  12763. if !key.Valid() {
  12764. klog.V(2).Infof("GCEAlphaInstances.UpdateNetworkInterface(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  12765. return fmt.Errorf("invalid GCE key (%+v)", key)
  12766. }
  12767. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Instances")
  12768. rk := &RateLimitKey{
  12769. ProjectID: projectID,
  12770. Operation: "UpdateNetworkInterface",
  12771. Version: meta.Version("alpha"),
  12772. Service: "Instances",
  12773. }
  12774. klog.V(5).Infof("GCEAlphaInstances.UpdateNetworkInterface(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  12775. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  12776. klog.V(4).Infof("GCEAlphaInstances.UpdateNetworkInterface(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  12777. return err
  12778. }
  12779. call := g.s.Alpha.Instances.UpdateNetworkInterface(projectID, key.Zone, key.Name, arg0, arg1)
  12780. call.Context(ctx)
  12781. op, err := call.Do()
  12782. if err != nil {
  12783. klog.V(4).Infof("GCEAlphaInstances.UpdateNetworkInterface(%v, %v, ...) = %+v", ctx, key, err)
  12784. return err
  12785. }
  12786. err = g.s.WaitForCompletion(ctx, op)
  12787. klog.V(4).Infof("GCEAlphaInstances.UpdateNetworkInterface(%v, %v, ...) = %+v", ctx, key, err)
  12788. return err
  12789. }
  12790. // AlphaNetworks is an interface that allows for mocking of Networks.
  12791. type AlphaNetworks interface {
  12792. Get(ctx context.Context, key *meta.Key) (*alpha.Network, error)
  12793. List(ctx context.Context, fl *filter.F) ([]*alpha.Network, error)
  12794. Insert(ctx context.Context, key *meta.Key, obj *alpha.Network) error
  12795. Delete(ctx context.Context, key *meta.Key) error
  12796. }
  12797. // NewMockAlphaNetworks returns a new mock for Networks.
  12798. func NewMockAlphaNetworks(pr ProjectRouter, objs map[meta.Key]*MockNetworksObj) *MockAlphaNetworks {
  12799. mock := &MockAlphaNetworks{
  12800. ProjectRouter: pr,
  12801. Objects: objs,
  12802. GetError: map[meta.Key]error{},
  12803. InsertError: map[meta.Key]error{},
  12804. DeleteError: map[meta.Key]error{},
  12805. }
  12806. return mock
  12807. }
  12808. // MockAlphaNetworks is the mock for Networks.
  12809. type MockAlphaNetworks struct {
  12810. Lock sync.Mutex
  12811. ProjectRouter ProjectRouter
  12812. // Objects maintained by the mock.
  12813. Objects map[meta.Key]*MockNetworksObj
  12814. // If an entry exists for the given key and operation, then the error
  12815. // will be returned instead of the operation.
  12816. GetError map[meta.Key]error
  12817. ListError *error
  12818. InsertError map[meta.Key]error
  12819. DeleteError map[meta.Key]error
  12820. // xxxHook allow you to intercept the standard processing of the mock in
  12821. // order to add your own logic. Return (true, _, _) to prevent the normal
  12822. // execution flow of the mock. Return (false, nil, nil) to continue with
  12823. // normal mock behavior/ after the hook function executes.
  12824. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaNetworks) (bool, *alpha.Network, error)
  12825. ListHook func(ctx context.Context, fl *filter.F, m *MockAlphaNetworks) (bool, []*alpha.Network, error)
  12826. InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.Network, m *MockAlphaNetworks) (bool, error)
  12827. DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaNetworks) (bool, error)
  12828. // X is extra state that can be used as part of the mock. Generated code
  12829. // will not use this field.
  12830. X interface{}
  12831. }
  12832. // Get returns the object from the mock.
  12833. func (m *MockAlphaNetworks) Get(ctx context.Context, key *meta.Key) (*alpha.Network, error) {
  12834. if m.GetHook != nil {
  12835. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  12836. klog.V(5).Infof("MockAlphaNetworks.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  12837. return obj, err
  12838. }
  12839. }
  12840. if !key.Valid() {
  12841. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  12842. }
  12843. m.Lock.Lock()
  12844. defer m.Lock.Unlock()
  12845. if err, ok := m.GetError[*key]; ok {
  12846. klog.V(5).Infof("MockAlphaNetworks.Get(%v, %s) = nil, %v", ctx, key, err)
  12847. return nil, err
  12848. }
  12849. if obj, ok := m.Objects[*key]; ok {
  12850. typedObj := obj.ToAlpha()
  12851. klog.V(5).Infof("MockAlphaNetworks.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  12852. return typedObj, nil
  12853. }
  12854. err := &googleapi.Error{
  12855. Code: http.StatusNotFound,
  12856. Message: fmt.Sprintf("MockAlphaNetworks %v not found", key),
  12857. }
  12858. klog.V(5).Infof("MockAlphaNetworks.Get(%v, %s) = nil, %v", ctx, key, err)
  12859. return nil, err
  12860. }
  12861. // List all of the objects in the mock.
  12862. func (m *MockAlphaNetworks) List(ctx context.Context, fl *filter.F) ([]*alpha.Network, error) {
  12863. if m.ListHook != nil {
  12864. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  12865. klog.V(5).Infof("MockAlphaNetworks.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  12866. return objs, err
  12867. }
  12868. }
  12869. m.Lock.Lock()
  12870. defer m.Lock.Unlock()
  12871. if m.ListError != nil {
  12872. err := *m.ListError
  12873. klog.V(5).Infof("MockAlphaNetworks.List(%v, %v) = nil, %v", ctx, fl, err)
  12874. return nil, *m.ListError
  12875. }
  12876. var objs []*alpha.Network
  12877. for _, obj := range m.Objects {
  12878. if !fl.Match(obj.ToAlpha()) {
  12879. continue
  12880. }
  12881. objs = append(objs, obj.ToAlpha())
  12882. }
  12883. klog.V(5).Infof("MockAlphaNetworks.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  12884. return objs, nil
  12885. }
  12886. // Insert is a mock for inserting/creating a new object.
  12887. func (m *MockAlphaNetworks) Insert(ctx context.Context, key *meta.Key, obj *alpha.Network) error {
  12888. if m.InsertHook != nil {
  12889. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  12890. klog.V(5).Infof("MockAlphaNetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  12891. return err
  12892. }
  12893. }
  12894. if !key.Valid() {
  12895. return fmt.Errorf("invalid GCE key (%+v)", key)
  12896. }
  12897. m.Lock.Lock()
  12898. defer m.Lock.Unlock()
  12899. if err, ok := m.InsertError[*key]; ok {
  12900. klog.V(5).Infof("MockAlphaNetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  12901. return err
  12902. }
  12903. if _, ok := m.Objects[*key]; ok {
  12904. err := &googleapi.Error{
  12905. Code: http.StatusConflict,
  12906. Message: fmt.Sprintf("MockAlphaNetworks %v exists", key),
  12907. }
  12908. klog.V(5).Infof("MockAlphaNetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  12909. return err
  12910. }
  12911. obj.Name = key.Name
  12912. projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "networks")
  12913. obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "networks", key)
  12914. m.Objects[*key] = &MockNetworksObj{obj}
  12915. klog.V(5).Infof("MockAlphaNetworks.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  12916. return nil
  12917. }
  12918. // Delete is a mock for deleting the object.
  12919. func (m *MockAlphaNetworks) Delete(ctx context.Context, key *meta.Key) error {
  12920. if m.DeleteHook != nil {
  12921. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  12922. klog.V(5).Infof("MockAlphaNetworks.Delete(%v, %v) = %v", ctx, key, err)
  12923. return err
  12924. }
  12925. }
  12926. if !key.Valid() {
  12927. return fmt.Errorf("invalid GCE key (%+v)", key)
  12928. }
  12929. m.Lock.Lock()
  12930. defer m.Lock.Unlock()
  12931. if err, ok := m.DeleteError[*key]; ok {
  12932. klog.V(5).Infof("MockAlphaNetworks.Delete(%v, %v) = %v", ctx, key, err)
  12933. return err
  12934. }
  12935. if _, ok := m.Objects[*key]; !ok {
  12936. err := &googleapi.Error{
  12937. Code: http.StatusNotFound,
  12938. Message: fmt.Sprintf("MockAlphaNetworks %v not found", key),
  12939. }
  12940. klog.V(5).Infof("MockAlphaNetworks.Delete(%v, %v) = %v", ctx, key, err)
  12941. return err
  12942. }
  12943. delete(m.Objects, *key)
  12944. klog.V(5).Infof("MockAlphaNetworks.Delete(%v, %v) = nil", ctx, key)
  12945. return nil
  12946. }
  12947. // Obj wraps the object for use in the mock.
  12948. func (m *MockAlphaNetworks) Obj(o *alpha.Network) *MockNetworksObj {
  12949. return &MockNetworksObj{o}
  12950. }
  12951. // GCEAlphaNetworks is a simplifying adapter for the GCE Networks.
  12952. type GCEAlphaNetworks struct {
  12953. s *Service
  12954. }
  12955. // Get the Network named by key.
  12956. func (g *GCEAlphaNetworks) Get(ctx context.Context, key *meta.Key) (*alpha.Network, error) {
  12957. klog.V(5).Infof("GCEAlphaNetworks.Get(%v, %v): called", ctx, key)
  12958. if !key.Valid() {
  12959. klog.V(2).Infof("GCEAlphaNetworks.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  12960. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  12961. }
  12962. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Networks")
  12963. rk := &RateLimitKey{
  12964. ProjectID: projectID,
  12965. Operation: "Get",
  12966. Version: meta.Version("alpha"),
  12967. Service: "Networks",
  12968. }
  12969. klog.V(5).Infof("GCEAlphaNetworks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  12970. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  12971. klog.V(4).Infof("GCEAlphaNetworks.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  12972. return nil, err
  12973. }
  12974. call := g.s.Alpha.Networks.Get(projectID, key.Name)
  12975. call.Context(ctx)
  12976. v, err := call.Do()
  12977. klog.V(4).Infof("GCEAlphaNetworks.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  12978. return v, err
  12979. }
  12980. // List all Network objects.
  12981. func (g *GCEAlphaNetworks) List(ctx context.Context, fl *filter.F) ([]*alpha.Network, error) {
  12982. klog.V(5).Infof("GCEAlphaNetworks.List(%v, %v) called", ctx, fl)
  12983. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Networks")
  12984. rk := &RateLimitKey{
  12985. ProjectID: projectID,
  12986. Operation: "List",
  12987. Version: meta.Version("alpha"),
  12988. Service: "Networks",
  12989. }
  12990. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  12991. return nil, err
  12992. }
  12993. klog.V(5).Infof("GCEAlphaNetworks.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  12994. call := g.s.Alpha.Networks.List(projectID)
  12995. if fl != filter.None {
  12996. call.Filter(fl.String())
  12997. }
  12998. var all []*alpha.Network
  12999. f := func(l *alpha.NetworkList) error {
  13000. klog.V(5).Infof("GCEAlphaNetworks.List(%v, ..., %v): page %+v", ctx, fl, l)
  13001. all = append(all, l.Items...)
  13002. return nil
  13003. }
  13004. if err := call.Pages(ctx, f); err != nil {
  13005. klog.V(4).Infof("GCEAlphaNetworks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  13006. return nil, err
  13007. }
  13008. if klog.V(4) {
  13009. klog.V(4).Infof("GCEAlphaNetworks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  13010. } else if klog.V(5) {
  13011. var asStr []string
  13012. for _, o := range all {
  13013. asStr = append(asStr, fmt.Sprintf("%+v", o))
  13014. }
  13015. klog.V(5).Infof("GCEAlphaNetworks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  13016. }
  13017. return all, nil
  13018. }
  13019. // Insert Network with key of value obj.
  13020. func (g *GCEAlphaNetworks) Insert(ctx context.Context, key *meta.Key, obj *alpha.Network) error {
  13021. klog.V(5).Infof("GCEAlphaNetworks.Insert(%v, %v, %+v): called", ctx, key, obj)
  13022. if !key.Valid() {
  13023. klog.V(2).Infof("GCEAlphaNetworks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  13024. return fmt.Errorf("invalid GCE key (%+v)", key)
  13025. }
  13026. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Networks")
  13027. rk := &RateLimitKey{
  13028. ProjectID: projectID,
  13029. Operation: "Insert",
  13030. Version: meta.Version("alpha"),
  13031. Service: "Networks",
  13032. }
  13033. klog.V(5).Infof("GCEAlphaNetworks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  13034. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  13035. klog.V(4).Infof("GCEAlphaNetworks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  13036. return err
  13037. }
  13038. obj.Name = key.Name
  13039. call := g.s.Alpha.Networks.Insert(projectID, obj)
  13040. call.Context(ctx)
  13041. op, err := call.Do()
  13042. if err != nil {
  13043. klog.V(4).Infof("GCEAlphaNetworks.Insert(%v, %v, ...) = %+v", ctx, key, err)
  13044. return err
  13045. }
  13046. err = g.s.WaitForCompletion(ctx, op)
  13047. klog.V(4).Infof("GCEAlphaNetworks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  13048. return err
  13049. }
  13050. // Delete the Network referenced by key.
  13051. func (g *GCEAlphaNetworks) Delete(ctx context.Context, key *meta.Key) error {
  13052. klog.V(5).Infof("GCEAlphaNetworks.Delete(%v, %v): called", ctx, key)
  13053. if !key.Valid() {
  13054. klog.V(2).Infof("GCEAlphaNetworks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  13055. return fmt.Errorf("invalid GCE key (%+v)", key)
  13056. }
  13057. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Networks")
  13058. rk := &RateLimitKey{
  13059. ProjectID: projectID,
  13060. Operation: "Delete",
  13061. Version: meta.Version("alpha"),
  13062. Service: "Networks",
  13063. }
  13064. klog.V(5).Infof("GCEAlphaNetworks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  13065. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  13066. klog.V(4).Infof("GCEAlphaNetworks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  13067. return err
  13068. }
  13069. call := g.s.Alpha.Networks.Delete(projectID, key.Name)
  13070. call.Context(ctx)
  13071. op, err := call.Do()
  13072. if err != nil {
  13073. klog.V(4).Infof("GCEAlphaNetworks.Delete(%v, %v) = %v", ctx, key, err)
  13074. return err
  13075. }
  13076. err = g.s.WaitForCompletion(ctx, op)
  13077. klog.V(4).Infof("GCEAlphaNetworks.Delete(%v, %v) = %v", ctx, key, err)
  13078. return err
  13079. }
  13080. // BetaNetworks is an interface that allows for mocking of Networks.
  13081. type BetaNetworks interface {
  13082. Get(ctx context.Context, key *meta.Key) (*beta.Network, error)
  13083. List(ctx context.Context, fl *filter.F) ([]*beta.Network, error)
  13084. Insert(ctx context.Context, key *meta.Key, obj *beta.Network) error
  13085. Delete(ctx context.Context, key *meta.Key) error
  13086. }
  13087. // NewMockBetaNetworks returns a new mock for Networks.
  13088. func NewMockBetaNetworks(pr ProjectRouter, objs map[meta.Key]*MockNetworksObj) *MockBetaNetworks {
  13089. mock := &MockBetaNetworks{
  13090. ProjectRouter: pr,
  13091. Objects: objs,
  13092. GetError: map[meta.Key]error{},
  13093. InsertError: map[meta.Key]error{},
  13094. DeleteError: map[meta.Key]error{},
  13095. }
  13096. return mock
  13097. }
  13098. // MockBetaNetworks is the mock for Networks.
  13099. type MockBetaNetworks struct {
  13100. Lock sync.Mutex
  13101. ProjectRouter ProjectRouter
  13102. // Objects maintained by the mock.
  13103. Objects map[meta.Key]*MockNetworksObj
  13104. // If an entry exists for the given key and operation, then the error
  13105. // will be returned instead of the operation.
  13106. GetError map[meta.Key]error
  13107. ListError *error
  13108. InsertError map[meta.Key]error
  13109. DeleteError map[meta.Key]error
  13110. // xxxHook allow you to intercept the standard processing of the mock in
  13111. // order to add your own logic. Return (true, _, _) to prevent the normal
  13112. // execution flow of the mock. Return (false, nil, nil) to continue with
  13113. // normal mock behavior/ after the hook function executes.
  13114. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaNetworks) (bool, *beta.Network, error)
  13115. ListHook func(ctx context.Context, fl *filter.F, m *MockBetaNetworks) (bool, []*beta.Network, error)
  13116. InsertHook func(ctx context.Context, key *meta.Key, obj *beta.Network, m *MockBetaNetworks) (bool, error)
  13117. DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaNetworks) (bool, error)
  13118. // X is extra state that can be used as part of the mock. Generated code
  13119. // will not use this field.
  13120. X interface{}
  13121. }
  13122. // Get returns the object from the mock.
  13123. func (m *MockBetaNetworks) Get(ctx context.Context, key *meta.Key) (*beta.Network, error) {
  13124. if m.GetHook != nil {
  13125. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  13126. klog.V(5).Infof("MockBetaNetworks.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  13127. return obj, err
  13128. }
  13129. }
  13130. if !key.Valid() {
  13131. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  13132. }
  13133. m.Lock.Lock()
  13134. defer m.Lock.Unlock()
  13135. if err, ok := m.GetError[*key]; ok {
  13136. klog.V(5).Infof("MockBetaNetworks.Get(%v, %s) = nil, %v", ctx, key, err)
  13137. return nil, err
  13138. }
  13139. if obj, ok := m.Objects[*key]; ok {
  13140. typedObj := obj.ToBeta()
  13141. klog.V(5).Infof("MockBetaNetworks.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  13142. return typedObj, nil
  13143. }
  13144. err := &googleapi.Error{
  13145. Code: http.StatusNotFound,
  13146. Message: fmt.Sprintf("MockBetaNetworks %v not found", key),
  13147. }
  13148. klog.V(5).Infof("MockBetaNetworks.Get(%v, %s) = nil, %v", ctx, key, err)
  13149. return nil, err
  13150. }
  13151. // List all of the objects in the mock.
  13152. func (m *MockBetaNetworks) List(ctx context.Context, fl *filter.F) ([]*beta.Network, error) {
  13153. if m.ListHook != nil {
  13154. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  13155. klog.V(5).Infof("MockBetaNetworks.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  13156. return objs, err
  13157. }
  13158. }
  13159. m.Lock.Lock()
  13160. defer m.Lock.Unlock()
  13161. if m.ListError != nil {
  13162. err := *m.ListError
  13163. klog.V(5).Infof("MockBetaNetworks.List(%v, %v) = nil, %v", ctx, fl, err)
  13164. return nil, *m.ListError
  13165. }
  13166. var objs []*beta.Network
  13167. for _, obj := range m.Objects {
  13168. if !fl.Match(obj.ToBeta()) {
  13169. continue
  13170. }
  13171. objs = append(objs, obj.ToBeta())
  13172. }
  13173. klog.V(5).Infof("MockBetaNetworks.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  13174. return objs, nil
  13175. }
  13176. // Insert is a mock for inserting/creating a new object.
  13177. func (m *MockBetaNetworks) Insert(ctx context.Context, key *meta.Key, obj *beta.Network) error {
  13178. if m.InsertHook != nil {
  13179. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  13180. klog.V(5).Infof("MockBetaNetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  13181. return err
  13182. }
  13183. }
  13184. if !key.Valid() {
  13185. return fmt.Errorf("invalid GCE key (%+v)", key)
  13186. }
  13187. m.Lock.Lock()
  13188. defer m.Lock.Unlock()
  13189. if err, ok := m.InsertError[*key]; ok {
  13190. klog.V(5).Infof("MockBetaNetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  13191. return err
  13192. }
  13193. if _, ok := m.Objects[*key]; ok {
  13194. err := &googleapi.Error{
  13195. Code: http.StatusConflict,
  13196. Message: fmt.Sprintf("MockBetaNetworks %v exists", key),
  13197. }
  13198. klog.V(5).Infof("MockBetaNetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  13199. return err
  13200. }
  13201. obj.Name = key.Name
  13202. projectID := m.ProjectRouter.ProjectID(ctx, "beta", "networks")
  13203. obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "networks", key)
  13204. m.Objects[*key] = &MockNetworksObj{obj}
  13205. klog.V(5).Infof("MockBetaNetworks.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  13206. return nil
  13207. }
  13208. // Delete is a mock for deleting the object.
  13209. func (m *MockBetaNetworks) Delete(ctx context.Context, key *meta.Key) error {
  13210. if m.DeleteHook != nil {
  13211. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  13212. klog.V(5).Infof("MockBetaNetworks.Delete(%v, %v) = %v", ctx, key, err)
  13213. return err
  13214. }
  13215. }
  13216. if !key.Valid() {
  13217. return fmt.Errorf("invalid GCE key (%+v)", key)
  13218. }
  13219. m.Lock.Lock()
  13220. defer m.Lock.Unlock()
  13221. if err, ok := m.DeleteError[*key]; ok {
  13222. klog.V(5).Infof("MockBetaNetworks.Delete(%v, %v) = %v", ctx, key, err)
  13223. return err
  13224. }
  13225. if _, ok := m.Objects[*key]; !ok {
  13226. err := &googleapi.Error{
  13227. Code: http.StatusNotFound,
  13228. Message: fmt.Sprintf("MockBetaNetworks %v not found", key),
  13229. }
  13230. klog.V(5).Infof("MockBetaNetworks.Delete(%v, %v) = %v", ctx, key, err)
  13231. return err
  13232. }
  13233. delete(m.Objects, *key)
  13234. klog.V(5).Infof("MockBetaNetworks.Delete(%v, %v) = nil", ctx, key)
  13235. return nil
  13236. }
  13237. // Obj wraps the object for use in the mock.
  13238. func (m *MockBetaNetworks) Obj(o *beta.Network) *MockNetworksObj {
  13239. return &MockNetworksObj{o}
  13240. }
  13241. // GCEBetaNetworks is a simplifying adapter for the GCE Networks.
  13242. type GCEBetaNetworks struct {
  13243. s *Service
  13244. }
  13245. // Get the Network named by key.
  13246. func (g *GCEBetaNetworks) Get(ctx context.Context, key *meta.Key) (*beta.Network, error) {
  13247. klog.V(5).Infof("GCEBetaNetworks.Get(%v, %v): called", ctx, key)
  13248. if !key.Valid() {
  13249. klog.V(2).Infof("GCEBetaNetworks.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  13250. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  13251. }
  13252. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Networks")
  13253. rk := &RateLimitKey{
  13254. ProjectID: projectID,
  13255. Operation: "Get",
  13256. Version: meta.Version("beta"),
  13257. Service: "Networks",
  13258. }
  13259. klog.V(5).Infof("GCEBetaNetworks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  13260. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  13261. klog.V(4).Infof("GCEBetaNetworks.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  13262. return nil, err
  13263. }
  13264. call := g.s.Beta.Networks.Get(projectID, key.Name)
  13265. call.Context(ctx)
  13266. v, err := call.Do()
  13267. klog.V(4).Infof("GCEBetaNetworks.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  13268. return v, err
  13269. }
  13270. // List all Network objects.
  13271. func (g *GCEBetaNetworks) List(ctx context.Context, fl *filter.F) ([]*beta.Network, error) {
  13272. klog.V(5).Infof("GCEBetaNetworks.List(%v, %v) called", ctx, fl)
  13273. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Networks")
  13274. rk := &RateLimitKey{
  13275. ProjectID: projectID,
  13276. Operation: "List",
  13277. Version: meta.Version("beta"),
  13278. Service: "Networks",
  13279. }
  13280. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  13281. return nil, err
  13282. }
  13283. klog.V(5).Infof("GCEBetaNetworks.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  13284. call := g.s.Beta.Networks.List(projectID)
  13285. if fl != filter.None {
  13286. call.Filter(fl.String())
  13287. }
  13288. var all []*beta.Network
  13289. f := func(l *beta.NetworkList) error {
  13290. klog.V(5).Infof("GCEBetaNetworks.List(%v, ..., %v): page %+v", ctx, fl, l)
  13291. all = append(all, l.Items...)
  13292. return nil
  13293. }
  13294. if err := call.Pages(ctx, f); err != nil {
  13295. klog.V(4).Infof("GCEBetaNetworks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  13296. return nil, err
  13297. }
  13298. if klog.V(4) {
  13299. klog.V(4).Infof("GCEBetaNetworks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  13300. } else if klog.V(5) {
  13301. var asStr []string
  13302. for _, o := range all {
  13303. asStr = append(asStr, fmt.Sprintf("%+v", o))
  13304. }
  13305. klog.V(5).Infof("GCEBetaNetworks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  13306. }
  13307. return all, nil
  13308. }
  13309. // Insert Network with key of value obj.
  13310. func (g *GCEBetaNetworks) Insert(ctx context.Context, key *meta.Key, obj *beta.Network) error {
  13311. klog.V(5).Infof("GCEBetaNetworks.Insert(%v, %v, %+v): called", ctx, key, obj)
  13312. if !key.Valid() {
  13313. klog.V(2).Infof("GCEBetaNetworks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  13314. return fmt.Errorf("invalid GCE key (%+v)", key)
  13315. }
  13316. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Networks")
  13317. rk := &RateLimitKey{
  13318. ProjectID: projectID,
  13319. Operation: "Insert",
  13320. Version: meta.Version("beta"),
  13321. Service: "Networks",
  13322. }
  13323. klog.V(5).Infof("GCEBetaNetworks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  13324. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  13325. klog.V(4).Infof("GCEBetaNetworks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  13326. return err
  13327. }
  13328. obj.Name = key.Name
  13329. call := g.s.Beta.Networks.Insert(projectID, obj)
  13330. call.Context(ctx)
  13331. op, err := call.Do()
  13332. if err != nil {
  13333. klog.V(4).Infof("GCEBetaNetworks.Insert(%v, %v, ...) = %+v", ctx, key, err)
  13334. return err
  13335. }
  13336. err = g.s.WaitForCompletion(ctx, op)
  13337. klog.V(4).Infof("GCEBetaNetworks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  13338. return err
  13339. }
  13340. // Delete the Network referenced by key.
  13341. func (g *GCEBetaNetworks) Delete(ctx context.Context, key *meta.Key) error {
  13342. klog.V(5).Infof("GCEBetaNetworks.Delete(%v, %v): called", ctx, key)
  13343. if !key.Valid() {
  13344. klog.V(2).Infof("GCEBetaNetworks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  13345. return fmt.Errorf("invalid GCE key (%+v)", key)
  13346. }
  13347. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Networks")
  13348. rk := &RateLimitKey{
  13349. ProjectID: projectID,
  13350. Operation: "Delete",
  13351. Version: meta.Version("beta"),
  13352. Service: "Networks",
  13353. }
  13354. klog.V(5).Infof("GCEBetaNetworks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  13355. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  13356. klog.V(4).Infof("GCEBetaNetworks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  13357. return err
  13358. }
  13359. call := g.s.Beta.Networks.Delete(projectID, key.Name)
  13360. call.Context(ctx)
  13361. op, err := call.Do()
  13362. if err != nil {
  13363. klog.V(4).Infof("GCEBetaNetworks.Delete(%v, %v) = %v", ctx, key, err)
  13364. return err
  13365. }
  13366. err = g.s.WaitForCompletion(ctx, op)
  13367. klog.V(4).Infof("GCEBetaNetworks.Delete(%v, %v) = %v", ctx, key, err)
  13368. return err
  13369. }
  13370. // Networks is an interface that allows for mocking of Networks.
  13371. type Networks interface {
  13372. Get(ctx context.Context, key *meta.Key) (*ga.Network, error)
  13373. List(ctx context.Context, fl *filter.F) ([]*ga.Network, error)
  13374. Insert(ctx context.Context, key *meta.Key, obj *ga.Network) error
  13375. Delete(ctx context.Context, key *meta.Key) error
  13376. }
  13377. // NewMockNetworks returns a new mock for Networks.
  13378. func NewMockNetworks(pr ProjectRouter, objs map[meta.Key]*MockNetworksObj) *MockNetworks {
  13379. mock := &MockNetworks{
  13380. ProjectRouter: pr,
  13381. Objects: objs,
  13382. GetError: map[meta.Key]error{},
  13383. InsertError: map[meta.Key]error{},
  13384. DeleteError: map[meta.Key]error{},
  13385. }
  13386. return mock
  13387. }
  13388. // MockNetworks is the mock for Networks.
  13389. type MockNetworks struct {
  13390. Lock sync.Mutex
  13391. ProjectRouter ProjectRouter
  13392. // Objects maintained by the mock.
  13393. Objects map[meta.Key]*MockNetworksObj
  13394. // If an entry exists for the given key and operation, then the error
  13395. // will be returned instead of the operation.
  13396. GetError map[meta.Key]error
  13397. ListError *error
  13398. InsertError map[meta.Key]error
  13399. DeleteError map[meta.Key]error
  13400. // xxxHook allow you to intercept the standard processing of the mock in
  13401. // order to add your own logic. Return (true, _, _) to prevent the normal
  13402. // execution flow of the mock. Return (false, nil, nil) to continue with
  13403. // normal mock behavior/ after the hook function executes.
  13404. GetHook func(ctx context.Context, key *meta.Key, m *MockNetworks) (bool, *ga.Network, error)
  13405. ListHook func(ctx context.Context, fl *filter.F, m *MockNetworks) (bool, []*ga.Network, error)
  13406. InsertHook func(ctx context.Context, key *meta.Key, obj *ga.Network, m *MockNetworks) (bool, error)
  13407. DeleteHook func(ctx context.Context, key *meta.Key, m *MockNetworks) (bool, error)
  13408. // X is extra state that can be used as part of the mock. Generated code
  13409. // will not use this field.
  13410. X interface{}
  13411. }
  13412. // Get returns the object from the mock.
  13413. func (m *MockNetworks) Get(ctx context.Context, key *meta.Key) (*ga.Network, error) {
  13414. if m.GetHook != nil {
  13415. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  13416. klog.V(5).Infof("MockNetworks.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  13417. return obj, err
  13418. }
  13419. }
  13420. if !key.Valid() {
  13421. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  13422. }
  13423. m.Lock.Lock()
  13424. defer m.Lock.Unlock()
  13425. if err, ok := m.GetError[*key]; ok {
  13426. klog.V(5).Infof("MockNetworks.Get(%v, %s) = nil, %v", ctx, key, err)
  13427. return nil, err
  13428. }
  13429. if obj, ok := m.Objects[*key]; ok {
  13430. typedObj := obj.ToGA()
  13431. klog.V(5).Infof("MockNetworks.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  13432. return typedObj, nil
  13433. }
  13434. err := &googleapi.Error{
  13435. Code: http.StatusNotFound,
  13436. Message: fmt.Sprintf("MockNetworks %v not found", key),
  13437. }
  13438. klog.V(5).Infof("MockNetworks.Get(%v, %s) = nil, %v", ctx, key, err)
  13439. return nil, err
  13440. }
  13441. // List all of the objects in the mock.
  13442. func (m *MockNetworks) List(ctx context.Context, fl *filter.F) ([]*ga.Network, error) {
  13443. if m.ListHook != nil {
  13444. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  13445. klog.V(5).Infof("MockNetworks.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  13446. return objs, err
  13447. }
  13448. }
  13449. m.Lock.Lock()
  13450. defer m.Lock.Unlock()
  13451. if m.ListError != nil {
  13452. err := *m.ListError
  13453. klog.V(5).Infof("MockNetworks.List(%v, %v) = nil, %v", ctx, fl, err)
  13454. return nil, *m.ListError
  13455. }
  13456. var objs []*ga.Network
  13457. for _, obj := range m.Objects {
  13458. if !fl.Match(obj.ToGA()) {
  13459. continue
  13460. }
  13461. objs = append(objs, obj.ToGA())
  13462. }
  13463. klog.V(5).Infof("MockNetworks.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  13464. return objs, nil
  13465. }
  13466. // Insert is a mock for inserting/creating a new object.
  13467. func (m *MockNetworks) Insert(ctx context.Context, key *meta.Key, obj *ga.Network) error {
  13468. if m.InsertHook != nil {
  13469. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  13470. klog.V(5).Infof("MockNetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  13471. return err
  13472. }
  13473. }
  13474. if !key.Valid() {
  13475. return fmt.Errorf("invalid GCE key (%+v)", key)
  13476. }
  13477. m.Lock.Lock()
  13478. defer m.Lock.Unlock()
  13479. if err, ok := m.InsertError[*key]; ok {
  13480. klog.V(5).Infof("MockNetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  13481. return err
  13482. }
  13483. if _, ok := m.Objects[*key]; ok {
  13484. err := &googleapi.Error{
  13485. Code: http.StatusConflict,
  13486. Message: fmt.Sprintf("MockNetworks %v exists", key),
  13487. }
  13488. klog.V(5).Infof("MockNetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  13489. return err
  13490. }
  13491. obj.Name = key.Name
  13492. projectID := m.ProjectRouter.ProjectID(ctx, "ga", "networks")
  13493. obj.SelfLink = SelfLink(meta.VersionGA, projectID, "networks", key)
  13494. m.Objects[*key] = &MockNetworksObj{obj}
  13495. klog.V(5).Infof("MockNetworks.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  13496. return nil
  13497. }
  13498. // Delete is a mock for deleting the object.
  13499. func (m *MockNetworks) Delete(ctx context.Context, key *meta.Key) error {
  13500. if m.DeleteHook != nil {
  13501. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  13502. klog.V(5).Infof("MockNetworks.Delete(%v, %v) = %v", ctx, key, err)
  13503. return err
  13504. }
  13505. }
  13506. if !key.Valid() {
  13507. return fmt.Errorf("invalid GCE key (%+v)", key)
  13508. }
  13509. m.Lock.Lock()
  13510. defer m.Lock.Unlock()
  13511. if err, ok := m.DeleteError[*key]; ok {
  13512. klog.V(5).Infof("MockNetworks.Delete(%v, %v) = %v", ctx, key, err)
  13513. return err
  13514. }
  13515. if _, ok := m.Objects[*key]; !ok {
  13516. err := &googleapi.Error{
  13517. Code: http.StatusNotFound,
  13518. Message: fmt.Sprintf("MockNetworks %v not found", key),
  13519. }
  13520. klog.V(5).Infof("MockNetworks.Delete(%v, %v) = %v", ctx, key, err)
  13521. return err
  13522. }
  13523. delete(m.Objects, *key)
  13524. klog.V(5).Infof("MockNetworks.Delete(%v, %v) = nil", ctx, key)
  13525. return nil
  13526. }
  13527. // Obj wraps the object for use in the mock.
  13528. func (m *MockNetworks) Obj(o *ga.Network) *MockNetworksObj {
  13529. return &MockNetworksObj{o}
  13530. }
  13531. // GCENetworks is a simplifying adapter for the GCE Networks.
  13532. type GCENetworks struct {
  13533. s *Service
  13534. }
  13535. // Get the Network named by key.
  13536. func (g *GCENetworks) Get(ctx context.Context, key *meta.Key) (*ga.Network, error) {
  13537. klog.V(5).Infof("GCENetworks.Get(%v, %v): called", ctx, key)
  13538. if !key.Valid() {
  13539. klog.V(2).Infof("GCENetworks.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  13540. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  13541. }
  13542. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Networks")
  13543. rk := &RateLimitKey{
  13544. ProjectID: projectID,
  13545. Operation: "Get",
  13546. Version: meta.Version("ga"),
  13547. Service: "Networks",
  13548. }
  13549. klog.V(5).Infof("GCENetworks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  13550. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  13551. klog.V(4).Infof("GCENetworks.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  13552. return nil, err
  13553. }
  13554. call := g.s.GA.Networks.Get(projectID, key.Name)
  13555. call.Context(ctx)
  13556. v, err := call.Do()
  13557. klog.V(4).Infof("GCENetworks.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  13558. return v, err
  13559. }
  13560. // List all Network objects.
  13561. func (g *GCENetworks) List(ctx context.Context, fl *filter.F) ([]*ga.Network, error) {
  13562. klog.V(5).Infof("GCENetworks.List(%v, %v) called", ctx, fl)
  13563. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Networks")
  13564. rk := &RateLimitKey{
  13565. ProjectID: projectID,
  13566. Operation: "List",
  13567. Version: meta.Version("ga"),
  13568. Service: "Networks",
  13569. }
  13570. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  13571. return nil, err
  13572. }
  13573. klog.V(5).Infof("GCENetworks.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  13574. call := g.s.GA.Networks.List(projectID)
  13575. if fl != filter.None {
  13576. call.Filter(fl.String())
  13577. }
  13578. var all []*ga.Network
  13579. f := func(l *ga.NetworkList) error {
  13580. klog.V(5).Infof("GCENetworks.List(%v, ..., %v): page %+v", ctx, fl, l)
  13581. all = append(all, l.Items...)
  13582. return nil
  13583. }
  13584. if err := call.Pages(ctx, f); err != nil {
  13585. klog.V(4).Infof("GCENetworks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  13586. return nil, err
  13587. }
  13588. if klog.V(4) {
  13589. klog.V(4).Infof("GCENetworks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  13590. } else if klog.V(5) {
  13591. var asStr []string
  13592. for _, o := range all {
  13593. asStr = append(asStr, fmt.Sprintf("%+v", o))
  13594. }
  13595. klog.V(5).Infof("GCENetworks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  13596. }
  13597. return all, nil
  13598. }
  13599. // Insert Network with key of value obj.
  13600. func (g *GCENetworks) Insert(ctx context.Context, key *meta.Key, obj *ga.Network) error {
  13601. klog.V(5).Infof("GCENetworks.Insert(%v, %v, %+v): called", ctx, key, obj)
  13602. if !key.Valid() {
  13603. klog.V(2).Infof("GCENetworks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  13604. return fmt.Errorf("invalid GCE key (%+v)", key)
  13605. }
  13606. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Networks")
  13607. rk := &RateLimitKey{
  13608. ProjectID: projectID,
  13609. Operation: "Insert",
  13610. Version: meta.Version("ga"),
  13611. Service: "Networks",
  13612. }
  13613. klog.V(5).Infof("GCENetworks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  13614. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  13615. klog.V(4).Infof("GCENetworks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  13616. return err
  13617. }
  13618. obj.Name = key.Name
  13619. call := g.s.GA.Networks.Insert(projectID, obj)
  13620. call.Context(ctx)
  13621. op, err := call.Do()
  13622. if err != nil {
  13623. klog.V(4).Infof("GCENetworks.Insert(%v, %v, ...) = %+v", ctx, key, err)
  13624. return err
  13625. }
  13626. err = g.s.WaitForCompletion(ctx, op)
  13627. klog.V(4).Infof("GCENetworks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  13628. return err
  13629. }
  13630. // Delete the Network referenced by key.
  13631. func (g *GCENetworks) Delete(ctx context.Context, key *meta.Key) error {
  13632. klog.V(5).Infof("GCENetworks.Delete(%v, %v): called", ctx, key)
  13633. if !key.Valid() {
  13634. klog.V(2).Infof("GCENetworks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  13635. return fmt.Errorf("invalid GCE key (%+v)", key)
  13636. }
  13637. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Networks")
  13638. rk := &RateLimitKey{
  13639. ProjectID: projectID,
  13640. Operation: "Delete",
  13641. Version: meta.Version("ga"),
  13642. Service: "Networks",
  13643. }
  13644. klog.V(5).Infof("GCENetworks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  13645. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  13646. klog.V(4).Infof("GCENetworks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  13647. return err
  13648. }
  13649. call := g.s.GA.Networks.Delete(projectID, key.Name)
  13650. call.Context(ctx)
  13651. op, err := call.Do()
  13652. if err != nil {
  13653. klog.V(4).Infof("GCENetworks.Delete(%v, %v) = %v", ctx, key, err)
  13654. return err
  13655. }
  13656. err = g.s.WaitForCompletion(ctx, op)
  13657. klog.V(4).Infof("GCENetworks.Delete(%v, %v) = %v", ctx, key, err)
  13658. return err
  13659. }
  13660. // AlphaNetworkEndpointGroups is an interface that allows for mocking of NetworkEndpointGroups.
  13661. type AlphaNetworkEndpointGroups interface {
  13662. Get(ctx context.Context, key *meta.Key) (*alpha.NetworkEndpointGroup, error)
  13663. List(ctx context.Context, zone string, fl *filter.F) ([]*alpha.NetworkEndpointGroup, error)
  13664. Insert(ctx context.Context, key *meta.Key, obj *alpha.NetworkEndpointGroup) error
  13665. Delete(ctx context.Context, key *meta.Key) error
  13666. AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*alpha.NetworkEndpointGroup, error)
  13667. AttachNetworkEndpoints(context.Context, *meta.Key, *alpha.NetworkEndpointGroupsAttachEndpointsRequest) error
  13668. DetachNetworkEndpoints(context.Context, *meta.Key, *alpha.NetworkEndpointGroupsDetachEndpointsRequest) error
  13669. ListNetworkEndpoints(context.Context, *meta.Key, *alpha.NetworkEndpointGroupsListEndpointsRequest, *filter.F) ([]*alpha.NetworkEndpointWithHealthStatus, error)
  13670. }
  13671. // NewMockAlphaNetworkEndpointGroups returns a new mock for NetworkEndpointGroups.
  13672. func NewMockAlphaNetworkEndpointGroups(pr ProjectRouter, objs map[meta.Key]*MockNetworkEndpointGroupsObj) *MockAlphaNetworkEndpointGroups {
  13673. mock := &MockAlphaNetworkEndpointGroups{
  13674. ProjectRouter: pr,
  13675. Objects: objs,
  13676. GetError: map[meta.Key]error{},
  13677. InsertError: map[meta.Key]error{},
  13678. DeleteError: map[meta.Key]error{},
  13679. }
  13680. return mock
  13681. }
  13682. // MockAlphaNetworkEndpointGroups is the mock for NetworkEndpointGroups.
  13683. type MockAlphaNetworkEndpointGroups struct {
  13684. Lock sync.Mutex
  13685. ProjectRouter ProjectRouter
  13686. // Objects maintained by the mock.
  13687. Objects map[meta.Key]*MockNetworkEndpointGroupsObj
  13688. // If an entry exists for the given key and operation, then the error
  13689. // will be returned instead of the operation.
  13690. GetError map[meta.Key]error
  13691. ListError *error
  13692. InsertError map[meta.Key]error
  13693. DeleteError map[meta.Key]error
  13694. AggregatedListError *error
  13695. // xxxHook allow you to intercept the standard processing of the mock in
  13696. // order to add your own logic. Return (true, _, _) to prevent the normal
  13697. // execution flow of the mock. Return (false, nil, nil) to continue with
  13698. // normal mock behavior/ after the hook function executes.
  13699. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaNetworkEndpointGroups) (bool, *alpha.NetworkEndpointGroup, error)
  13700. ListHook func(ctx context.Context, zone string, fl *filter.F, m *MockAlphaNetworkEndpointGroups) (bool, []*alpha.NetworkEndpointGroup, error)
  13701. InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.NetworkEndpointGroup, m *MockAlphaNetworkEndpointGroups) (bool, error)
  13702. DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaNetworkEndpointGroups) (bool, error)
  13703. AggregatedListHook func(ctx context.Context, fl *filter.F, m *MockAlphaNetworkEndpointGroups) (bool, map[string][]*alpha.NetworkEndpointGroup, error)
  13704. AttachNetworkEndpointsHook func(context.Context, *meta.Key, *alpha.NetworkEndpointGroupsAttachEndpointsRequest, *MockAlphaNetworkEndpointGroups) error
  13705. DetachNetworkEndpointsHook func(context.Context, *meta.Key, *alpha.NetworkEndpointGroupsDetachEndpointsRequest, *MockAlphaNetworkEndpointGroups) error
  13706. ListNetworkEndpointsHook func(context.Context, *meta.Key, *alpha.NetworkEndpointGroupsListEndpointsRequest, *filter.F, *MockAlphaNetworkEndpointGroups) ([]*alpha.NetworkEndpointWithHealthStatus, error)
  13707. // X is extra state that can be used as part of the mock. Generated code
  13708. // will not use this field.
  13709. X interface{}
  13710. }
  13711. // Get returns the object from the mock.
  13712. func (m *MockAlphaNetworkEndpointGroups) Get(ctx context.Context, key *meta.Key) (*alpha.NetworkEndpointGroup, error) {
  13713. if m.GetHook != nil {
  13714. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  13715. klog.V(5).Infof("MockAlphaNetworkEndpointGroups.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  13716. return obj, err
  13717. }
  13718. }
  13719. if !key.Valid() {
  13720. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  13721. }
  13722. m.Lock.Lock()
  13723. defer m.Lock.Unlock()
  13724. if err, ok := m.GetError[*key]; ok {
  13725. klog.V(5).Infof("MockAlphaNetworkEndpointGroups.Get(%v, %s) = nil, %v", ctx, key, err)
  13726. return nil, err
  13727. }
  13728. if obj, ok := m.Objects[*key]; ok {
  13729. typedObj := obj.ToAlpha()
  13730. klog.V(5).Infof("MockAlphaNetworkEndpointGroups.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  13731. return typedObj, nil
  13732. }
  13733. err := &googleapi.Error{
  13734. Code: http.StatusNotFound,
  13735. Message: fmt.Sprintf("MockAlphaNetworkEndpointGroups %v not found", key),
  13736. }
  13737. klog.V(5).Infof("MockAlphaNetworkEndpointGroups.Get(%v, %s) = nil, %v", ctx, key, err)
  13738. return nil, err
  13739. }
  13740. // List all of the objects in the mock in the given zone.
  13741. func (m *MockAlphaNetworkEndpointGroups) List(ctx context.Context, zone string, fl *filter.F) ([]*alpha.NetworkEndpointGroup, error) {
  13742. if m.ListHook != nil {
  13743. if intercept, objs, err := m.ListHook(ctx, zone, fl, m); intercept {
  13744. klog.V(5).Infof("MockAlphaNetworkEndpointGroups.List(%v, %q, %v) = [%v items], %v", ctx, zone, fl, len(objs), err)
  13745. return objs, err
  13746. }
  13747. }
  13748. m.Lock.Lock()
  13749. defer m.Lock.Unlock()
  13750. if m.ListError != nil {
  13751. err := *m.ListError
  13752. klog.V(5).Infof("MockAlphaNetworkEndpointGroups.List(%v, %q, %v) = nil, %v", ctx, zone, fl, err)
  13753. return nil, *m.ListError
  13754. }
  13755. var objs []*alpha.NetworkEndpointGroup
  13756. for key, obj := range m.Objects {
  13757. if key.Zone != zone {
  13758. continue
  13759. }
  13760. if !fl.Match(obj.ToAlpha()) {
  13761. continue
  13762. }
  13763. objs = append(objs, obj.ToAlpha())
  13764. }
  13765. klog.V(5).Infof("MockAlphaNetworkEndpointGroups.List(%v, %q, %v) = [%v items], nil", ctx, zone, fl, len(objs))
  13766. return objs, nil
  13767. }
  13768. // Insert is a mock for inserting/creating a new object.
  13769. func (m *MockAlphaNetworkEndpointGroups) Insert(ctx context.Context, key *meta.Key, obj *alpha.NetworkEndpointGroup) error {
  13770. if m.InsertHook != nil {
  13771. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  13772. klog.V(5).Infof("MockAlphaNetworkEndpointGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  13773. return err
  13774. }
  13775. }
  13776. if !key.Valid() {
  13777. return fmt.Errorf("invalid GCE key (%+v)", key)
  13778. }
  13779. m.Lock.Lock()
  13780. defer m.Lock.Unlock()
  13781. if err, ok := m.InsertError[*key]; ok {
  13782. klog.V(5).Infof("MockAlphaNetworkEndpointGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  13783. return err
  13784. }
  13785. if _, ok := m.Objects[*key]; ok {
  13786. err := &googleapi.Error{
  13787. Code: http.StatusConflict,
  13788. Message: fmt.Sprintf("MockAlphaNetworkEndpointGroups %v exists", key),
  13789. }
  13790. klog.V(5).Infof("MockAlphaNetworkEndpointGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  13791. return err
  13792. }
  13793. obj.Name = key.Name
  13794. projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "networkEndpointGroups")
  13795. obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "networkEndpointGroups", key)
  13796. m.Objects[*key] = &MockNetworkEndpointGroupsObj{obj}
  13797. klog.V(5).Infof("MockAlphaNetworkEndpointGroups.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  13798. return nil
  13799. }
  13800. // Delete is a mock for deleting the object.
  13801. func (m *MockAlphaNetworkEndpointGroups) Delete(ctx context.Context, key *meta.Key) error {
  13802. if m.DeleteHook != nil {
  13803. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  13804. klog.V(5).Infof("MockAlphaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err)
  13805. return err
  13806. }
  13807. }
  13808. if !key.Valid() {
  13809. return fmt.Errorf("invalid GCE key (%+v)", key)
  13810. }
  13811. m.Lock.Lock()
  13812. defer m.Lock.Unlock()
  13813. if err, ok := m.DeleteError[*key]; ok {
  13814. klog.V(5).Infof("MockAlphaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err)
  13815. return err
  13816. }
  13817. if _, ok := m.Objects[*key]; !ok {
  13818. err := &googleapi.Error{
  13819. Code: http.StatusNotFound,
  13820. Message: fmt.Sprintf("MockAlphaNetworkEndpointGroups %v not found", key),
  13821. }
  13822. klog.V(5).Infof("MockAlphaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err)
  13823. return err
  13824. }
  13825. delete(m.Objects, *key)
  13826. klog.V(5).Infof("MockAlphaNetworkEndpointGroups.Delete(%v, %v) = nil", ctx, key)
  13827. return nil
  13828. }
  13829. // AggregatedList is a mock for AggregatedList.
  13830. func (m *MockAlphaNetworkEndpointGroups) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*alpha.NetworkEndpointGroup, error) {
  13831. if m.AggregatedListHook != nil {
  13832. if intercept, objs, err := m.AggregatedListHook(ctx, fl, m); intercept {
  13833. klog.V(5).Infof("MockAlphaNetworkEndpointGroups.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  13834. return objs, err
  13835. }
  13836. }
  13837. m.Lock.Lock()
  13838. defer m.Lock.Unlock()
  13839. if m.AggregatedListError != nil {
  13840. err := *m.AggregatedListError
  13841. klog.V(5).Infof("MockAlphaNetworkEndpointGroups.AggregatedList(%v, %v) = nil, %v", ctx, fl, err)
  13842. return nil, err
  13843. }
  13844. objs := map[string][]*alpha.NetworkEndpointGroup{}
  13845. for _, obj := range m.Objects {
  13846. res, err := ParseResourceURL(obj.ToAlpha().SelfLink)
  13847. location := res.Key.Zone
  13848. if err != nil {
  13849. klog.V(5).Infof("MockAlphaNetworkEndpointGroups.AggregatedList(%v, %v) = nil, %v", ctx, fl, err)
  13850. return nil, err
  13851. }
  13852. if !fl.Match(obj.ToAlpha()) {
  13853. continue
  13854. }
  13855. objs[location] = append(objs[location], obj.ToAlpha())
  13856. }
  13857. klog.V(5).Infof("MockAlphaNetworkEndpointGroups.AggregatedList(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  13858. return objs, nil
  13859. }
  13860. // Obj wraps the object for use in the mock.
  13861. func (m *MockAlphaNetworkEndpointGroups) Obj(o *alpha.NetworkEndpointGroup) *MockNetworkEndpointGroupsObj {
  13862. return &MockNetworkEndpointGroupsObj{o}
  13863. }
  13864. // AttachNetworkEndpoints is a mock for the corresponding method.
  13865. func (m *MockAlphaNetworkEndpointGroups) AttachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *alpha.NetworkEndpointGroupsAttachEndpointsRequest) error {
  13866. if m.AttachNetworkEndpointsHook != nil {
  13867. return m.AttachNetworkEndpointsHook(ctx, key, arg0, m)
  13868. }
  13869. return nil
  13870. }
  13871. // DetachNetworkEndpoints is a mock for the corresponding method.
  13872. func (m *MockAlphaNetworkEndpointGroups) DetachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *alpha.NetworkEndpointGroupsDetachEndpointsRequest) error {
  13873. if m.DetachNetworkEndpointsHook != nil {
  13874. return m.DetachNetworkEndpointsHook(ctx, key, arg0, m)
  13875. }
  13876. return nil
  13877. }
  13878. // ListNetworkEndpoints is a mock for the corresponding method.
  13879. func (m *MockAlphaNetworkEndpointGroups) ListNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *alpha.NetworkEndpointGroupsListEndpointsRequest, fl *filter.F) ([]*alpha.NetworkEndpointWithHealthStatus, error) {
  13880. if m.ListNetworkEndpointsHook != nil {
  13881. return m.ListNetworkEndpointsHook(ctx, key, arg0, fl, m)
  13882. }
  13883. return nil, nil
  13884. }
  13885. // GCEAlphaNetworkEndpointGroups is a simplifying adapter for the GCE NetworkEndpointGroups.
  13886. type GCEAlphaNetworkEndpointGroups struct {
  13887. s *Service
  13888. }
  13889. // Get the NetworkEndpointGroup named by key.
  13890. func (g *GCEAlphaNetworkEndpointGroups) Get(ctx context.Context, key *meta.Key) (*alpha.NetworkEndpointGroup, error) {
  13891. klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.Get(%v, %v): called", ctx, key)
  13892. if !key.Valid() {
  13893. klog.V(2).Infof("GCEAlphaNetworkEndpointGroups.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  13894. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  13895. }
  13896. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "NetworkEndpointGroups")
  13897. rk := &RateLimitKey{
  13898. ProjectID: projectID,
  13899. Operation: "Get",
  13900. Version: meta.Version("alpha"),
  13901. Service: "NetworkEndpointGroups",
  13902. }
  13903. klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  13904. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  13905. klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  13906. return nil, err
  13907. }
  13908. call := g.s.Alpha.NetworkEndpointGroups.Get(projectID, key.Zone, key.Name)
  13909. call.Context(ctx)
  13910. v, err := call.Do()
  13911. klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  13912. return v, err
  13913. }
  13914. // List all NetworkEndpointGroup objects.
  13915. func (g *GCEAlphaNetworkEndpointGroups) List(ctx context.Context, zone string, fl *filter.F) ([]*alpha.NetworkEndpointGroup, error) {
  13916. klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.List(%v, %v, %v) called", ctx, zone, fl)
  13917. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "NetworkEndpointGroups")
  13918. rk := &RateLimitKey{
  13919. ProjectID: projectID,
  13920. Operation: "List",
  13921. Version: meta.Version("alpha"),
  13922. Service: "NetworkEndpointGroups",
  13923. }
  13924. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  13925. return nil, err
  13926. }
  13927. klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, zone, fl, projectID, rk)
  13928. call := g.s.Alpha.NetworkEndpointGroups.List(projectID, zone)
  13929. if fl != filter.None {
  13930. call.Filter(fl.String())
  13931. }
  13932. var all []*alpha.NetworkEndpointGroup
  13933. f := func(l *alpha.NetworkEndpointGroupList) error {
  13934. klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.List(%v, ..., %v): page %+v", ctx, fl, l)
  13935. all = append(all, l.Items...)
  13936. return nil
  13937. }
  13938. if err := call.Pages(ctx, f); err != nil {
  13939. klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  13940. return nil, err
  13941. }
  13942. if klog.V(4) {
  13943. klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  13944. } else if klog.V(5) {
  13945. var asStr []string
  13946. for _, o := range all {
  13947. asStr = append(asStr, fmt.Sprintf("%+v", o))
  13948. }
  13949. klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  13950. }
  13951. return all, nil
  13952. }
  13953. // Insert NetworkEndpointGroup with key of value obj.
  13954. func (g *GCEAlphaNetworkEndpointGroups) Insert(ctx context.Context, key *meta.Key, obj *alpha.NetworkEndpointGroup) error {
  13955. klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.Insert(%v, %v, %+v): called", ctx, key, obj)
  13956. if !key.Valid() {
  13957. klog.V(2).Infof("GCEAlphaNetworkEndpointGroups.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  13958. return fmt.Errorf("invalid GCE key (%+v)", key)
  13959. }
  13960. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "NetworkEndpointGroups")
  13961. rk := &RateLimitKey{
  13962. ProjectID: projectID,
  13963. Operation: "Insert",
  13964. Version: meta.Version("alpha"),
  13965. Service: "NetworkEndpointGroups",
  13966. }
  13967. klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  13968. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  13969. klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  13970. return err
  13971. }
  13972. obj.Name = key.Name
  13973. call := g.s.Alpha.NetworkEndpointGroups.Insert(projectID, key.Zone, obj)
  13974. call.Context(ctx)
  13975. op, err := call.Do()
  13976. if err != nil {
  13977. klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.Insert(%v, %v, ...) = %+v", ctx, key, err)
  13978. return err
  13979. }
  13980. err = g.s.WaitForCompletion(ctx, op)
  13981. klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  13982. return err
  13983. }
  13984. // Delete the NetworkEndpointGroup referenced by key.
  13985. func (g *GCEAlphaNetworkEndpointGroups) Delete(ctx context.Context, key *meta.Key) error {
  13986. klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.Delete(%v, %v): called", ctx, key)
  13987. if !key.Valid() {
  13988. klog.V(2).Infof("GCEAlphaNetworkEndpointGroups.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  13989. return fmt.Errorf("invalid GCE key (%+v)", key)
  13990. }
  13991. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "NetworkEndpointGroups")
  13992. rk := &RateLimitKey{
  13993. ProjectID: projectID,
  13994. Operation: "Delete",
  13995. Version: meta.Version("alpha"),
  13996. Service: "NetworkEndpointGroups",
  13997. }
  13998. klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  13999. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  14000. klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  14001. return err
  14002. }
  14003. call := g.s.Alpha.NetworkEndpointGroups.Delete(projectID, key.Zone, key.Name)
  14004. call.Context(ctx)
  14005. op, err := call.Do()
  14006. if err != nil {
  14007. klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err)
  14008. return err
  14009. }
  14010. err = g.s.WaitForCompletion(ctx, op)
  14011. klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err)
  14012. return err
  14013. }
  14014. // AggregatedList lists all resources of the given type across all locations.
  14015. func (g *GCEAlphaNetworkEndpointGroups) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*alpha.NetworkEndpointGroup, error) {
  14016. klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.AggregatedList(%v, %v) called", ctx, fl)
  14017. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "NetworkEndpointGroups")
  14018. rk := &RateLimitKey{
  14019. ProjectID: projectID,
  14020. Operation: "AggregatedList",
  14021. Version: meta.Version("alpha"),
  14022. Service: "NetworkEndpointGroups",
  14023. }
  14024. klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.AggregatedList(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  14025. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  14026. klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.AggregatedList(%v, %v): RateLimiter error: %v", ctx, fl, err)
  14027. return nil, err
  14028. }
  14029. call := g.s.Alpha.NetworkEndpointGroups.AggregatedList(projectID)
  14030. call.Context(ctx)
  14031. if fl != filter.None {
  14032. call.Filter(fl.String())
  14033. }
  14034. all := map[string][]*alpha.NetworkEndpointGroup{}
  14035. f := func(l *alpha.NetworkEndpointGroupAggregatedList) error {
  14036. for k, v := range l.Items {
  14037. klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.AggregatedList(%v, %v): page[%v]%+v", ctx, fl, k, v)
  14038. all[k] = append(all[k], v.NetworkEndpointGroups...)
  14039. }
  14040. return nil
  14041. }
  14042. if err := call.Pages(ctx, f); err != nil {
  14043. klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.AggregatedList(%v, %v) = %v, %v", ctx, fl, nil, err)
  14044. return nil, err
  14045. }
  14046. if klog.V(4) {
  14047. klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(all), nil)
  14048. } else if klog.V(5) {
  14049. var asStr []string
  14050. for _, o := range all {
  14051. asStr = append(asStr, fmt.Sprintf("%+v", o))
  14052. }
  14053. klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.AggregatedList(%v, %v) = %v, %v", ctx, fl, asStr, nil)
  14054. }
  14055. return all, nil
  14056. }
  14057. // AttachNetworkEndpoints is a method on GCEAlphaNetworkEndpointGroups.
  14058. func (g *GCEAlphaNetworkEndpointGroups) AttachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *alpha.NetworkEndpointGroupsAttachEndpointsRequest) error {
  14059. klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): called", ctx, key)
  14060. if !key.Valid() {
  14061. klog.V(2).Infof("GCEAlphaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  14062. return fmt.Errorf("invalid GCE key (%+v)", key)
  14063. }
  14064. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "NetworkEndpointGroups")
  14065. rk := &RateLimitKey{
  14066. ProjectID: projectID,
  14067. Operation: "AttachNetworkEndpoints",
  14068. Version: meta.Version("alpha"),
  14069. Service: "NetworkEndpointGroups",
  14070. }
  14071. klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  14072. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  14073. klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  14074. return err
  14075. }
  14076. call := g.s.Alpha.NetworkEndpointGroups.AttachNetworkEndpoints(projectID, key.Zone, key.Name, arg0)
  14077. call.Context(ctx)
  14078. op, err := call.Do()
  14079. if err != nil {
  14080. klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err)
  14081. return err
  14082. }
  14083. err = g.s.WaitForCompletion(ctx, op)
  14084. klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err)
  14085. return err
  14086. }
  14087. // DetachNetworkEndpoints is a method on GCEAlphaNetworkEndpointGroups.
  14088. func (g *GCEAlphaNetworkEndpointGroups) DetachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *alpha.NetworkEndpointGroupsDetachEndpointsRequest) error {
  14089. klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): called", ctx, key)
  14090. if !key.Valid() {
  14091. klog.V(2).Infof("GCEAlphaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  14092. return fmt.Errorf("invalid GCE key (%+v)", key)
  14093. }
  14094. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "NetworkEndpointGroups")
  14095. rk := &RateLimitKey{
  14096. ProjectID: projectID,
  14097. Operation: "DetachNetworkEndpoints",
  14098. Version: meta.Version("alpha"),
  14099. Service: "NetworkEndpointGroups",
  14100. }
  14101. klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  14102. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  14103. klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  14104. return err
  14105. }
  14106. call := g.s.Alpha.NetworkEndpointGroups.DetachNetworkEndpoints(projectID, key.Zone, key.Name, arg0)
  14107. call.Context(ctx)
  14108. op, err := call.Do()
  14109. if err != nil {
  14110. klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err)
  14111. return err
  14112. }
  14113. err = g.s.WaitForCompletion(ctx, op)
  14114. klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err)
  14115. return err
  14116. }
  14117. // ListNetworkEndpoints is a method on GCEAlphaNetworkEndpointGroups.
  14118. func (g *GCEAlphaNetworkEndpointGroups) ListNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *alpha.NetworkEndpointGroupsListEndpointsRequest, fl *filter.F) ([]*alpha.NetworkEndpointWithHealthStatus, error) {
  14119. klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): called", ctx, key)
  14120. if !key.Valid() {
  14121. klog.V(2).Infof("GCEAlphaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  14122. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  14123. }
  14124. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "NetworkEndpointGroups")
  14125. rk := &RateLimitKey{
  14126. ProjectID: projectID,
  14127. Operation: "ListNetworkEndpoints",
  14128. Version: meta.Version("alpha"),
  14129. Service: "NetworkEndpointGroups",
  14130. }
  14131. klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  14132. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  14133. klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  14134. return nil, err
  14135. }
  14136. call := g.s.Alpha.NetworkEndpointGroups.ListNetworkEndpoints(projectID, key.Zone, key.Name, arg0)
  14137. var all []*alpha.NetworkEndpointWithHealthStatus
  14138. f := func(l *alpha.NetworkEndpointGroupsListNetworkEndpoints) error {
  14139. klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): page %+v", ctx, key, l)
  14140. all = append(all, l.Items...)
  14141. return nil
  14142. }
  14143. if err := call.Pages(ctx, f); err != nil {
  14144. klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...) = %v, %v", ctx, key, nil, err)
  14145. return nil, err
  14146. }
  14147. if klog.V(4) {
  14148. klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...) = [%v items], %v", ctx, key, len(all), nil)
  14149. } else if klog.V(5) {
  14150. var asStr []string
  14151. for _, o := range all {
  14152. asStr = append(asStr, fmt.Sprintf("%+v", o))
  14153. }
  14154. klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...) = %v, %v", ctx, key, asStr, nil)
  14155. }
  14156. return all, nil
  14157. }
  14158. // BetaNetworkEndpointGroups is an interface that allows for mocking of NetworkEndpointGroups.
  14159. type BetaNetworkEndpointGroups interface {
  14160. Get(ctx context.Context, key *meta.Key) (*beta.NetworkEndpointGroup, error)
  14161. List(ctx context.Context, zone string, fl *filter.F) ([]*beta.NetworkEndpointGroup, error)
  14162. Insert(ctx context.Context, key *meta.Key, obj *beta.NetworkEndpointGroup) error
  14163. Delete(ctx context.Context, key *meta.Key) error
  14164. AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*beta.NetworkEndpointGroup, error)
  14165. AttachNetworkEndpoints(context.Context, *meta.Key, *beta.NetworkEndpointGroupsAttachEndpointsRequest) error
  14166. DetachNetworkEndpoints(context.Context, *meta.Key, *beta.NetworkEndpointGroupsDetachEndpointsRequest) error
  14167. ListNetworkEndpoints(context.Context, *meta.Key, *beta.NetworkEndpointGroupsListEndpointsRequest, *filter.F) ([]*beta.NetworkEndpointWithHealthStatus, error)
  14168. }
  14169. // NewMockBetaNetworkEndpointGroups returns a new mock for NetworkEndpointGroups.
  14170. func NewMockBetaNetworkEndpointGroups(pr ProjectRouter, objs map[meta.Key]*MockNetworkEndpointGroupsObj) *MockBetaNetworkEndpointGroups {
  14171. mock := &MockBetaNetworkEndpointGroups{
  14172. ProjectRouter: pr,
  14173. Objects: objs,
  14174. GetError: map[meta.Key]error{},
  14175. InsertError: map[meta.Key]error{},
  14176. DeleteError: map[meta.Key]error{},
  14177. }
  14178. return mock
  14179. }
  14180. // MockBetaNetworkEndpointGroups is the mock for NetworkEndpointGroups.
  14181. type MockBetaNetworkEndpointGroups struct {
  14182. Lock sync.Mutex
  14183. ProjectRouter ProjectRouter
  14184. // Objects maintained by the mock.
  14185. Objects map[meta.Key]*MockNetworkEndpointGroupsObj
  14186. // If an entry exists for the given key and operation, then the error
  14187. // will be returned instead of the operation.
  14188. GetError map[meta.Key]error
  14189. ListError *error
  14190. InsertError map[meta.Key]error
  14191. DeleteError map[meta.Key]error
  14192. AggregatedListError *error
  14193. // xxxHook allow you to intercept the standard processing of the mock in
  14194. // order to add your own logic. Return (true, _, _) to prevent the normal
  14195. // execution flow of the mock. Return (false, nil, nil) to continue with
  14196. // normal mock behavior/ after the hook function executes.
  14197. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaNetworkEndpointGroups) (bool, *beta.NetworkEndpointGroup, error)
  14198. ListHook func(ctx context.Context, zone string, fl *filter.F, m *MockBetaNetworkEndpointGroups) (bool, []*beta.NetworkEndpointGroup, error)
  14199. InsertHook func(ctx context.Context, key *meta.Key, obj *beta.NetworkEndpointGroup, m *MockBetaNetworkEndpointGroups) (bool, error)
  14200. DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaNetworkEndpointGroups) (bool, error)
  14201. AggregatedListHook func(ctx context.Context, fl *filter.F, m *MockBetaNetworkEndpointGroups) (bool, map[string][]*beta.NetworkEndpointGroup, error)
  14202. AttachNetworkEndpointsHook func(context.Context, *meta.Key, *beta.NetworkEndpointGroupsAttachEndpointsRequest, *MockBetaNetworkEndpointGroups) error
  14203. DetachNetworkEndpointsHook func(context.Context, *meta.Key, *beta.NetworkEndpointGroupsDetachEndpointsRequest, *MockBetaNetworkEndpointGroups) error
  14204. ListNetworkEndpointsHook func(context.Context, *meta.Key, *beta.NetworkEndpointGroupsListEndpointsRequest, *filter.F, *MockBetaNetworkEndpointGroups) ([]*beta.NetworkEndpointWithHealthStatus, error)
  14205. // X is extra state that can be used as part of the mock. Generated code
  14206. // will not use this field.
  14207. X interface{}
  14208. }
  14209. // Get returns the object from the mock.
  14210. func (m *MockBetaNetworkEndpointGroups) Get(ctx context.Context, key *meta.Key) (*beta.NetworkEndpointGroup, error) {
  14211. if m.GetHook != nil {
  14212. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  14213. klog.V(5).Infof("MockBetaNetworkEndpointGroups.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  14214. return obj, err
  14215. }
  14216. }
  14217. if !key.Valid() {
  14218. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  14219. }
  14220. m.Lock.Lock()
  14221. defer m.Lock.Unlock()
  14222. if err, ok := m.GetError[*key]; ok {
  14223. klog.V(5).Infof("MockBetaNetworkEndpointGroups.Get(%v, %s) = nil, %v", ctx, key, err)
  14224. return nil, err
  14225. }
  14226. if obj, ok := m.Objects[*key]; ok {
  14227. typedObj := obj.ToBeta()
  14228. klog.V(5).Infof("MockBetaNetworkEndpointGroups.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  14229. return typedObj, nil
  14230. }
  14231. err := &googleapi.Error{
  14232. Code: http.StatusNotFound,
  14233. Message: fmt.Sprintf("MockBetaNetworkEndpointGroups %v not found", key),
  14234. }
  14235. klog.V(5).Infof("MockBetaNetworkEndpointGroups.Get(%v, %s) = nil, %v", ctx, key, err)
  14236. return nil, err
  14237. }
  14238. // List all of the objects in the mock in the given zone.
  14239. func (m *MockBetaNetworkEndpointGroups) List(ctx context.Context, zone string, fl *filter.F) ([]*beta.NetworkEndpointGroup, error) {
  14240. if m.ListHook != nil {
  14241. if intercept, objs, err := m.ListHook(ctx, zone, fl, m); intercept {
  14242. klog.V(5).Infof("MockBetaNetworkEndpointGroups.List(%v, %q, %v) = [%v items], %v", ctx, zone, fl, len(objs), err)
  14243. return objs, err
  14244. }
  14245. }
  14246. m.Lock.Lock()
  14247. defer m.Lock.Unlock()
  14248. if m.ListError != nil {
  14249. err := *m.ListError
  14250. klog.V(5).Infof("MockBetaNetworkEndpointGroups.List(%v, %q, %v) = nil, %v", ctx, zone, fl, err)
  14251. return nil, *m.ListError
  14252. }
  14253. var objs []*beta.NetworkEndpointGroup
  14254. for key, obj := range m.Objects {
  14255. if key.Zone != zone {
  14256. continue
  14257. }
  14258. if !fl.Match(obj.ToBeta()) {
  14259. continue
  14260. }
  14261. objs = append(objs, obj.ToBeta())
  14262. }
  14263. klog.V(5).Infof("MockBetaNetworkEndpointGroups.List(%v, %q, %v) = [%v items], nil", ctx, zone, fl, len(objs))
  14264. return objs, nil
  14265. }
  14266. // Insert is a mock for inserting/creating a new object.
  14267. func (m *MockBetaNetworkEndpointGroups) Insert(ctx context.Context, key *meta.Key, obj *beta.NetworkEndpointGroup) error {
  14268. if m.InsertHook != nil {
  14269. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  14270. klog.V(5).Infof("MockBetaNetworkEndpointGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  14271. return err
  14272. }
  14273. }
  14274. if !key.Valid() {
  14275. return fmt.Errorf("invalid GCE key (%+v)", key)
  14276. }
  14277. m.Lock.Lock()
  14278. defer m.Lock.Unlock()
  14279. if err, ok := m.InsertError[*key]; ok {
  14280. klog.V(5).Infof("MockBetaNetworkEndpointGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  14281. return err
  14282. }
  14283. if _, ok := m.Objects[*key]; ok {
  14284. err := &googleapi.Error{
  14285. Code: http.StatusConflict,
  14286. Message: fmt.Sprintf("MockBetaNetworkEndpointGroups %v exists", key),
  14287. }
  14288. klog.V(5).Infof("MockBetaNetworkEndpointGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  14289. return err
  14290. }
  14291. obj.Name = key.Name
  14292. projectID := m.ProjectRouter.ProjectID(ctx, "beta", "networkEndpointGroups")
  14293. obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "networkEndpointGroups", key)
  14294. m.Objects[*key] = &MockNetworkEndpointGroupsObj{obj}
  14295. klog.V(5).Infof("MockBetaNetworkEndpointGroups.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  14296. return nil
  14297. }
  14298. // Delete is a mock for deleting the object.
  14299. func (m *MockBetaNetworkEndpointGroups) Delete(ctx context.Context, key *meta.Key) error {
  14300. if m.DeleteHook != nil {
  14301. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  14302. klog.V(5).Infof("MockBetaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err)
  14303. return err
  14304. }
  14305. }
  14306. if !key.Valid() {
  14307. return fmt.Errorf("invalid GCE key (%+v)", key)
  14308. }
  14309. m.Lock.Lock()
  14310. defer m.Lock.Unlock()
  14311. if err, ok := m.DeleteError[*key]; ok {
  14312. klog.V(5).Infof("MockBetaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err)
  14313. return err
  14314. }
  14315. if _, ok := m.Objects[*key]; !ok {
  14316. err := &googleapi.Error{
  14317. Code: http.StatusNotFound,
  14318. Message: fmt.Sprintf("MockBetaNetworkEndpointGroups %v not found", key),
  14319. }
  14320. klog.V(5).Infof("MockBetaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err)
  14321. return err
  14322. }
  14323. delete(m.Objects, *key)
  14324. klog.V(5).Infof("MockBetaNetworkEndpointGroups.Delete(%v, %v) = nil", ctx, key)
  14325. return nil
  14326. }
  14327. // AggregatedList is a mock for AggregatedList.
  14328. func (m *MockBetaNetworkEndpointGroups) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*beta.NetworkEndpointGroup, error) {
  14329. if m.AggregatedListHook != nil {
  14330. if intercept, objs, err := m.AggregatedListHook(ctx, fl, m); intercept {
  14331. klog.V(5).Infof("MockBetaNetworkEndpointGroups.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  14332. return objs, err
  14333. }
  14334. }
  14335. m.Lock.Lock()
  14336. defer m.Lock.Unlock()
  14337. if m.AggregatedListError != nil {
  14338. err := *m.AggregatedListError
  14339. klog.V(5).Infof("MockBetaNetworkEndpointGroups.AggregatedList(%v, %v) = nil, %v", ctx, fl, err)
  14340. return nil, err
  14341. }
  14342. objs := map[string][]*beta.NetworkEndpointGroup{}
  14343. for _, obj := range m.Objects {
  14344. res, err := ParseResourceURL(obj.ToBeta().SelfLink)
  14345. location := res.Key.Zone
  14346. if err != nil {
  14347. klog.V(5).Infof("MockBetaNetworkEndpointGroups.AggregatedList(%v, %v) = nil, %v", ctx, fl, err)
  14348. return nil, err
  14349. }
  14350. if !fl.Match(obj.ToBeta()) {
  14351. continue
  14352. }
  14353. objs[location] = append(objs[location], obj.ToBeta())
  14354. }
  14355. klog.V(5).Infof("MockBetaNetworkEndpointGroups.AggregatedList(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  14356. return objs, nil
  14357. }
  14358. // Obj wraps the object for use in the mock.
  14359. func (m *MockBetaNetworkEndpointGroups) Obj(o *beta.NetworkEndpointGroup) *MockNetworkEndpointGroupsObj {
  14360. return &MockNetworkEndpointGroupsObj{o}
  14361. }
  14362. // AttachNetworkEndpoints is a mock for the corresponding method.
  14363. func (m *MockBetaNetworkEndpointGroups) AttachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *beta.NetworkEndpointGroupsAttachEndpointsRequest) error {
  14364. if m.AttachNetworkEndpointsHook != nil {
  14365. return m.AttachNetworkEndpointsHook(ctx, key, arg0, m)
  14366. }
  14367. return nil
  14368. }
  14369. // DetachNetworkEndpoints is a mock for the corresponding method.
  14370. func (m *MockBetaNetworkEndpointGroups) DetachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *beta.NetworkEndpointGroupsDetachEndpointsRequest) error {
  14371. if m.DetachNetworkEndpointsHook != nil {
  14372. return m.DetachNetworkEndpointsHook(ctx, key, arg0, m)
  14373. }
  14374. return nil
  14375. }
  14376. // ListNetworkEndpoints is a mock for the corresponding method.
  14377. func (m *MockBetaNetworkEndpointGroups) ListNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *beta.NetworkEndpointGroupsListEndpointsRequest, fl *filter.F) ([]*beta.NetworkEndpointWithHealthStatus, error) {
  14378. if m.ListNetworkEndpointsHook != nil {
  14379. return m.ListNetworkEndpointsHook(ctx, key, arg0, fl, m)
  14380. }
  14381. return nil, nil
  14382. }
  14383. // GCEBetaNetworkEndpointGroups is a simplifying adapter for the GCE NetworkEndpointGroups.
  14384. type GCEBetaNetworkEndpointGroups struct {
  14385. s *Service
  14386. }
  14387. // Get the NetworkEndpointGroup named by key.
  14388. func (g *GCEBetaNetworkEndpointGroups) Get(ctx context.Context, key *meta.Key) (*beta.NetworkEndpointGroup, error) {
  14389. klog.V(5).Infof("GCEBetaNetworkEndpointGroups.Get(%v, %v): called", ctx, key)
  14390. if !key.Valid() {
  14391. klog.V(2).Infof("GCEBetaNetworkEndpointGroups.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  14392. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  14393. }
  14394. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "NetworkEndpointGroups")
  14395. rk := &RateLimitKey{
  14396. ProjectID: projectID,
  14397. Operation: "Get",
  14398. Version: meta.Version("beta"),
  14399. Service: "NetworkEndpointGroups",
  14400. }
  14401. klog.V(5).Infof("GCEBetaNetworkEndpointGroups.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  14402. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  14403. klog.V(4).Infof("GCEBetaNetworkEndpointGroups.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  14404. return nil, err
  14405. }
  14406. call := g.s.Beta.NetworkEndpointGroups.Get(projectID, key.Zone, key.Name)
  14407. call.Context(ctx)
  14408. v, err := call.Do()
  14409. klog.V(4).Infof("GCEBetaNetworkEndpointGroups.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  14410. return v, err
  14411. }
  14412. // List all NetworkEndpointGroup objects.
  14413. func (g *GCEBetaNetworkEndpointGroups) List(ctx context.Context, zone string, fl *filter.F) ([]*beta.NetworkEndpointGroup, error) {
  14414. klog.V(5).Infof("GCEBetaNetworkEndpointGroups.List(%v, %v, %v) called", ctx, zone, fl)
  14415. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "NetworkEndpointGroups")
  14416. rk := &RateLimitKey{
  14417. ProjectID: projectID,
  14418. Operation: "List",
  14419. Version: meta.Version("beta"),
  14420. Service: "NetworkEndpointGroups",
  14421. }
  14422. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  14423. return nil, err
  14424. }
  14425. klog.V(5).Infof("GCEBetaNetworkEndpointGroups.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, zone, fl, projectID, rk)
  14426. call := g.s.Beta.NetworkEndpointGroups.List(projectID, zone)
  14427. if fl != filter.None {
  14428. call.Filter(fl.String())
  14429. }
  14430. var all []*beta.NetworkEndpointGroup
  14431. f := func(l *beta.NetworkEndpointGroupList) error {
  14432. klog.V(5).Infof("GCEBetaNetworkEndpointGroups.List(%v, ..., %v): page %+v", ctx, fl, l)
  14433. all = append(all, l.Items...)
  14434. return nil
  14435. }
  14436. if err := call.Pages(ctx, f); err != nil {
  14437. klog.V(4).Infof("GCEBetaNetworkEndpointGroups.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  14438. return nil, err
  14439. }
  14440. if klog.V(4) {
  14441. klog.V(4).Infof("GCEBetaNetworkEndpointGroups.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  14442. } else if klog.V(5) {
  14443. var asStr []string
  14444. for _, o := range all {
  14445. asStr = append(asStr, fmt.Sprintf("%+v", o))
  14446. }
  14447. klog.V(5).Infof("GCEBetaNetworkEndpointGroups.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  14448. }
  14449. return all, nil
  14450. }
  14451. // Insert NetworkEndpointGroup with key of value obj.
  14452. func (g *GCEBetaNetworkEndpointGroups) Insert(ctx context.Context, key *meta.Key, obj *beta.NetworkEndpointGroup) error {
  14453. klog.V(5).Infof("GCEBetaNetworkEndpointGroups.Insert(%v, %v, %+v): called", ctx, key, obj)
  14454. if !key.Valid() {
  14455. klog.V(2).Infof("GCEBetaNetworkEndpointGroups.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  14456. return fmt.Errorf("invalid GCE key (%+v)", key)
  14457. }
  14458. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "NetworkEndpointGroups")
  14459. rk := &RateLimitKey{
  14460. ProjectID: projectID,
  14461. Operation: "Insert",
  14462. Version: meta.Version("beta"),
  14463. Service: "NetworkEndpointGroups",
  14464. }
  14465. klog.V(5).Infof("GCEBetaNetworkEndpointGroups.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  14466. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  14467. klog.V(4).Infof("GCEBetaNetworkEndpointGroups.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  14468. return err
  14469. }
  14470. obj.Name = key.Name
  14471. call := g.s.Beta.NetworkEndpointGroups.Insert(projectID, key.Zone, obj)
  14472. call.Context(ctx)
  14473. op, err := call.Do()
  14474. if err != nil {
  14475. klog.V(4).Infof("GCEBetaNetworkEndpointGroups.Insert(%v, %v, ...) = %+v", ctx, key, err)
  14476. return err
  14477. }
  14478. err = g.s.WaitForCompletion(ctx, op)
  14479. klog.V(4).Infof("GCEBetaNetworkEndpointGroups.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  14480. return err
  14481. }
  14482. // Delete the NetworkEndpointGroup referenced by key.
  14483. func (g *GCEBetaNetworkEndpointGroups) Delete(ctx context.Context, key *meta.Key) error {
  14484. klog.V(5).Infof("GCEBetaNetworkEndpointGroups.Delete(%v, %v): called", ctx, key)
  14485. if !key.Valid() {
  14486. klog.V(2).Infof("GCEBetaNetworkEndpointGroups.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  14487. return fmt.Errorf("invalid GCE key (%+v)", key)
  14488. }
  14489. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "NetworkEndpointGroups")
  14490. rk := &RateLimitKey{
  14491. ProjectID: projectID,
  14492. Operation: "Delete",
  14493. Version: meta.Version("beta"),
  14494. Service: "NetworkEndpointGroups",
  14495. }
  14496. klog.V(5).Infof("GCEBetaNetworkEndpointGroups.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  14497. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  14498. klog.V(4).Infof("GCEBetaNetworkEndpointGroups.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  14499. return err
  14500. }
  14501. call := g.s.Beta.NetworkEndpointGroups.Delete(projectID, key.Zone, key.Name)
  14502. call.Context(ctx)
  14503. op, err := call.Do()
  14504. if err != nil {
  14505. klog.V(4).Infof("GCEBetaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err)
  14506. return err
  14507. }
  14508. err = g.s.WaitForCompletion(ctx, op)
  14509. klog.V(4).Infof("GCEBetaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err)
  14510. return err
  14511. }
  14512. // AggregatedList lists all resources of the given type across all locations.
  14513. func (g *GCEBetaNetworkEndpointGroups) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*beta.NetworkEndpointGroup, error) {
  14514. klog.V(5).Infof("GCEBetaNetworkEndpointGroups.AggregatedList(%v, %v) called", ctx, fl)
  14515. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "NetworkEndpointGroups")
  14516. rk := &RateLimitKey{
  14517. ProjectID: projectID,
  14518. Operation: "AggregatedList",
  14519. Version: meta.Version("beta"),
  14520. Service: "NetworkEndpointGroups",
  14521. }
  14522. klog.V(5).Infof("GCEBetaNetworkEndpointGroups.AggregatedList(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  14523. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  14524. klog.V(5).Infof("GCEBetaNetworkEndpointGroups.AggregatedList(%v, %v): RateLimiter error: %v", ctx, fl, err)
  14525. return nil, err
  14526. }
  14527. call := g.s.Beta.NetworkEndpointGroups.AggregatedList(projectID)
  14528. call.Context(ctx)
  14529. if fl != filter.None {
  14530. call.Filter(fl.String())
  14531. }
  14532. all := map[string][]*beta.NetworkEndpointGroup{}
  14533. f := func(l *beta.NetworkEndpointGroupAggregatedList) error {
  14534. for k, v := range l.Items {
  14535. klog.V(5).Infof("GCEBetaNetworkEndpointGroups.AggregatedList(%v, %v): page[%v]%+v", ctx, fl, k, v)
  14536. all[k] = append(all[k], v.NetworkEndpointGroups...)
  14537. }
  14538. return nil
  14539. }
  14540. if err := call.Pages(ctx, f); err != nil {
  14541. klog.V(4).Infof("GCEBetaNetworkEndpointGroups.AggregatedList(%v, %v) = %v, %v", ctx, fl, nil, err)
  14542. return nil, err
  14543. }
  14544. if klog.V(4) {
  14545. klog.V(4).Infof("GCEBetaNetworkEndpointGroups.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(all), nil)
  14546. } else if klog.V(5) {
  14547. var asStr []string
  14548. for _, o := range all {
  14549. asStr = append(asStr, fmt.Sprintf("%+v", o))
  14550. }
  14551. klog.V(5).Infof("GCEBetaNetworkEndpointGroups.AggregatedList(%v, %v) = %v, %v", ctx, fl, asStr, nil)
  14552. }
  14553. return all, nil
  14554. }
  14555. // AttachNetworkEndpoints is a method on GCEBetaNetworkEndpointGroups.
  14556. func (g *GCEBetaNetworkEndpointGroups) AttachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *beta.NetworkEndpointGroupsAttachEndpointsRequest) error {
  14557. klog.V(5).Infof("GCEBetaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): called", ctx, key)
  14558. if !key.Valid() {
  14559. klog.V(2).Infof("GCEBetaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  14560. return fmt.Errorf("invalid GCE key (%+v)", key)
  14561. }
  14562. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "NetworkEndpointGroups")
  14563. rk := &RateLimitKey{
  14564. ProjectID: projectID,
  14565. Operation: "AttachNetworkEndpoints",
  14566. Version: meta.Version("beta"),
  14567. Service: "NetworkEndpointGroups",
  14568. }
  14569. klog.V(5).Infof("GCEBetaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  14570. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  14571. klog.V(4).Infof("GCEBetaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  14572. return err
  14573. }
  14574. call := g.s.Beta.NetworkEndpointGroups.AttachNetworkEndpoints(projectID, key.Zone, key.Name, arg0)
  14575. call.Context(ctx)
  14576. op, err := call.Do()
  14577. if err != nil {
  14578. klog.V(4).Infof("GCEBetaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err)
  14579. return err
  14580. }
  14581. err = g.s.WaitForCompletion(ctx, op)
  14582. klog.V(4).Infof("GCEBetaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err)
  14583. return err
  14584. }
  14585. // DetachNetworkEndpoints is a method on GCEBetaNetworkEndpointGroups.
  14586. func (g *GCEBetaNetworkEndpointGroups) DetachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *beta.NetworkEndpointGroupsDetachEndpointsRequest) error {
  14587. klog.V(5).Infof("GCEBetaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): called", ctx, key)
  14588. if !key.Valid() {
  14589. klog.V(2).Infof("GCEBetaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  14590. return fmt.Errorf("invalid GCE key (%+v)", key)
  14591. }
  14592. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "NetworkEndpointGroups")
  14593. rk := &RateLimitKey{
  14594. ProjectID: projectID,
  14595. Operation: "DetachNetworkEndpoints",
  14596. Version: meta.Version("beta"),
  14597. Service: "NetworkEndpointGroups",
  14598. }
  14599. klog.V(5).Infof("GCEBetaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  14600. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  14601. klog.V(4).Infof("GCEBetaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  14602. return err
  14603. }
  14604. call := g.s.Beta.NetworkEndpointGroups.DetachNetworkEndpoints(projectID, key.Zone, key.Name, arg0)
  14605. call.Context(ctx)
  14606. op, err := call.Do()
  14607. if err != nil {
  14608. klog.V(4).Infof("GCEBetaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err)
  14609. return err
  14610. }
  14611. err = g.s.WaitForCompletion(ctx, op)
  14612. klog.V(4).Infof("GCEBetaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err)
  14613. return err
  14614. }
  14615. // ListNetworkEndpoints is a method on GCEBetaNetworkEndpointGroups.
  14616. func (g *GCEBetaNetworkEndpointGroups) ListNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *beta.NetworkEndpointGroupsListEndpointsRequest, fl *filter.F) ([]*beta.NetworkEndpointWithHealthStatus, error) {
  14617. klog.V(5).Infof("GCEBetaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): called", ctx, key)
  14618. if !key.Valid() {
  14619. klog.V(2).Infof("GCEBetaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  14620. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  14621. }
  14622. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "NetworkEndpointGroups")
  14623. rk := &RateLimitKey{
  14624. ProjectID: projectID,
  14625. Operation: "ListNetworkEndpoints",
  14626. Version: meta.Version("beta"),
  14627. Service: "NetworkEndpointGroups",
  14628. }
  14629. klog.V(5).Infof("GCEBetaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  14630. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  14631. klog.V(4).Infof("GCEBetaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  14632. return nil, err
  14633. }
  14634. call := g.s.Beta.NetworkEndpointGroups.ListNetworkEndpoints(projectID, key.Zone, key.Name, arg0)
  14635. var all []*beta.NetworkEndpointWithHealthStatus
  14636. f := func(l *beta.NetworkEndpointGroupsListNetworkEndpoints) error {
  14637. klog.V(5).Infof("GCEBetaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): page %+v", ctx, key, l)
  14638. all = append(all, l.Items...)
  14639. return nil
  14640. }
  14641. if err := call.Pages(ctx, f); err != nil {
  14642. klog.V(4).Infof("GCEBetaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...) = %v, %v", ctx, key, nil, err)
  14643. return nil, err
  14644. }
  14645. if klog.V(4) {
  14646. klog.V(4).Infof("GCEBetaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...) = [%v items], %v", ctx, key, len(all), nil)
  14647. } else if klog.V(5) {
  14648. var asStr []string
  14649. for _, o := range all {
  14650. asStr = append(asStr, fmt.Sprintf("%+v", o))
  14651. }
  14652. klog.V(5).Infof("GCEBetaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...) = %v, %v", ctx, key, asStr, nil)
  14653. }
  14654. return all, nil
  14655. }
  14656. // NetworkEndpointGroups is an interface that allows for mocking of NetworkEndpointGroups.
  14657. type NetworkEndpointGroups interface {
  14658. Get(ctx context.Context, key *meta.Key) (*ga.NetworkEndpointGroup, error)
  14659. List(ctx context.Context, zone string, fl *filter.F) ([]*ga.NetworkEndpointGroup, error)
  14660. Insert(ctx context.Context, key *meta.Key, obj *ga.NetworkEndpointGroup) error
  14661. Delete(ctx context.Context, key *meta.Key) error
  14662. AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*ga.NetworkEndpointGroup, error)
  14663. AttachNetworkEndpoints(context.Context, *meta.Key, *ga.NetworkEndpointGroupsAttachEndpointsRequest) error
  14664. DetachNetworkEndpoints(context.Context, *meta.Key, *ga.NetworkEndpointGroupsDetachEndpointsRequest) error
  14665. ListNetworkEndpoints(context.Context, *meta.Key, *ga.NetworkEndpointGroupsListEndpointsRequest, *filter.F) ([]*ga.NetworkEndpointWithHealthStatus, error)
  14666. }
  14667. // NewMockNetworkEndpointGroups returns a new mock for NetworkEndpointGroups.
  14668. func NewMockNetworkEndpointGroups(pr ProjectRouter, objs map[meta.Key]*MockNetworkEndpointGroupsObj) *MockNetworkEndpointGroups {
  14669. mock := &MockNetworkEndpointGroups{
  14670. ProjectRouter: pr,
  14671. Objects: objs,
  14672. GetError: map[meta.Key]error{},
  14673. InsertError: map[meta.Key]error{},
  14674. DeleteError: map[meta.Key]error{},
  14675. }
  14676. return mock
  14677. }
  14678. // MockNetworkEndpointGroups is the mock for NetworkEndpointGroups.
  14679. type MockNetworkEndpointGroups struct {
  14680. Lock sync.Mutex
  14681. ProjectRouter ProjectRouter
  14682. // Objects maintained by the mock.
  14683. Objects map[meta.Key]*MockNetworkEndpointGroupsObj
  14684. // If an entry exists for the given key and operation, then the error
  14685. // will be returned instead of the operation.
  14686. GetError map[meta.Key]error
  14687. ListError *error
  14688. InsertError map[meta.Key]error
  14689. DeleteError map[meta.Key]error
  14690. AggregatedListError *error
  14691. // xxxHook allow you to intercept the standard processing of the mock in
  14692. // order to add your own logic. Return (true, _, _) to prevent the normal
  14693. // execution flow of the mock. Return (false, nil, nil) to continue with
  14694. // normal mock behavior/ after the hook function executes.
  14695. GetHook func(ctx context.Context, key *meta.Key, m *MockNetworkEndpointGroups) (bool, *ga.NetworkEndpointGroup, error)
  14696. ListHook func(ctx context.Context, zone string, fl *filter.F, m *MockNetworkEndpointGroups) (bool, []*ga.NetworkEndpointGroup, error)
  14697. InsertHook func(ctx context.Context, key *meta.Key, obj *ga.NetworkEndpointGroup, m *MockNetworkEndpointGroups) (bool, error)
  14698. DeleteHook func(ctx context.Context, key *meta.Key, m *MockNetworkEndpointGroups) (bool, error)
  14699. AggregatedListHook func(ctx context.Context, fl *filter.F, m *MockNetworkEndpointGroups) (bool, map[string][]*ga.NetworkEndpointGroup, error)
  14700. AttachNetworkEndpointsHook func(context.Context, *meta.Key, *ga.NetworkEndpointGroupsAttachEndpointsRequest, *MockNetworkEndpointGroups) error
  14701. DetachNetworkEndpointsHook func(context.Context, *meta.Key, *ga.NetworkEndpointGroupsDetachEndpointsRequest, *MockNetworkEndpointGroups) error
  14702. ListNetworkEndpointsHook func(context.Context, *meta.Key, *ga.NetworkEndpointGroupsListEndpointsRequest, *filter.F, *MockNetworkEndpointGroups) ([]*ga.NetworkEndpointWithHealthStatus, error)
  14703. // X is extra state that can be used as part of the mock. Generated code
  14704. // will not use this field.
  14705. X interface{}
  14706. }
  14707. // Get returns the object from the mock.
  14708. func (m *MockNetworkEndpointGroups) Get(ctx context.Context, key *meta.Key) (*ga.NetworkEndpointGroup, error) {
  14709. if m.GetHook != nil {
  14710. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  14711. klog.V(5).Infof("MockNetworkEndpointGroups.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  14712. return obj, err
  14713. }
  14714. }
  14715. if !key.Valid() {
  14716. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  14717. }
  14718. m.Lock.Lock()
  14719. defer m.Lock.Unlock()
  14720. if err, ok := m.GetError[*key]; ok {
  14721. klog.V(5).Infof("MockNetworkEndpointGroups.Get(%v, %s) = nil, %v", ctx, key, err)
  14722. return nil, err
  14723. }
  14724. if obj, ok := m.Objects[*key]; ok {
  14725. typedObj := obj.ToGA()
  14726. klog.V(5).Infof("MockNetworkEndpointGroups.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  14727. return typedObj, nil
  14728. }
  14729. err := &googleapi.Error{
  14730. Code: http.StatusNotFound,
  14731. Message: fmt.Sprintf("MockNetworkEndpointGroups %v not found", key),
  14732. }
  14733. klog.V(5).Infof("MockNetworkEndpointGroups.Get(%v, %s) = nil, %v", ctx, key, err)
  14734. return nil, err
  14735. }
  14736. // List all of the objects in the mock in the given zone.
  14737. func (m *MockNetworkEndpointGroups) List(ctx context.Context, zone string, fl *filter.F) ([]*ga.NetworkEndpointGroup, error) {
  14738. if m.ListHook != nil {
  14739. if intercept, objs, err := m.ListHook(ctx, zone, fl, m); intercept {
  14740. klog.V(5).Infof("MockNetworkEndpointGroups.List(%v, %q, %v) = [%v items], %v", ctx, zone, fl, len(objs), err)
  14741. return objs, err
  14742. }
  14743. }
  14744. m.Lock.Lock()
  14745. defer m.Lock.Unlock()
  14746. if m.ListError != nil {
  14747. err := *m.ListError
  14748. klog.V(5).Infof("MockNetworkEndpointGroups.List(%v, %q, %v) = nil, %v", ctx, zone, fl, err)
  14749. return nil, *m.ListError
  14750. }
  14751. var objs []*ga.NetworkEndpointGroup
  14752. for key, obj := range m.Objects {
  14753. if key.Zone != zone {
  14754. continue
  14755. }
  14756. if !fl.Match(obj.ToGA()) {
  14757. continue
  14758. }
  14759. objs = append(objs, obj.ToGA())
  14760. }
  14761. klog.V(5).Infof("MockNetworkEndpointGroups.List(%v, %q, %v) = [%v items], nil", ctx, zone, fl, len(objs))
  14762. return objs, nil
  14763. }
  14764. // Insert is a mock for inserting/creating a new object.
  14765. func (m *MockNetworkEndpointGroups) Insert(ctx context.Context, key *meta.Key, obj *ga.NetworkEndpointGroup) error {
  14766. if m.InsertHook != nil {
  14767. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  14768. klog.V(5).Infof("MockNetworkEndpointGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  14769. return err
  14770. }
  14771. }
  14772. if !key.Valid() {
  14773. return fmt.Errorf("invalid GCE key (%+v)", key)
  14774. }
  14775. m.Lock.Lock()
  14776. defer m.Lock.Unlock()
  14777. if err, ok := m.InsertError[*key]; ok {
  14778. klog.V(5).Infof("MockNetworkEndpointGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  14779. return err
  14780. }
  14781. if _, ok := m.Objects[*key]; ok {
  14782. err := &googleapi.Error{
  14783. Code: http.StatusConflict,
  14784. Message: fmt.Sprintf("MockNetworkEndpointGroups %v exists", key),
  14785. }
  14786. klog.V(5).Infof("MockNetworkEndpointGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  14787. return err
  14788. }
  14789. obj.Name = key.Name
  14790. projectID := m.ProjectRouter.ProjectID(ctx, "ga", "networkEndpointGroups")
  14791. obj.SelfLink = SelfLink(meta.VersionGA, projectID, "networkEndpointGroups", key)
  14792. m.Objects[*key] = &MockNetworkEndpointGroupsObj{obj}
  14793. klog.V(5).Infof("MockNetworkEndpointGroups.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  14794. return nil
  14795. }
  14796. // Delete is a mock for deleting the object.
  14797. func (m *MockNetworkEndpointGroups) Delete(ctx context.Context, key *meta.Key) error {
  14798. if m.DeleteHook != nil {
  14799. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  14800. klog.V(5).Infof("MockNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err)
  14801. return err
  14802. }
  14803. }
  14804. if !key.Valid() {
  14805. return fmt.Errorf("invalid GCE key (%+v)", key)
  14806. }
  14807. m.Lock.Lock()
  14808. defer m.Lock.Unlock()
  14809. if err, ok := m.DeleteError[*key]; ok {
  14810. klog.V(5).Infof("MockNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err)
  14811. return err
  14812. }
  14813. if _, ok := m.Objects[*key]; !ok {
  14814. err := &googleapi.Error{
  14815. Code: http.StatusNotFound,
  14816. Message: fmt.Sprintf("MockNetworkEndpointGroups %v not found", key),
  14817. }
  14818. klog.V(5).Infof("MockNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err)
  14819. return err
  14820. }
  14821. delete(m.Objects, *key)
  14822. klog.V(5).Infof("MockNetworkEndpointGroups.Delete(%v, %v) = nil", ctx, key)
  14823. return nil
  14824. }
  14825. // AggregatedList is a mock for AggregatedList.
  14826. func (m *MockNetworkEndpointGroups) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*ga.NetworkEndpointGroup, error) {
  14827. if m.AggregatedListHook != nil {
  14828. if intercept, objs, err := m.AggregatedListHook(ctx, fl, m); intercept {
  14829. klog.V(5).Infof("MockNetworkEndpointGroups.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  14830. return objs, err
  14831. }
  14832. }
  14833. m.Lock.Lock()
  14834. defer m.Lock.Unlock()
  14835. if m.AggregatedListError != nil {
  14836. err := *m.AggregatedListError
  14837. klog.V(5).Infof("MockNetworkEndpointGroups.AggregatedList(%v, %v) = nil, %v", ctx, fl, err)
  14838. return nil, err
  14839. }
  14840. objs := map[string][]*ga.NetworkEndpointGroup{}
  14841. for _, obj := range m.Objects {
  14842. res, err := ParseResourceURL(obj.ToGA().SelfLink)
  14843. location := res.Key.Zone
  14844. if err != nil {
  14845. klog.V(5).Infof("MockNetworkEndpointGroups.AggregatedList(%v, %v) = nil, %v", ctx, fl, err)
  14846. return nil, err
  14847. }
  14848. if !fl.Match(obj.ToGA()) {
  14849. continue
  14850. }
  14851. objs[location] = append(objs[location], obj.ToGA())
  14852. }
  14853. klog.V(5).Infof("MockNetworkEndpointGroups.AggregatedList(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  14854. return objs, nil
  14855. }
  14856. // Obj wraps the object for use in the mock.
  14857. func (m *MockNetworkEndpointGroups) Obj(o *ga.NetworkEndpointGroup) *MockNetworkEndpointGroupsObj {
  14858. return &MockNetworkEndpointGroupsObj{o}
  14859. }
  14860. // AttachNetworkEndpoints is a mock for the corresponding method.
  14861. func (m *MockNetworkEndpointGroups) AttachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *ga.NetworkEndpointGroupsAttachEndpointsRequest) error {
  14862. if m.AttachNetworkEndpointsHook != nil {
  14863. return m.AttachNetworkEndpointsHook(ctx, key, arg0, m)
  14864. }
  14865. return nil
  14866. }
  14867. // DetachNetworkEndpoints is a mock for the corresponding method.
  14868. func (m *MockNetworkEndpointGroups) DetachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *ga.NetworkEndpointGroupsDetachEndpointsRequest) error {
  14869. if m.DetachNetworkEndpointsHook != nil {
  14870. return m.DetachNetworkEndpointsHook(ctx, key, arg0, m)
  14871. }
  14872. return nil
  14873. }
  14874. // ListNetworkEndpoints is a mock for the corresponding method.
  14875. func (m *MockNetworkEndpointGroups) ListNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *ga.NetworkEndpointGroupsListEndpointsRequest, fl *filter.F) ([]*ga.NetworkEndpointWithHealthStatus, error) {
  14876. if m.ListNetworkEndpointsHook != nil {
  14877. return m.ListNetworkEndpointsHook(ctx, key, arg0, fl, m)
  14878. }
  14879. return nil, nil
  14880. }
  14881. // GCENetworkEndpointGroups is a simplifying adapter for the GCE NetworkEndpointGroups.
  14882. type GCENetworkEndpointGroups struct {
  14883. s *Service
  14884. }
  14885. // Get the NetworkEndpointGroup named by key.
  14886. func (g *GCENetworkEndpointGroups) Get(ctx context.Context, key *meta.Key) (*ga.NetworkEndpointGroup, error) {
  14887. klog.V(5).Infof("GCENetworkEndpointGroups.Get(%v, %v): called", ctx, key)
  14888. if !key.Valid() {
  14889. klog.V(2).Infof("GCENetworkEndpointGroups.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  14890. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  14891. }
  14892. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "NetworkEndpointGroups")
  14893. rk := &RateLimitKey{
  14894. ProjectID: projectID,
  14895. Operation: "Get",
  14896. Version: meta.Version("ga"),
  14897. Service: "NetworkEndpointGroups",
  14898. }
  14899. klog.V(5).Infof("GCENetworkEndpointGroups.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  14900. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  14901. klog.V(4).Infof("GCENetworkEndpointGroups.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  14902. return nil, err
  14903. }
  14904. call := g.s.GA.NetworkEndpointGroups.Get(projectID, key.Zone, key.Name)
  14905. call.Context(ctx)
  14906. v, err := call.Do()
  14907. klog.V(4).Infof("GCENetworkEndpointGroups.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  14908. return v, err
  14909. }
  14910. // List all NetworkEndpointGroup objects.
  14911. func (g *GCENetworkEndpointGroups) List(ctx context.Context, zone string, fl *filter.F) ([]*ga.NetworkEndpointGroup, error) {
  14912. klog.V(5).Infof("GCENetworkEndpointGroups.List(%v, %v, %v) called", ctx, zone, fl)
  14913. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "NetworkEndpointGroups")
  14914. rk := &RateLimitKey{
  14915. ProjectID: projectID,
  14916. Operation: "List",
  14917. Version: meta.Version("ga"),
  14918. Service: "NetworkEndpointGroups",
  14919. }
  14920. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  14921. return nil, err
  14922. }
  14923. klog.V(5).Infof("GCENetworkEndpointGroups.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, zone, fl, projectID, rk)
  14924. call := g.s.GA.NetworkEndpointGroups.List(projectID, zone)
  14925. if fl != filter.None {
  14926. call.Filter(fl.String())
  14927. }
  14928. var all []*ga.NetworkEndpointGroup
  14929. f := func(l *ga.NetworkEndpointGroupList) error {
  14930. klog.V(5).Infof("GCENetworkEndpointGroups.List(%v, ..., %v): page %+v", ctx, fl, l)
  14931. all = append(all, l.Items...)
  14932. return nil
  14933. }
  14934. if err := call.Pages(ctx, f); err != nil {
  14935. klog.V(4).Infof("GCENetworkEndpointGroups.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  14936. return nil, err
  14937. }
  14938. if klog.V(4) {
  14939. klog.V(4).Infof("GCENetworkEndpointGroups.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  14940. } else if klog.V(5) {
  14941. var asStr []string
  14942. for _, o := range all {
  14943. asStr = append(asStr, fmt.Sprintf("%+v", o))
  14944. }
  14945. klog.V(5).Infof("GCENetworkEndpointGroups.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  14946. }
  14947. return all, nil
  14948. }
  14949. // Insert NetworkEndpointGroup with key of value obj.
  14950. func (g *GCENetworkEndpointGroups) Insert(ctx context.Context, key *meta.Key, obj *ga.NetworkEndpointGroup) error {
  14951. klog.V(5).Infof("GCENetworkEndpointGroups.Insert(%v, %v, %+v): called", ctx, key, obj)
  14952. if !key.Valid() {
  14953. klog.V(2).Infof("GCENetworkEndpointGroups.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  14954. return fmt.Errorf("invalid GCE key (%+v)", key)
  14955. }
  14956. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "NetworkEndpointGroups")
  14957. rk := &RateLimitKey{
  14958. ProjectID: projectID,
  14959. Operation: "Insert",
  14960. Version: meta.Version("ga"),
  14961. Service: "NetworkEndpointGroups",
  14962. }
  14963. klog.V(5).Infof("GCENetworkEndpointGroups.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  14964. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  14965. klog.V(4).Infof("GCENetworkEndpointGroups.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  14966. return err
  14967. }
  14968. obj.Name = key.Name
  14969. call := g.s.GA.NetworkEndpointGroups.Insert(projectID, key.Zone, obj)
  14970. call.Context(ctx)
  14971. op, err := call.Do()
  14972. if err != nil {
  14973. klog.V(4).Infof("GCENetworkEndpointGroups.Insert(%v, %v, ...) = %+v", ctx, key, err)
  14974. return err
  14975. }
  14976. err = g.s.WaitForCompletion(ctx, op)
  14977. klog.V(4).Infof("GCENetworkEndpointGroups.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  14978. return err
  14979. }
  14980. // Delete the NetworkEndpointGroup referenced by key.
  14981. func (g *GCENetworkEndpointGroups) Delete(ctx context.Context, key *meta.Key) error {
  14982. klog.V(5).Infof("GCENetworkEndpointGroups.Delete(%v, %v): called", ctx, key)
  14983. if !key.Valid() {
  14984. klog.V(2).Infof("GCENetworkEndpointGroups.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  14985. return fmt.Errorf("invalid GCE key (%+v)", key)
  14986. }
  14987. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "NetworkEndpointGroups")
  14988. rk := &RateLimitKey{
  14989. ProjectID: projectID,
  14990. Operation: "Delete",
  14991. Version: meta.Version("ga"),
  14992. Service: "NetworkEndpointGroups",
  14993. }
  14994. klog.V(5).Infof("GCENetworkEndpointGroups.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  14995. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  14996. klog.V(4).Infof("GCENetworkEndpointGroups.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  14997. return err
  14998. }
  14999. call := g.s.GA.NetworkEndpointGroups.Delete(projectID, key.Zone, key.Name)
  15000. call.Context(ctx)
  15001. op, err := call.Do()
  15002. if err != nil {
  15003. klog.V(4).Infof("GCENetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err)
  15004. return err
  15005. }
  15006. err = g.s.WaitForCompletion(ctx, op)
  15007. klog.V(4).Infof("GCENetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err)
  15008. return err
  15009. }
  15010. // AggregatedList lists all resources of the given type across all locations.
  15011. func (g *GCENetworkEndpointGroups) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*ga.NetworkEndpointGroup, error) {
  15012. klog.V(5).Infof("GCENetworkEndpointGroups.AggregatedList(%v, %v) called", ctx, fl)
  15013. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "NetworkEndpointGroups")
  15014. rk := &RateLimitKey{
  15015. ProjectID: projectID,
  15016. Operation: "AggregatedList",
  15017. Version: meta.Version("ga"),
  15018. Service: "NetworkEndpointGroups",
  15019. }
  15020. klog.V(5).Infof("GCENetworkEndpointGroups.AggregatedList(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  15021. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  15022. klog.V(5).Infof("GCENetworkEndpointGroups.AggregatedList(%v, %v): RateLimiter error: %v", ctx, fl, err)
  15023. return nil, err
  15024. }
  15025. call := g.s.GA.NetworkEndpointGroups.AggregatedList(projectID)
  15026. call.Context(ctx)
  15027. if fl != filter.None {
  15028. call.Filter(fl.String())
  15029. }
  15030. all := map[string][]*ga.NetworkEndpointGroup{}
  15031. f := func(l *ga.NetworkEndpointGroupAggregatedList) error {
  15032. for k, v := range l.Items {
  15033. klog.V(5).Infof("GCENetworkEndpointGroups.AggregatedList(%v, %v): page[%v]%+v", ctx, fl, k, v)
  15034. all[k] = append(all[k], v.NetworkEndpointGroups...)
  15035. }
  15036. return nil
  15037. }
  15038. if err := call.Pages(ctx, f); err != nil {
  15039. klog.V(4).Infof("GCENetworkEndpointGroups.AggregatedList(%v, %v) = %v, %v", ctx, fl, nil, err)
  15040. return nil, err
  15041. }
  15042. if klog.V(4) {
  15043. klog.V(4).Infof("GCENetworkEndpointGroups.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(all), nil)
  15044. } else if klog.V(5) {
  15045. var asStr []string
  15046. for _, o := range all {
  15047. asStr = append(asStr, fmt.Sprintf("%+v", o))
  15048. }
  15049. klog.V(5).Infof("GCENetworkEndpointGroups.AggregatedList(%v, %v) = %v, %v", ctx, fl, asStr, nil)
  15050. }
  15051. return all, nil
  15052. }
  15053. // AttachNetworkEndpoints is a method on GCENetworkEndpointGroups.
  15054. func (g *GCENetworkEndpointGroups) AttachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *ga.NetworkEndpointGroupsAttachEndpointsRequest) error {
  15055. klog.V(5).Infof("GCENetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): called", ctx, key)
  15056. if !key.Valid() {
  15057. klog.V(2).Infof("GCENetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  15058. return fmt.Errorf("invalid GCE key (%+v)", key)
  15059. }
  15060. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "NetworkEndpointGroups")
  15061. rk := &RateLimitKey{
  15062. ProjectID: projectID,
  15063. Operation: "AttachNetworkEndpoints",
  15064. Version: meta.Version("ga"),
  15065. Service: "NetworkEndpointGroups",
  15066. }
  15067. klog.V(5).Infof("GCENetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  15068. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  15069. klog.V(4).Infof("GCENetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  15070. return err
  15071. }
  15072. call := g.s.GA.NetworkEndpointGroups.AttachNetworkEndpoints(projectID, key.Zone, key.Name, arg0)
  15073. call.Context(ctx)
  15074. op, err := call.Do()
  15075. if err != nil {
  15076. klog.V(4).Infof("GCENetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err)
  15077. return err
  15078. }
  15079. err = g.s.WaitForCompletion(ctx, op)
  15080. klog.V(4).Infof("GCENetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err)
  15081. return err
  15082. }
  15083. // DetachNetworkEndpoints is a method on GCENetworkEndpointGroups.
  15084. func (g *GCENetworkEndpointGroups) DetachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *ga.NetworkEndpointGroupsDetachEndpointsRequest) error {
  15085. klog.V(5).Infof("GCENetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): called", ctx, key)
  15086. if !key.Valid() {
  15087. klog.V(2).Infof("GCENetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  15088. return fmt.Errorf("invalid GCE key (%+v)", key)
  15089. }
  15090. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "NetworkEndpointGroups")
  15091. rk := &RateLimitKey{
  15092. ProjectID: projectID,
  15093. Operation: "DetachNetworkEndpoints",
  15094. Version: meta.Version("ga"),
  15095. Service: "NetworkEndpointGroups",
  15096. }
  15097. klog.V(5).Infof("GCENetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  15098. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  15099. klog.V(4).Infof("GCENetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  15100. return err
  15101. }
  15102. call := g.s.GA.NetworkEndpointGroups.DetachNetworkEndpoints(projectID, key.Zone, key.Name, arg0)
  15103. call.Context(ctx)
  15104. op, err := call.Do()
  15105. if err != nil {
  15106. klog.V(4).Infof("GCENetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err)
  15107. return err
  15108. }
  15109. err = g.s.WaitForCompletion(ctx, op)
  15110. klog.V(4).Infof("GCENetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err)
  15111. return err
  15112. }
  15113. // ListNetworkEndpoints is a method on GCENetworkEndpointGroups.
  15114. func (g *GCENetworkEndpointGroups) ListNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *ga.NetworkEndpointGroupsListEndpointsRequest, fl *filter.F) ([]*ga.NetworkEndpointWithHealthStatus, error) {
  15115. klog.V(5).Infof("GCENetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): called", ctx, key)
  15116. if !key.Valid() {
  15117. klog.V(2).Infof("GCENetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  15118. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  15119. }
  15120. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "NetworkEndpointGroups")
  15121. rk := &RateLimitKey{
  15122. ProjectID: projectID,
  15123. Operation: "ListNetworkEndpoints",
  15124. Version: meta.Version("ga"),
  15125. Service: "NetworkEndpointGroups",
  15126. }
  15127. klog.V(5).Infof("GCENetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  15128. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  15129. klog.V(4).Infof("GCENetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  15130. return nil, err
  15131. }
  15132. call := g.s.GA.NetworkEndpointGroups.ListNetworkEndpoints(projectID, key.Zone, key.Name, arg0)
  15133. var all []*ga.NetworkEndpointWithHealthStatus
  15134. f := func(l *ga.NetworkEndpointGroupsListNetworkEndpoints) error {
  15135. klog.V(5).Infof("GCENetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): page %+v", ctx, key, l)
  15136. all = append(all, l.Items...)
  15137. return nil
  15138. }
  15139. if err := call.Pages(ctx, f); err != nil {
  15140. klog.V(4).Infof("GCENetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...) = %v, %v", ctx, key, nil, err)
  15141. return nil, err
  15142. }
  15143. if klog.V(4) {
  15144. klog.V(4).Infof("GCENetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...) = [%v items], %v", ctx, key, len(all), nil)
  15145. } else if klog.V(5) {
  15146. var asStr []string
  15147. for _, o := range all {
  15148. asStr = append(asStr, fmt.Sprintf("%+v", o))
  15149. }
  15150. klog.V(5).Infof("GCENetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...) = %v, %v", ctx, key, asStr, nil)
  15151. }
  15152. return all, nil
  15153. }
  15154. // Projects is an interface that allows for mocking of Projects.
  15155. type Projects interface {
  15156. // ProjectsOps is an interface with additional non-CRUD type methods.
  15157. // This interface is expected to be implemented by hand (non-autogenerated).
  15158. ProjectsOps
  15159. }
  15160. // NewMockProjects returns a new mock for Projects.
  15161. func NewMockProjects(pr ProjectRouter, objs map[meta.Key]*MockProjectsObj) *MockProjects {
  15162. mock := &MockProjects{
  15163. ProjectRouter: pr,
  15164. Objects: objs,
  15165. }
  15166. return mock
  15167. }
  15168. // MockProjects is the mock for Projects.
  15169. type MockProjects struct {
  15170. Lock sync.Mutex
  15171. ProjectRouter ProjectRouter
  15172. // Objects maintained by the mock.
  15173. Objects map[meta.Key]*MockProjectsObj
  15174. // If an entry exists for the given key and operation, then the error
  15175. // will be returned instead of the operation.
  15176. // xxxHook allow you to intercept the standard processing of the mock in
  15177. // order to add your own logic. Return (true, _, _) to prevent the normal
  15178. // execution flow of the mock. Return (false, nil, nil) to continue with
  15179. // normal mock behavior/ after the hook function executes.
  15180. // X is extra state that can be used as part of the mock. Generated code
  15181. // will not use this field.
  15182. X interface{}
  15183. }
  15184. // Obj wraps the object for use in the mock.
  15185. func (m *MockProjects) Obj(o *ga.Project) *MockProjectsObj {
  15186. return &MockProjectsObj{o}
  15187. }
  15188. // GCEProjects is a simplifying adapter for the GCE Projects.
  15189. type GCEProjects struct {
  15190. s *Service
  15191. }
  15192. // Regions is an interface that allows for mocking of Regions.
  15193. type Regions interface {
  15194. Get(ctx context.Context, key *meta.Key) (*ga.Region, error)
  15195. List(ctx context.Context, fl *filter.F) ([]*ga.Region, error)
  15196. }
  15197. // NewMockRegions returns a new mock for Regions.
  15198. func NewMockRegions(pr ProjectRouter, objs map[meta.Key]*MockRegionsObj) *MockRegions {
  15199. mock := &MockRegions{
  15200. ProjectRouter: pr,
  15201. Objects: objs,
  15202. GetError: map[meta.Key]error{},
  15203. }
  15204. return mock
  15205. }
  15206. // MockRegions is the mock for Regions.
  15207. type MockRegions struct {
  15208. Lock sync.Mutex
  15209. ProjectRouter ProjectRouter
  15210. // Objects maintained by the mock.
  15211. Objects map[meta.Key]*MockRegionsObj
  15212. // If an entry exists for the given key and operation, then the error
  15213. // will be returned instead of the operation.
  15214. GetError map[meta.Key]error
  15215. ListError *error
  15216. // xxxHook allow you to intercept the standard processing of the mock in
  15217. // order to add your own logic. Return (true, _, _) to prevent the normal
  15218. // execution flow of the mock. Return (false, nil, nil) to continue with
  15219. // normal mock behavior/ after the hook function executes.
  15220. GetHook func(ctx context.Context, key *meta.Key, m *MockRegions) (bool, *ga.Region, error)
  15221. ListHook func(ctx context.Context, fl *filter.F, m *MockRegions) (bool, []*ga.Region, error)
  15222. // X is extra state that can be used as part of the mock. Generated code
  15223. // will not use this field.
  15224. X interface{}
  15225. }
  15226. // Get returns the object from the mock.
  15227. func (m *MockRegions) Get(ctx context.Context, key *meta.Key) (*ga.Region, error) {
  15228. if m.GetHook != nil {
  15229. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  15230. klog.V(5).Infof("MockRegions.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  15231. return obj, err
  15232. }
  15233. }
  15234. if !key.Valid() {
  15235. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  15236. }
  15237. m.Lock.Lock()
  15238. defer m.Lock.Unlock()
  15239. if err, ok := m.GetError[*key]; ok {
  15240. klog.V(5).Infof("MockRegions.Get(%v, %s) = nil, %v", ctx, key, err)
  15241. return nil, err
  15242. }
  15243. if obj, ok := m.Objects[*key]; ok {
  15244. typedObj := obj.ToGA()
  15245. klog.V(5).Infof("MockRegions.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  15246. return typedObj, nil
  15247. }
  15248. err := &googleapi.Error{
  15249. Code: http.StatusNotFound,
  15250. Message: fmt.Sprintf("MockRegions %v not found", key),
  15251. }
  15252. klog.V(5).Infof("MockRegions.Get(%v, %s) = nil, %v", ctx, key, err)
  15253. return nil, err
  15254. }
  15255. // List all of the objects in the mock.
  15256. func (m *MockRegions) List(ctx context.Context, fl *filter.F) ([]*ga.Region, error) {
  15257. if m.ListHook != nil {
  15258. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  15259. klog.V(5).Infof("MockRegions.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  15260. return objs, err
  15261. }
  15262. }
  15263. m.Lock.Lock()
  15264. defer m.Lock.Unlock()
  15265. if m.ListError != nil {
  15266. err := *m.ListError
  15267. klog.V(5).Infof("MockRegions.List(%v, %v) = nil, %v", ctx, fl, err)
  15268. return nil, *m.ListError
  15269. }
  15270. var objs []*ga.Region
  15271. for _, obj := range m.Objects {
  15272. if !fl.Match(obj.ToGA()) {
  15273. continue
  15274. }
  15275. objs = append(objs, obj.ToGA())
  15276. }
  15277. klog.V(5).Infof("MockRegions.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  15278. return objs, nil
  15279. }
  15280. // Obj wraps the object for use in the mock.
  15281. func (m *MockRegions) Obj(o *ga.Region) *MockRegionsObj {
  15282. return &MockRegionsObj{o}
  15283. }
  15284. // GCERegions is a simplifying adapter for the GCE Regions.
  15285. type GCERegions struct {
  15286. s *Service
  15287. }
  15288. // Get the Region named by key.
  15289. func (g *GCERegions) Get(ctx context.Context, key *meta.Key) (*ga.Region, error) {
  15290. klog.V(5).Infof("GCERegions.Get(%v, %v): called", ctx, key)
  15291. if !key.Valid() {
  15292. klog.V(2).Infof("GCERegions.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  15293. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  15294. }
  15295. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Regions")
  15296. rk := &RateLimitKey{
  15297. ProjectID: projectID,
  15298. Operation: "Get",
  15299. Version: meta.Version("ga"),
  15300. Service: "Regions",
  15301. }
  15302. klog.V(5).Infof("GCERegions.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  15303. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  15304. klog.V(4).Infof("GCERegions.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  15305. return nil, err
  15306. }
  15307. call := g.s.GA.Regions.Get(projectID, key.Name)
  15308. call.Context(ctx)
  15309. v, err := call.Do()
  15310. klog.V(4).Infof("GCERegions.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  15311. return v, err
  15312. }
  15313. // List all Region objects.
  15314. func (g *GCERegions) List(ctx context.Context, fl *filter.F) ([]*ga.Region, error) {
  15315. klog.V(5).Infof("GCERegions.List(%v, %v) called", ctx, fl)
  15316. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Regions")
  15317. rk := &RateLimitKey{
  15318. ProjectID: projectID,
  15319. Operation: "List",
  15320. Version: meta.Version("ga"),
  15321. Service: "Regions",
  15322. }
  15323. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  15324. return nil, err
  15325. }
  15326. klog.V(5).Infof("GCERegions.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  15327. call := g.s.GA.Regions.List(projectID)
  15328. if fl != filter.None {
  15329. call.Filter(fl.String())
  15330. }
  15331. var all []*ga.Region
  15332. f := func(l *ga.RegionList) error {
  15333. klog.V(5).Infof("GCERegions.List(%v, ..., %v): page %+v", ctx, fl, l)
  15334. all = append(all, l.Items...)
  15335. return nil
  15336. }
  15337. if err := call.Pages(ctx, f); err != nil {
  15338. klog.V(4).Infof("GCERegions.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  15339. return nil, err
  15340. }
  15341. if klog.V(4) {
  15342. klog.V(4).Infof("GCERegions.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  15343. } else if klog.V(5) {
  15344. var asStr []string
  15345. for _, o := range all {
  15346. asStr = append(asStr, fmt.Sprintf("%+v", o))
  15347. }
  15348. klog.V(5).Infof("GCERegions.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  15349. }
  15350. return all, nil
  15351. }
  15352. // Routes is an interface that allows for mocking of Routes.
  15353. type Routes interface {
  15354. Get(ctx context.Context, key *meta.Key) (*ga.Route, error)
  15355. List(ctx context.Context, fl *filter.F) ([]*ga.Route, error)
  15356. Insert(ctx context.Context, key *meta.Key, obj *ga.Route) error
  15357. Delete(ctx context.Context, key *meta.Key) error
  15358. }
  15359. // NewMockRoutes returns a new mock for Routes.
  15360. func NewMockRoutes(pr ProjectRouter, objs map[meta.Key]*MockRoutesObj) *MockRoutes {
  15361. mock := &MockRoutes{
  15362. ProjectRouter: pr,
  15363. Objects: objs,
  15364. GetError: map[meta.Key]error{},
  15365. InsertError: map[meta.Key]error{},
  15366. DeleteError: map[meta.Key]error{},
  15367. }
  15368. return mock
  15369. }
  15370. // MockRoutes is the mock for Routes.
  15371. type MockRoutes struct {
  15372. Lock sync.Mutex
  15373. ProjectRouter ProjectRouter
  15374. // Objects maintained by the mock.
  15375. Objects map[meta.Key]*MockRoutesObj
  15376. // If an entry exists for the given key and operation, then the error
  15377. // will be returned instead of the operation.
  15378. GetError map[meta.Key]error
  15379. ListError *error
  15380. InsertError map[meta.Key]error
  15381. DeleteError map[meta.Key]error
  15382. // xxxHook allow you to intercept the standard processing of the mock in
  15383. // order to add your own logic. Return (true, _, _) to prevent the normal
  15384. // execution flow of the mock. Return (false, nil, nil) to continue with
  15385. // normal mock behavior/ after the hook function executes.
  15386. GetHook func(ctx context.Context, key *meta.Key, m *MockRoutes) (bool, *ga.Route, error)
  15387. ListHook func(ctx context.Context, fl *filter.F, m *MockRoutes) (bool, []*ga.Route, error)
  15388. InsertHook func(ctx context.Context, key *meta.Key, obj *ga.Route, m *MockRoutes) (bool, error)
  15389. DeleteHook func(ctx context.Context, key *meta.Key, m *MockRoutes) (bool, error)
  15390. // X is extra state that can be used as part of the mock. Generated code
  15391. // will not use this field.
  15392. X interface{}
  15393. }
  15394. // Get returns the object from the mock.
  15395. func (m *MockRoutes) Get(ctx context.Context, key *meta.Key) (*ga.Route, error) {
  15396. if m.GetHook != nil {
  15397. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  15398. klog.V(5).Infof("MockRoutes.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  15399. return obj, err
  15400. }
  15401. }
  15402. if !key.Valid() {
  15403. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  15404. }
  15405. m.Lock.Lock()
  15406. defer m.Lock.Unlock()
  15407. if err, ok := m.GetError[*key]; ok {
  15408. klog.V(5).Infof("MockRoutes.Get(%v, %s) = nil, %v", ctx, key, err)
  15409. return nil, err
  15410. }
  15411. if obj, ok := m.Objects[*key]; ok {
  15412. typedObj := obj.ToGA()
  15413. klog.V(5).Infof("MockRoutes.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  15414. return typedObj, nil
  15415. }
  15416. err := &googleapi.Error{
  15417. Code: http.StatusNotFound,
  15418. Message: fmt.Sprintf("MockRoutes %v not found", key),
  15419. }
  15420. klog.V(5).Infof("MockRoutes.Get(%v, %s) = nil, %v", ctx, key, err)
  15421. return nil, err
  15422. }
  15423. // List all of the objects in the mock.
  15424. func (m *MockRoutes) List(ctx context.Context, fl *filter.F) ([]*ga.Route, error) {
  15425. if m.ListHook != nil {
  15426. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  15427. klog.V(5).Infof("MockRoutes.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  15428. return objs, err
  15429. }
  15430. }
  15431. m.Lock.Lock()
  15432. defer m.Lock.Unlock()
  15433. if m.ListError != nil {
  15434. err := *m.ListError
  15435. klog.V(5).Infof("MockRoutes.List(%v, %v) = nil, %v", ctx, fl, err)
  15436. return nil, *m.ListError
  15437. }
  15438. var objs []*ga.Route
  15439. for _, obj := range m.Objects {
  15440. if !fl.Match(obj.ToGA()) {
  15441. continue
  15442. }
  15443. objs = append(objs, obj.ToGA())
  15444. }
  15445. klog.V(5).Infof("MockRoutes.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  15446. return objs, nil
  15447. }
  15448. // Insert is a mock for inserting/creating a new object.
  15449. func (m *MockRoutes) Insert(ctx context.Context, key *meta.Key, obj *ga.Route) error {
  15450. if m.InsertHook != nil {
  15451. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  15452. klog.V(5).Infof("MockRoutes.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  15453. return err
  15454. }
  15455. }
  15456. if !key.Valid() {
  15457. return fmt.Errorf("invalid GCE key (%+v)", key)
  15458. }
  15459. m.Lock.Lock()
  15460. defer m.Lock.Unlock()
  15461. if err, ok := m.InsertError[*key]; ok {
  15462. klog.V(5).Infof("MockRoutes.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  15463. return err
  15464. }
  15465. if _, ok := m.Objects[*key]; ok {
  15466. err := &googleapi.Error{
  15467. Code: http.StatusConflict,
  15468. Message: fmt.Sprintf("MockRoutes %v exists", key),
  15469. }
  15470. klog.V(5).Infof("MockRoutes.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  15471. return err
  15472. }
  15473. obj.Name = key.Name
  15474. projectID := m.ProjectRouter.ProjectID(ctx, "ga", "routes")
  15475. obj.SelfLink = SelfLink(meta.VersionGA, projectID, "routes", key)
  15476. m.Objects[*key] = &MockRoutesObj{obj}
  15477. klog.V(5).Infof("MockRoutes.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  15478. return nil
  15479. }
  15480. // Delete is a mock for deleting the object.
  15481. func (m *MockRoutes) Delete(ctx context.Context, key *meta.Key) error {
  15482. if m.DeleteHook != nil {
  15483. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  15484. klog.V(5).Infof("MockRoutes.Delete(%v, %v) = %v", ctx, key, err)
  15485. return err
  15486. }
  15487. }
  15488. if !key.Valid() {
  15489. return fmt.Errorf("invalid GCE key (%+v)", key)
  15490. }
  15491. m.Lock.Lock()
  15492. defer m.Lock.Unlock()
  15493. if err, ok := m.DeleteError[*key]; ok {
  15494. klog.V(5).Infof("MockRoutes.Delete(%v, %v) = %v", ctx, key, err)
  15495. return err
  15496. }
  15497. if _, ok := m.Objects[*key]; !ok {
  15498. err := &googleapi.Error{
  15499. Code: http.StatusNotFound,
  15500. Message: fmt.Sprintf("MockRoutes %v not found", key),
  15501. }
  15502. klog.V(5).Infof("MockRoutes.Delete(%v, %v) = %v", ctx, key, err)
  15503. return err
  15504. }
  15505. delete(m.Objects, *key)
  15506. klog.V(5).Infof("MockRoutes.Delete(%v, %v) = nil", ctx, key)
  15507. return nil
  15508. }
  15509. // Obj wraps the object for use in the mock.
  15510. func (m *MockRoutes) Obj(o *ga.Route) *MockRoutesObj {
  15511. return &MockRoutesObj{o}
  15512. }
  15513. // GCERoutes is a simplifying adapter for the GCE Routes.
  15514. type GCERoutes struct {
  15515. s *Service
  15516. }
  15517. // Get the Route named by key.
  15518. func (g *GCERoutes) Get(ctx context.Context, key *meta.Key) (*ga.Route, error) {
  15519. klog.V(5).Infof("GCERoutes.Get(%v, %v): called", ctx, key)
  15520. if !key.Valid() {
  15521. klog.V(2).Infof("GCERoutes.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  15522. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  15523. }
  15524. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Routes")
  15525. rk := &RateLimitKey{
  15526. ProjectID: projectID,
  15527. Operation: "Get",
  15528. Version: meta.Version("ga"),
  15529. Service: "Routes",
  15530. }
  15531. klog.V(5).Infof("GCERoutes.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  15532. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  15533. klog.V(4).Infof("GCERoutes.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  15534. return nil, err
  15535. }
  15536. call := g.s.GA.Routes.Get(projectID, key.Name)
  15537. call.Context(ctx)
  15538. v, err := call.Do()
  15539. klog.V(4).Infof("GCERoutes.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  15540. return v, err
  15541. }
  15542. // List all Route objects.
  15543. func (g *GCERoutes) List(ctx context.Context, fl *filter.F) ([]*ga.Route, error) {
  15544. klog.V(5).Infof("GCERoutes.List(%v, %v) called", ctx, fl)
  15545. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Routes")
  15546. rk := &RateLimitKey{
  15547. ProjectID: projectID,
  15548. Operation: "List",
  15549. Version: meta.Version("ga"),
  15550. Service: "Routes",
  15551. }
  15552. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  15553. return nil, err
  15554. }
  15555. klog.V(5).Infof("GCERoutes.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  15556. call := g.s.GA.Routes.List(projectID)
  15557. if fl != filter.None {
  15558. call.Filter(fl.String())
  15559. }
  15560. var all []*ga.Route
  15561. f := func(l *ga.RouteList) error {
  15562. klog.V(5).Infof("GCERoutes.List(%v, ..., %v): page %+v", ctx, fl, l)
  15563. all = append(all, l.Items...)
  15564. return nil
  15565. }
  15566. if err := call.Pages(ctx, f); err != nil {
  15567. klog.V(4).Infof("GCERoutes.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  15568. return nil, err
  15569. }
  15570. if klog.V(4) {
  15571. klog.V(4).Infof("GCERoutes.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  15572. } else if klog.V(5) {
  15573. var asStr []string
  15574. for _, o := range all {
  15575. asStr = append(asStr, fmt.Sprintf("%+v", o))
  15576. }
  15577. klog.V(5).Infof("GCERoutes.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  15578. }
  15579. return all, nil
  15580. }
  15581. // Insert Route with key of value obj.
  15582. func (g *GCERoutes) Insert(ctx context.Context, key *meta.Key, obj *ga.Route) error {
  15583. klog.V(5).Infof("GCERoutes.Insert(%v, %v, %+v): called", ctx, key, obj)
  15584. if !key.Valid() {
  15585. klog.V(2).Infof("GCERoutes.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  15586. return fmt.Errorf("invalid GCE key (%+v)", key)
  15587. }
  15588. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Routes")
  15589. rk := &RateLimitKey{
  15590. ProjectID: projectID,
  15591. Operation: "Insert",
  15592. Version: meta.Version("ga"),
  15593. Service: "Routes",
  15594. }
  15595. klog.V(5).Infof("GCERoutes.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  15596. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  15597. klog.V(4).Infof("GCERoutes.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  15598. return err
  15599. }
  15600. obj.Name = key.Name
  15601. call := g.s.GA.Routes.Insert(projectID, obj)
  15602. call.Context(ctx)
  15603. op, err := call.Do()
  15604. if err != nil {
  15605. klog.V(4).Infof("GCERoutes.Insert(%v, %v, ...) = %+v", ctx, key, err)
  15606. return err
  15607. }
  15608. err = g.s.WaitForCompletion(ctx, op)
  15609. klog.V(4).Infof("GCERoutes.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  15610. return err
  15611. }
  15612. // Delete the Route referenced by key.
  15613. func (g *GCERoutes) Delete(ctx context.Context, key *meta.Key) error {
  15614. klog.V(5).Infof("GCERoutes.Delete(%v, %v): called", ctx, key)
  15615. if !key.Valid() {
  15616. klog.V(2).Infof("GCERoutes.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  15617. return fmt.Errorf("invalid GCE key (%+v)", key)
  15618. }
  15619. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Routes")
  15620. rk := &RateLimitKey{
  15621. ProjectID: projectID,
  15622. Operation: "Delete",
  15623. Version: meta.Version("ga"),
  15624. Service: "Routes",
  15625. }
  15626. klog.V(5).Infof("GCERoutes.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  15627. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  15628. klog.V(4).Infof("GCERoutes.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  15629. return err
  15630. }
  15631. call := g.s.GA.Routes.Delete(projectID, key.Name)
  15632. call.Context(ctx)
  15633. op, err := call.Do()
  15634. if err != nil {
  15635. klog.V(4).Infof("GCERoutes.Delete(%v, %v) = %v", ctx, key, err)
  15636. return err
  15637. }
  15638. err = g.s.WaitForCompletion(ctx, op)
  15639. klog.V(4).Infof("GCERoutes.Delete(%v, %v) = %v", ctx, key, err)
  15640. return err
  15641. }
  15642. // BetaSecurityPolicies is an interface that allows for mocking of SecurityPolicies.
  15643. type BetaSecurityPolicies interface {
  15644. Get(ctx context.Context, key *meta.Key) (*beta.SecurityPolicy, error)
  15645. List(ctx context.Context, fl *filter.F) ([]*beta.SecurityPolicy, error)
  15646. Insert(ctx context.Context, key *meta.Key, obj *beta.SecurityPolicy) error
  15647. Delete(ctx context.Context, key *meta.Key) error
  15648. AddRule(context.Context, *meta.Key, *beta.SecurityPolicyRule) error
  15649. GetRule(context.Context, *meta.Key) (*beta.SecurityPolicyRule, error)
  15650. Patch(context.Context, *meta.Key, *beta.SecurityPolicy) error
  15651. PatchRule(context.Context, *meta.Key, *beta.SecurityPolicyRule) error
  15652. RemoveRule(context.Context, *meta.Key) error
  15653. }
  15654. // NewMockBetaSecurityPolicies returns a new mock for SecurityPolicies.
  15655. func NewMockBetaSecurityPolicies(pr ProjectRouter, objs map[meta.Key]*MockSecurityPoliciesObj) *MockBetaSecurityPolicies {
  15656. mock := &MockBetaSecurityPolicies{
  15657. ProjectRouter: pr,
  15658. Objects: objs,
  15659. GetError: map[meta.Key]error{},
  15660. InsertError: map[meta.Key]error{},
  15661. DeleteError: map[meta.Key]error{},
  15662. }
  15663. return mock
  15664. }
  15665. // MockBetaSecurityPolicies is the mock for SecurityPolicies.
  15666. type MockBetaSecurityPolicies struct {
  15667. Lock sync.Mutex
  15668. ProjectRouter ProjectRouter
  15669. // Objects maintained by the mock.
  15670. Objects map[meta.Key]*MockSecurityPoliciesObj
  15671. // If an entry exists for the given key and operation, then the error
  15672. // will be returned instead of the operation.
  15673. GetError map[meta.Key]error
  15674. ListError *error
  15675. InsertError map[meta.Key]error
  15676. DeleteError map[meta.Key]error
  15677. // xxxHook allow you to intercept the standard processing of the mock in
  15678. // order to add your own logic. Return (true, _, _) to prevent the normal
  15679. // execution flow of the mock. Return (false, nil, nil) to continue with
  15680. // normal mock behavior/ after the hook function executes.
  15681. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaSecurityPolicies) (bool, *beta.SecurityPolicy, error)
  15682. ListHook func(ctx context.Context, fl *filter.F, m *MockBetaSecurityPolicies) (bool, []*beta.SecurityPolicy, error)
  15683. InsertHook func(ctx context.Context, key *meta.Key, obj *beta.SecurityPolicy, m *MockBetaSecurityPolicies) (bool, error)
  15684. DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaSecurityPolicies) (bool, error)
  15685. AddRuleHook func(context.Context, *meta.Key, *beta.SecurityPolicyRule, *MockBetaSecurityPolicies) error
  15686. GetRuleHook func(context.Context, *meta.Key, *MockBetaSecurityPolicies) (*beta.SecurityPolicyRule, error)
  15687. PatchHook func(context.Context, *meta.Key, *beta.SecurityPolicy, *MockBetaSecurityPolicies) error
  15688. PatchRuleHook func(context.Context, *meta.Key, *beta.SecurityPolicyRule, *MockBetaSecurityPolicies) error
  15689. RemoveRuleHook func(context.Context, *meta.Key, *MockBetaSecurityPolicies) error
  15690. // X is extra state that can be used as part of the mock. Generated code
  15691. // will not use this field.
  15692. X interface{}
  15693. }
  15694. // Get returns the object from the mock.
  15695. func (m *MockBetaSecurityPolicies) Get(ctx context.Context, key *meta.Key) (*beta.SecurityPolicy, error) {
  15696. if m.GetHook != nil {
  15697. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  15698. klog.V(5).Infof("MockBetaSecurityPolicies.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  15699. return obj, err
  15700. }
  15701. }
  15702. if !key.Valid() {
  15703. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  15704. }
  15705. m.Lock.Lock()
  15706. defer m.Lock.Unlock()
  15707. if err, ok := m.GetError[*key]; ok {
  15708. klog.V(5).Infof("MockBetaSecurityPolicies.Get(%v, %s) = nil, %v", ctx, key, err)
  15709. return nil, err
  15710. }
  15711. if obj, ok := m.Objects[*key]; ok {
  15712. typedObj := obj.ToBeta()
  15713. klog.V(5).Infof("MockBetaSecurityPolicies.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  15714. return typedObj, nil
  15715. }
  15716. err := &googleapi.Error{
  15717. Code: http.StatusNotFound,
  15718. Message: fmt.Sprintf("MockBetaSecurityPolicies %v not found", key),
  15719. }
  15720. klog.V(5).Infof("MockBetaSecurityPolicies.Get(%v, %s) = nil, %v", ctx, key, err)
  15721. return nil, err
  15722. }
  15723. // List all of the objects in the mock.
  15724. func (m *MockBetaSecurityPolicies) List(ctx context.Context, fl *filter.F) ([]*beta.SecurityPolicy, error) {
  15725. if m.ListHook != nil {
  15726. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  15727. klog.V(5).Infof("MockBetaSecurityPolicies.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  15728. return objs, err
  15729. }
  15730. }
  15731. m.Lock.Lock()
  15732. defer m.Lock.Unlock()
  15733. if m.ListError != nil {
  15734. err := *m.ListError
  15735. klog.V(5).Infof("MockBetaSecurityPolicies.List(%v, %v) = nil, %v", ctx, fl, err)
  15736. return nil, *m.ListError
  15737. }
  15738. var objs []*beta.SecurityPolicy
  15739. for _, obj := range m.Objects {
  15740. if !fl.Match(obj.ToBeta()) {
  15741. continue
  15742. }
  15743. objs = append(objs, obj.ToBeta())
  15744. }
  15745. klog.V(5).Infof("MockBetaSecurityPolicies.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  15746. return objs, nil
  15747. }
  15748. // Insert is a mock for inserting/creating a new object.
  15749. func (m *MockBetaSecurityPolicies) Insert(ctx context.Context, key *meta.Key, obj *beta.SecurityPolicy) error {
  15750. if m.InsertHook != nil {
  15751. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  15752. klog.V(5).Infof("MockBetaSecurityPolicies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  15753. return err
  15754. }
  15755. }
  15756. if !key.Valid() {
  15757. return fmt.Errorf("invalid GCE key (%+v)", key)
  15758. }
  15759. m.Lock.Lock()
  15760. defer m.Lock.Unlock()
  15761. if err, ok := m.InsertError[*key]; ok {
  15762. klog.V(5).Infof("MockBetaSecurityPolicies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  15763. return err
  15764. }
  15765. if _, ok := m.Objects[*key]; ok {
  15766. err := &googleapi.Error{
  15767. Code: http.StatusConflict,
  15768. Message: fmt.Sprintf("MockBetaSecurityPolicies %v exists", key),
  15769. }
  15770. klog.V(5).Infof("MockBetaSecurityPolicies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  15771. return err
  15772. }
  15773. obj.Name = key.Name
  15774. projectID := m.ProjectRouter.ProjectID(ctx, "beta", "securityPolicies")
  15775. obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "securityPolicies", key)
  15776. m.Objects[*key] = &MockSecurityPoliciesObj{obj}
  15777. klog.V(5).Infof("MockBetaSecurityPolicies.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  15778. return nil
  15779. }
  15780. // Delete is a mock for deleting the object.
  15781. func (m *MockBetaSecurityPolicies) Delete(ctx context.Context, key *meta.Key) error {
  15782. if m.DeleteHook != nil {
  15783. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  15784. klog.V(5).Infof("MockBetaSecurityPolicies.Delete(%v, %v) = %v", ctx, key, err)
  15785. return err
  15786. }
  15787. }
  15788. if !key.Valid() {
  15789. return fmt.Errorf("invalid GCE key (%+v)", key)
  15790. }
  15791. m.Lock.Lock()
  15792. defer m.Lock.Unlock()
  15793. if err, ok := m.DeleteError[*key]; ok {
  15794. klog.V(5).Infof("MockBetaSecurityPolicies.Delete(%v, %v) = %v", ctx, key, err)
  15795. return err
  15796. }
  15797. if _, ok := m.Objects[*key]; !ok {
  15798. err := &googleapi.Error{
  15799. Code: http.StatusNotFound,
  15800. Message: fmt.Sprintf("MockBetaSecurityPolicies %v not found", key),
  15801. }
  15802. klog.V(5).Infof("MockBetaSecurityPolicies.Delete(%v, %v) = %v", ctx, key, err)
  15803. return err
  15804. }
  15805. delete(m.Objects, *key)
  15806. klog.V(5).Infof("MockBetaSecurityPolicies.Delete(%v, %v) = nil", ctx, key)
  15807. return nil
  15808. }
  15809. // Obj wraps the object for use in the mock.
  15810. func (m *MockBetaSecurityPolicies) Obj(o *beta.SecurityPolicy) *MockSecurityPoliciesObj {
  15811. return &MockSecurityPoliciesObj{o}
  15812. }
  15813. // AddRule is a mock for the corresponding method.
  15814. func (m *MockBetaSecurityPolicies) AddRule(ctx context.Context, key *meta.Key, arg0 *beta.SecurityPolicyRule) error {
  15815. if m.AddRuleHook != nil {
  15816. return m.AddRuleHook(ctx, key, arg0, m)
  15817. }
  15818. return nil
  15819. }
  15820. // GetRule is a mock for the corresponding method.
  15821. func (m *MockBetaSecurityPolicies) GetRule(ctx context.Context, key *meta.Key) (*beta.SecurityPolicyRule, error) {
  15822. if m.GetRuleHook != nil {
  15823. return m.GetRuleHook(ctx, key, m)
  15824. }
  15825. return nil, fmt.Errorf("GetRuleHook must be set")
  15826. }
  15827. // Patch is a mock for the corresponding method.
  15828. func (m *MockBetaSecurityPolicies) Patch(ctx context.Context, key *meta.Key, arg0 *beta.SecurityPolicy) error {
  15829. if m.PatchHook != nil {
  15830. return m.PatchHook(ctx, key, arg0, m)
  15831. }
  15832. return nil
  15833. }
  15834. // PatchRule is a mock for the corresponding method.
  15835. func (m *MockBetaSecurityPolicies) PatchRule(ctx context.Context, key *meta.Key, arg0 *beta.SecurityPolicyRule) error {
  15836. if m.PatchRuleHook != nil {
  15837. return m.PatchRuleHook(ctx, key, arg0, m)
  15838. }
  15839. return nil
  15840. }
  15841. // RemoveRule is a mock for the corresponding method.
  15842. func (m *MockBetaSecurityPolicies) RemoveRule(ctx context.Context, key *meta.Key) error {
  15843. if m.RemoveRuleHook != nil {
  15844. return m.RemoveRuleHook(ctx, key, m)
  15845. }
  15846. return nil
  15847. }
  15848. // GCEBetaSecurityPolicies is a simplifying adapter for the GCE SecurityPolicies.
  15849. type GCEBetaSecurityPolicies struct {
  15850. s *Service
  15851. }
  15852. // Get the SecurityPolicy named by key.
  15853. func (g *GCEBetaSecurityPolicies) Get(ctx context.Context, key *meta.Key) (*beta.SecurityPolicy, error) {
  15854. klog.V(5).Infof("GCEBetaSecurityPolicies.Get(%v, %v): called", ctx, key)
  15855. if !key.Valid() {
  15856. klog.V(2).Infof("GCEBetaSecurityPolicies.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  15857. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  15858. }
  15859. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SecurityPolicies")
  15860. rk := &RateLimitKey{
  15861. ProjectID: projectID,
  15862. Operation: "Get",
  15863. Version: meta.Version("beta"),
  15864. Service: "SecurityPolicies",
  15865. }
  15866. klog.V(5).Infof("GCEBetaSecurityPolicies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  15867. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  15868. klog.V(4).Infof("GCEBetaSecurityPolicies.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  15869. return nil, err
  15870. }
  15871. call := g.s.Beta.SecurityPolicies.Get(projectID, key.Name)
  15872. call.Context(ctx)
  15873. v, err := call.Do()
  15874. klog.V(4).Infof("GCEBetaSecurityPolicies.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  15875. return v, err
  15876. }
  15877. // List all SecurityPolicy objects.
  15878. func (g *GCEBetaSecurityPolicies) List(ctx context.Context, fl *filter.F) ([]*beta.SecurityPolicy, error) {
  15879. klog.V(5).Infof("GCEBetaSecurityPolicies.List(%v, %v) called", ctx, fl)
  15880. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SecurityPolicies")
  15881. rk := &RateLimitKey{
  15882. ProjectID: projectID,
  15883. Operation: "List",
  15884. Version: meta.Version("beta"),
  15885. Service: "SecurityPolicies",
  15886. }
  15887. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  15888. return nil, err
  15889. }
  15890. klog.V(5).Infof("GCEBetaSecurityPolicies.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  15891. call := g.s.Beta.SecurityPolicies.List(projectID)
  15892. if fl != filter.None {
  15893. call.Filter(fl.String())
  15894. }
  15895. var all []*beta.SecurityPolicy
  15896. f := func(l *beta.SecurityPolicyList) error {
  15897. klog.V(5).Infof("GCEBetaSecurityPolicies.List(%v, ..., %v): page %+v", ctx, fl, l)
  15898. all = append(all, l.Items...)
  15899. return nil
  15900. }
  15901. if err := call.Pages(ctx, f); err != nil {
  15902. klog.V(4).Infof("GCEBetaSecurityPolicies.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  15903. return nil, err
  15904. }
  15905. if klog.V(4) {
  15906. klog.V(4).Infof("GCEBetaSecurityPolicies.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  15907. } else if klog.V(5) {
  15908. var asStr []string
  15909. for _, o := range all {
  15910. asStr = append(asStr, fmt.Sprintf("%+v", o))
  15911. }
  15912. klog.V(5).Infof("GCEBetaSecurityPolicies.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  15913. }
  15914. return all, nil
  15915. }
  15916. // Insert SecurityPolicy with key of value obj.
  15917. func (g *GCEBetaSecurityPolicies) Insert(ctx context.Context, key *meta.Key, obj *beta.SecurityPolicy) error {
  15918. klog.V(5).Infof("GCEBetaSecurityPolicies.Insert(%v, %v, %+v): called", ctx, key, obj)
  15919. if !key.Valid() {
  15920. klog.V(2).Infof("GCEBetaSecurityPolicies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  15921. return fmt.Errorf("invalid GCE key (%+v)", key)
  15922. }
  15923. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SecurityPolicies")
  15924. rk := &RateLimitKey{
  15925. ProjectID: projectID,
  15926. Operation: "Insert",
  15927. Version: meta.Version("beta"),
  15928. Service: "SecurityPolicies",
  15929. }
  15930. klog.V(5).Infof("GCEBetaSecurityPolicies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  15931. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  15932. klog.V(4).Infof("GCEBetaSecurityPolicies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  15933. return err
  15934. }
  15935. obj.Name = key.Name
  15936. call := g.s.Beta.SecurityPolicies.Insert(projectID, obj)
  15937. call.Context(ctx)
  15938. op, err := call.Do()
  15939. if err != nil {
  15940. klog.V(4).Infof("GCEBetaSecurityPolicies.Insert(%v, %v, ...) = %+v", ctx, key, err)
  15941. return err
  15942. }
  15943. err = g.s.WaitForCompletion(ctx, op)
  15944. klog.V(4).Infof("GCEBetaSecurityPolicies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  15945. return err
  15946. }
  15947. // Delete the SecurityPolicy referenced by key.
  15948. func (g *GCEBetaSecurityPolicies) Delete(ctx context.Context, key *meta.Key) error {
  15949. klog.V(5).Infof("GCEBetaSecurityPolicies.Delete(%v, %v): called", ctx, key)
  15950. if !key.Valid() {
  15951. klog.V(2).Infof("GCEBetaSecurityPolicies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  15952. return fmt.Errorf("invalid GCE key (%+v)", key)
  15953. }
  15954. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SecurityPolicies")
  15955. rk := &RateLimitKey{
  15956. ProjectID: projectID,
  15957. Operation: "Delete",
  15958. Version: meta.Version("beta"),
  15959. Service: "SecurityPolicies",
  15960. }
  15961. klog.V(5).Infof("GCEBetaSecurityPolicies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  15962. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  15963. klog.V(4).Infof("GCEBetaSecurityPolicies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  15964. return err
  15965. }
  15966. call := g.s.Beta.SecurityPolicies.Delete(projectID, key.Name)
  15967. call.Context(ctx)
  15968. op, err := call.Do()
  15969. if err != nil {
  15970. klog.V(4).Infof("GCEBetaSecurityPolicies.Delete(%v, %v) = %v", ctx, key, err)
  15971. return err
  15972. }
  15973. err = g.s.WaitForCompletion(ctx, op)
  15974. klog.V(4).Infof("GCEBetaSecurityPolicies.Delete(%v, %v) = %v", ctx, key, err)
  15975. return err
  15976. }
  15977. // AddRule is a method on GCEBetaSecurityPolicies.
  15978. func (g *GCEBetaSecurityPolicies) AddRule(ctx context.Context, key *meta.Key, arg0 *beta.SecurityPolicyRule) error {
  15979. klog.V(5).Infof("GCEBetaSecurityPolicies.AddRule(%v, %v, ...): called", ctx, key)
  15980. if !key.Valid() {
  15981. klog.V(2).Infof("GCEBetaSecurityPolicies.AddRule(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  15982. return fmt.Errorf("invalid GCE key (%+v)", key)
  15983. }
  15984. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SecurityPolicies")
  15985. rk := &RateLimitKey{
  15986. ProjectID: projectID,
  15987. Operation: "AddRule",
  15988. Version: meta.Version("beta"),
  15989. Service: "SecurityPolicies",
  15990. }
  15991. klog.V(5).Infof("GCEBetaSecurityPolicies.AddRule(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  15992. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  15993. klog.V(4).Infof("GCEBetaSecurityPolicies.AddRule(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  15994. return err
  15995. }
  15996. call := g.s.Beta.SecurityPolicies.AddRule(projectID, key.Name, arg0)
  15997. call.Context(ctx)
  15998. op, err := call.Do()
  15999. if err != nil {
  16000. klog.V(4).Infof("GCEBetaSecurityPolicies.AddRule(%v, %v, ...) = %+v", ctx, key, err)
  16001. return err
  16002. }
  16003. err = g.s.WaitForCompletion(ctx, op)
  16004. klog.V(4).Infof("GCEBetaSecurityPolicies.AddRule(%v, %v, ...) = %+v", ctx, key, err)
  16005. return err
  16006. }
  16007. // GetRule is a method on GCEBetaSecurityPolicies.
  16008. func (g *GCEBetaSecurityPolicies) GetRule(ctx context.Context, key *meta.Key) (*beta.SecurityPolicyRule, error) {
  16009. klog.V(5).Infof("GCEBetaSecurityPolicies.GetRule(%v, %v, ...): called", ctx, key)
  16010. if !key.Valid() {
  16011. klog.V(2).Infof("GCEBetaSecurityPolicies.GetRule(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  16012. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  16013. }
  16014. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SecurityPolicies")
  16015. rk := &RateLimitKey{
  16016. ProjectID: projectID,
  16017. Operation: "GetRule",
  16018. Version: meta.Version("beta"),
  16019. Service: "SecurityPolicies",
  16020. }
  16021. klog.V(5).Infof("GCEBetaSecurityPolicies.GetRule(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  16022. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  16023. klog.V(4).Infof("GCEBetaSecurityPolicies.GetRule(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  16024. return nil, err
  16025. }
  16026. call := g.s.Beta.SecurityPolicies.GetRule(projectID, key.Name)
  16027. call.Context(ctx)
  16028. v, err := call.Do()
  16029. klog.V(4).Infof("GCEBetaSecurityPolicies.GetRule(%v, %v, ...) = %+v, %v", ctx, key, v, err)
  16030. return v, err
  16031. }
  16032. // Patch is a method on GCEBetaSecurityPolicies.
  16033. func (g *GCEBetaSecurityPolicies) Patch(ctx context.Context, key *meta.Key, arg0 *beta.SecurityPolicy) error {
  16034. klog.V(5).Infof("GCEBetaSecurityPolicies.Patch(%v, %v, ...): called", ctx, key)
  16035. if !key.Valid() {
  16036. klog.V(2).Infof("GCEBetaSecurityPolicies.Patch(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  16037. return fmt.Errorf("invalid GCE key (%+v)", key)
  16038. }
  16039. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SecurityPolicies")
  16040. rk := &RateLimitKey{
  16041. ProjectID: projectID,
  16042. Operation: "Patch",
  16043. Version: meta.Version("beta"),
  16044. Service: "SecurityPolicies",
  16045. }
  16046. klog.V(5).Infof("GCEBetaSecurityPolicies.Patch(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  16047. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  16048. klog.V(4).Infof("GCEBetaSecurityPolicies.Patch(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  16049. return err
  16050. }
  16051. call := g.s.Beta.SecurityPolicies.Patch(projectID, key.Name, arg0)
  16052. call.Context(ctx)
  16053. op, err := call.Do()
  16054. if err != nil {
  16055. klog.V(4).Infof("GCEBetaSecurityPolicies.Patch(%v, %v, ...) = %+v", ctx, key, err)
  16056. return err
  16057. }
  16058. err = g.s.WaitForCompletion(ctx, op)
  16059. klog.V(4).Infof("GCEBetaSecurityPolicies.Patch(%v, %v, ...) = %+v", ctx, key, err)
  16060. return err
  16061. }
  16062. // PatchRule is a method on GCEBetaSecurityPolicies.
  16063. func (g *GCEBetaSecurityPolicies) PatchRule(ctx context.Context, key *meta.Key, arg0 *beta.SecurityPolicyRule) error {
  16064. klog.V(5).Infof("GCEBetaSecurityPolicies.PatchRule(%v, %v, ...): called", ctx, key)
  16065. if !key.Valid() {
  16066. klog.V(2).Infof("GCEBetaSecurityPolicies.PatchRule(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  16067. return fmt.Errorf("invalid GCE key (%+v)", key)
  16068. }
  16069. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SecurityPolicies")
  16070. rk := &RateLimitKey{
  16071. ProjectID: projectID,
  16072. Operation: "PatchRule",
  16073. Version: meta.Version("beta"),
  16074. Service: "SecurityPolicies",
  16075. }
  16076. klog.V(5).Infof("GCEBetaSecurityPolicies.PatchRule(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  16077. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  16078. klog.V(4).Infof("GCEBetaSecurityPolicies.PatchRule(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  16079. return err
  16080. }
  16081. call := g.s.Beta.SecurityPolicies.PatchRule(projectID, key.Name, arg0)
  16082. call.Context(ctx)
  16083. op, err := call.Do()
  16084. if err != nil {
  16085. klog.V(4).Infof("GCEBetaSecurityPolicies.PatchRule(%v, %v, ...) = %+v", ctx, key, err)
  16086. return err
  16087. }
  16088. err = g.s.WaitForCompletion(ctx, op)
  16089. klog.V(4).Infof("GCEBetaSecurityPolicies.PatchRule(%v, %v, ...) = %+v", ctx, key, err)
  16090. return err
  16091. }
  16092. // RemoveRule is a method on GCEBetaSecurityPolicies.
  16093. func (g *GCEBetaSecurityPolicies) RemoveRule(ctx context.Context, key *meta.Key) error {
  16094. klog.V(5).Infof("GCEBetaSecurityPolicies.RemoveRule(%v, %v, ...): called", ctx, key)
  16095. if !key.Valid() {
  16096. klog.V(2).Infof("GCEBetaSecurityPolicies.RemoveRule(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  16097. return fmt.Errorf("invalid GCE key (%+v)", key)
  16098. }
  16099. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SecurityPolicies")
  16100. rk := &RateLimitKey{
  16101. ProjectID: projectID,
  16102. Operation: "RemoveRule",
  16103. Version: meta.Version("beta"),
  16104. Service: "SecurityPolicies",
  16105. }
  16106. klog.V(5).Infof("GCEBetaSecurityPolicies.RemoveRule(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  16107. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  16108. klog.V(4).Infof("GCEBetaSecurityPolicies.RemoveRule(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  16109. return err
  16110. }
  16111. call := g.s.Beta.SecurityPolicies.RemoveRule(projectID, key.Name)
  16112. call.Context(ctx)
  16113. op, err := call.Do()
  16114. if err != nil {
  16115. klog.V(4).Infof("GCEBetaSecurityPolicies.RemoveRule(%v, %v, ...) = %+v", ctx, key, err)
  16116. return err
  16117. }
  16118. err = g.s.WaitForCompletion(ctx, op)
  16119. klog.V(4).Infof("GCEBetaSecurityPolicies.RemoveRule(%v, %v, ...) = %+v", ctx, key, err)
  16120. return err
  16121. }
  16122. // SslCertificates is an interface that allows for mocking of SslCertificates.
  16123. type SslCertificates interface {
  16124. Get(ctx context.Context, key *meta.Key) (*ga.SslCertificate, error)
  16125. List(ctx context.Context, fl *filter.F) ([]*ga.SslCertificate, error)
  16126. Insert(ctx context.Context, key *meta.Key, obj *ga.SslCertificate) error
  16127. Delete(ctx context.Context, key *meta.Key) error
  16128. }
  16129. // NewMockSslCertificates returns a new mock for SslCertificates.
  16130. func NewMockSslCertificates(pr ProjectRouter, objs map[meta.Key]*MockSslCertificatesObj) *MockSslCertificates {
  16131. mock := &MockSslCertificates{
  16132. ProjectRouter: pr,
  16133. Objects: objs,
  16134. GetError: map[meta.Key]error{},
  16135. InsertError: map[meta.Key]error{},
  16136. DeleteError: map[meta.Key]error{},
  16137. }
  16138. return mock
  16139. }
  16140. // MockSslCertificates is the mock for SslCertificates.
  16141. type MockSslCertificates struct {
  16142. Lock sync.Mutex
  16143. ProjectRouter ProjectRouter
  16144. // Objects maintained by the mock.
  16145. Objects map[meta.Key]*MockSslCertificatesObj
  16146. // If an entry exists for the given key and operation, then the error
  16147. // will be returned instead of the operation.
  16148. GetError map[meta.Key]error
  16149. ListError *error
  16150. InsertError map[meta.Key]error
  16151. DeleteError map[meta.Key]error
  16152. // xxxHook allow you to intercept the standard processing of the mock in
  16153. // order to add your own logic. Return (true, _, _) to prevent the normal
  16154. // execution flow of the mock. Return (false, nil, nil) to continue with
  16155. // normal mock behavior/ after the hook function executes.
  16156. GetHook func(ctx context.Context, key *meta.Key, m *MockSslCertificates) (bool, *ga.SslCertificate, error)
  16157. ListHook func(ctx context.Context, fl *filter.F, m *MockSslCertificates) (bool, []*ga.SslCertificate, error)
  16158. InsertHook func(ctx context.Context, key *meta.Key, obj *ga.SslCertificate, m *MockSslCertificates) (bool, error)
  16159. DeleteHook func(ctx context.Context, key *meta.Key, m *MockSslCertificates) (bool, error)
  16160. // X is extra state that can be used as part of the mock. Generated code
  16161. // will not use this field.
  16162. X interface{}
  16163. }
  16164. // Get returns the object from the mock.
  16165. func (m *MockSslCertificates) Get(ctx context.Context, key *meta.Key) (*ga.SslCertificate, error) {
  16166. if m.GetHook != nil {
  16167. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  16168. klog.V(5).Infof("MockSslCertificates.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  16169. return obj, err
  16170. }
  16171. }
  16172. if !key.Valid() {
  16173. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  16174. }
  16175. m.Lock.Lock()
  16176. defer m.Lock.Unlock()
  16177. if err, ok := m.GetError[*key]; ok {
  16178. klog.V(5).Infof("MockSslCertificates.Get(%v, %s) = nil, %v", ctx, key, err)
  16179. return nil, err
  16180. }
  16181. if obj, ok := m.Objects[*key]; ok {
  16182. typedObj := obj.ToGA()
  16183. klog.V(5).Infof("MockSslCertificates.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  16184. return typedObj, nil
  16185. }
  16186. err := &googleapi.Error{
  16187. Code: http.StatusNotFound,
  16188. Message: fmt.Sprintf("MockSslCertificates %v not found", key),
  16189. }
  16190. klog.V(5).Infof("MockSslCertificates.Get(%v, %s) = nil, %v", ctx, key, err)
  16191. return nil, err
  16192. }
  16193. // List all of the objects in the mock.
  16194. func (m *MockSslCertificates) List(ctx context.Context, fl *filter.F) ([]*ga.SslCertificate, error) {
  16195. if m.ListHook != nil {
  16196. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  16197. klog.V(5).Infof("MockSslCertificates.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  16198. return objs, err
  16199. }
  16200. }
  16201. m.Lock.Lock()
  16202. defer m.Lock.Unlock()
  16203. if m.ListError != nil {
  16204. err := *m.ListError
  16205. klog.V(5).Infof("MockSslCertificates.List(%v, %v) = nil, %v", ctx, fl, err)
  16206. return nil, *m.ListError
  16207. }
  16208. var objs []*ga.SslCertificate
  16209. for _, obj := range m.Objects {
  16210. if !fl.Match(obj.ToGA()) {
  16211. continue
  16212. }
  16213. objs = append(objs, obj.ToGA())
  16214. }
  16215. klog.V(5).Infof("MockSslCertificates.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  16216. return objs, nil
  16217. }
  16218. // Insert is a mock for inserting/creating a new object.
  16219. func (m *MockSslCertificates) Insert(ctx context.Context, key *meta.Key, obj *ga.SslCertificate) error {
  16220. if m.InsertHook != nil {
  16221. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  16222. klog.V(5).Infof("MockSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  16223. return err
  16224. }
  16225. }
  16226. if !key.Valid() {
  16227. return fmt.Errorf("invalid GCE key (%+v)", key)
  16228. }
  16229. m.Lock.Lock()
  16230. defer m.Lock.Unlock()
  16231. if err, ok := m.InsertError[*key]; ok {
  16232. klog.V(5).Infof("MockSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  16233. return err
  16234. }
  16235. if _, ok := m.Objects[*key]; ok {
  16236. err := &googleapi.Error{
  16237. Code: http.StatusConflict,
  16238. Message: fmt.Sprintf("MockSslCertificates %v exists", key),
  16239. }
  16240. klog.V(5).Infof("MockSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  16241. return err
  16242. }
  16243. obj.Name = key.Name
  16244. projectID := m.ProjectRouter.ProjectID(ctx, "ga", "sslCertificates")
  16245. obj.SelfLink = SelfLink(meta.VersionGA, projectID, "sslCertificates", key)
  16246. m.Objects[*key] = &MockSslCertificatesObj{obj}
  16247. klog.V(5).Infof("MockSslCertificates.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  16248. return nil
  16249. }
  16250. // Delete is a mock for deleting the object.
  16251. func (m *MockSslCertificates) Delete(ctx context.Context, key *meta.Key) error {
  16252. if m.DeleteHook != nil {
  16253. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  16254. klog.V(5).Infof("MockSslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  16255. return err
  16256. }
  16257. }
  16258. if !key.Valid() {
  16259. return fmt.Errorf("invalid GCE key (%+v)", key)
  16260. }
  16261. m.Lock.Lock()
  16262. defer m.Lock.Unlock()
  16263. if err, ok := m.DeleteError[*key]; ok {
  16264. klog.V(5).Infof("MockSslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  16265. return err
  16266. }
  16267. if _, ok := m.Objects[*key]; !ok {
  16268. err := &googleapi.Error{
  16269. Code: http.StatusNotFound,
  16270. Message: fmt.Sprintf("MockSslCertificates %v not found", key),
  16271. }
  16272. klog.V(5).Infof("MockSslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  16273. return err
  16274. }
  16275. delete(m.Objects, *key)
  16276. klog.V(5).Infof("MockSslCertificates.Delete(%v, %v) = nil", ctx, key)
  16277. return nil
  16278. }
  16279. // Obj wraps the object for use in the mock.
  16280. func (m *MockSslCertificates) Obj(o *ga.SslCertificate) *MockSslCertificatesObj {
  16281. return &MockSslCertificatesObj{o}
  16282. }
  16283. // GCESslCertificates is a simplifying adapter for the GCE SslCertificates.
  16284. type GCESslCertificates struct {
  16285. s *Service
  16286. }
  16287. // Get the SslCertificate named by key.
  16288. func (g *GCESslCertificates) Get(ctx context.Context, key *meta.Key) (*ga.SslCertificate, error) {
  16289. klog.V(5).Infof("GCESslCertificates.Get(%v, %v): called", ctx, key)
  16290. if !key.Valid() {
  16291. klog.V(2).Infof("GCESslCertificates.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  16292. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  16293. }
  16294. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "SslCertificates")
  16295. rk := &RateLimitKey{
  16296. ProjectID: projectID,
  16297. Operation: "Get",
  16298. Version: meta.Version("ga"),
  16299. Service: "SslCertificates",
  16300. }
  16301. klog.V(5).Infof("GCESslCertificates.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  16302. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  16303. klog.V(4).Infof("GCESslCertificates.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  16304. return nil, err
  16305. }
  16306. call := g.s.GA.SslCertificates.Get(projectID, key.Name)
  16307. call.Context(ctx)
  16308. v, err := call.Do()
  16309. klog.V(4).Infof("GCESslCertificates.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  16310. return v, err
  16311. }
  16312. // List all SslCertificate objects.
  16313. func (g *GCESslCertificates) List(ctx context.Context, fl *filter.F) ([]*ga.SslCertificate, error) {
  16314. klog.V(5).Infof("GCESslCertificates.List(%v, %v) called", ctx, fl)
  16315. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "SslCertificates")
  16316. rk := &RateLimitKey{
  16317. ProjectID: projectID,
  16318. Operation: "List",
  16319. Version: meta.Version("ga"),
  16320. Service: "SslCertificates",
  16321. }
  16322. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  16323. return nil, err
  16324. }
  16325. klog.V(5).Infof("GCESslCertificates.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  16326. call := g.s.GA.SslCertificates.List(projectID)
  16327. if fl != filter.None {
  16328. call.Filter(fl.String())
  16329. }
  16330. var all []*ga.SslCertificate
  16331. f := func(l *ga.SslCertificateList) error {
  16332. klog.V(5).Infof("GCESslCertificates.List(%v, ..., %v): page %+v", ctx, fl, l)
  16333. all = append(all, l.Items...)
  16334. return nil
  16335. }
  16336. if err := call.Pages(ctx, f); err != nil {
  16337. klog.V(4).Infof("GCESslCertificates.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  16338. return nil, err
  16339. }
  16340. if klog.V(4) {
  16341. klog.V(4).Infof("GCESslCertificates.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  16342. } else if klog.V(5) {
  16343. var asStr []string
  16344. for _, o := range all {
  16345. asStr = append(asStr, fmt.Sprintf("%+v", o))
  16346. }
  16347. klog.V(5).Infof("GCESslCertificates.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  16348. }
  16349. return all, nil
  16350. }
  16351. // Insert SslCertificate with key of value obj.
  16352. func (g *GCESslCertificates) Insert(ctx context.Context, key *meta.Key, obj *ga.SslCertificate) error {
  16353. klog.V(5).Infof("GCESslCertificates.Insert(%v, %v, %+v): called", ctx, key, obj)
  16354. if !key.Valid() {
  16355. klog.V(2).Infof("GCESslCertificates.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  16356. return fmt.Errorf("invalid GCE key (%+v)", key)
  16357. }
  16358. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "SslCertificates")
  16359. rk := &RateLimitKey{
  16360. ProjectID: projectID,
  16361. Operation: "Insert",
  16362. Version: meta.Version("ga"),
  16363. Service: "SslCertificates",
  16364. }
  16365. klog.V(5).Infof("GCESslCertificates.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  16366. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  16367. klog.V(4).Infof("GCESslCertificates.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  16368. return err
  16369. }
  16370. obj.Name = key.Name
  16371. call := g.s.GA.SslCertificates.Insert(projectID, obj)
  16372. call.Context(ctx)
  16373. op, err := call.Do()
  16374. if err != nil {
  16375. klog.V(4).Infof("GCESslCertificates.Insert(%v, %v, ...) = %+v", ctx, key, err)
  16376. return err
  16377. }
  16378. err = g.s.WaitForCompletion(ctx, op)
  16379. klog.V(4).Infof("GCESslCertificates.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  16380. return err
  16381. }
  16382. // Delete the SslCertificate referenced by key.
  16383. func (g *GCESslCertificates) Delete(ctx context.Context, key *meta.Key) error {
  16384. klog.V(5).Infof("GCESslCertificates.Delete(%v, %v): called", ctx, key)
  16385. if !key.Valid() {
  16386. klog.V(2).Infof("GCESslCertificates.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  16387. return fmt.Errorf("invalid GCE key (%+v)", key)
  16388. }
  16389. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "SslCertificates")
  16390. rk := &RateLimitKey{
  16391. ProjectID: projectID,
  16392. Operation: "Delete",
  16393. Version: meta.Version("ga"),
  16394. Service: "SslCertificates",
  16395. }
  16396. klog.V(5).Infof("GCESslCertificates.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  16397. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  16398. klog.V(4).Infof("GCESslCertificates.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  16399. return err
  16400. }
  16401. call := g.s.GA.SslCertificates.Delete(projectID, key.Name)
  16402. call.Context(ctx)
  16403. op, err := call.Do()
  16404. if err != nil {
  16405. klog.V(4).Infof("GCESslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  16406. return err
  16407. }
  16408. err = g.s.WaitForCompletion(ctx, op)
  16409. klog.V(4).Infof("GCESslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  16410. return err
  16411. }
  16412. // BetaSslCertificates is an interface that allows for mocking of SslCertificates.
  16413. type BetaSslCertificates interface {
  16414. Get(ctx context.Context, key *meta.Key) (*beta.SslCertificate, error)
  16415. List(ctx context.Context, fl *filter.F) ([]*beta.SslCertificate, error)
  16416. Insert(ctx context.Context, key *meta.Key, obj *beta.SslCertificate) error
  16417. Delete(ctx context.Context, key *meta.Key) error
  16418. }
  16419. // NewMockBetaSslCertificates returns a new mock for SslCertificates.
  16420. func NewMockBetaSslCertificates(pr ProjectRouter, objs map[meta.Key]*MockSslCertificatesObj) *MockBetaSslCertificates {
  16421. mock := &MockBetaSslCertificates{
  16422. ProjectRouter: pr,
  16423. Objects: objs,
  16424. GetError: map[meta.Key]error{},
  16425. InsertError: map[meta.Key]error{},
  16426. DeleteError: map[meta.Key]error{},
  16427. }
  16428. return mock
  16429. }
  16430. // MockBetaSslCertificates is the mock for SslCertificates.
  16431. type MockBetaSslCertificates struct {
  16432. Lock sync.Mutex
  16433. ProjectRouter ProjectRouter
  16434. // Objects maintained by the mock.
  16435. Objects map[meta.Key]*MockSslCertificatesObj
  16436. // If an entry exists for the given key and operation, then the error
  16437. // will be returned instead of the operation.
  16438. GetError map[meta.Key]error
  16439. ListError *error
  16440. InsertError map[meta.Key]error
  16441. DeleteError map[meta.Key]error
  16442. // xxxHook allow you to intercept the standard processing of the mock in
  16443. // order to add your own logic. Return (true, _, _) to prevent the normal
  16444. // execution flow of the mock. Return (false, nil, nil) to continue with
  16445. // normal mock behavior/ after the hook function executes.
  16446. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaSslCertificates) (bool, *beta.SslCertificate, error)
  16447. ListHook func(ctx context.Context, fl *filter.F, m *MockBetaSslCertificates) (bool, []*beta.SslCertificate, error)
  16448. InsertHook func(ctx context.Context, key *meta.Key, obj *beta.SslCertificate, m *MockBetaSslCertificates) (bool, error)
  16449. DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaSslCertificates) (bool, error)
  16450. // X is extra state that can be used as part of the mock. Generated code
  16451. // will not use this field.
  16452. X interface{}
  16453. }
  16454. // Get returns the object from the mock.
  16455. func (m *MockBetaSslCertificates) Get(ctx context.Context, key *meta.Key) (*beta.SslCertificate, error) {
  16456. if m.GetHook != nil {
  16457. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  16458. klog.V(5).Infof("MockBetaSslCertificates.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  16459. return obj, err
  16460. }
  16461. }
  16462. if !key.Valid() {
  16463. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  16464. }
  16465. m.Lock.Lock()
  16466. defer m.Lock.Unlock()
  16467. if err, ok := m.GetError[*key]; ok {
  16468. klog.V(5).Infof("MockBetaSslCertificates.Get(%v, %s) = nil, %v", ctx, key, err)
  16469. return nil, err
  16470. }
  16471. if obj, ok := m.Objects[*key]; ok {
  16472. typedObj := obj.ToBeta()
  16473. klog.V(5).Infof("MockBetaSslCertificates.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  16474. return typedObj, nil
  16475. }
  16476. err := &googleapi.Error{
  16477. Code: http.StatusNotFound,
  16478. Message: fmt.Sprintf("MockBetaSslCertificates %v not found", key),
  16479. }
  16480. klog.V(5).Infof("MockBetaSslCertificates.Get(%v, %s) = nil, %v", ctx, key, err)
  16481. return nil, err
  16482. }
  16483. // List all of the objects in the mock.
  16484. func (m *MockBetaSslCertificates) List(ctx context.Context, fl *filter.F) ([]*beta.SslCertificate, error) {
  16485. if m.ListHook != nil {
  16486. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  16487. klog.V(5).Infof("MockBetaSslCertificates.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  16488. return objs, err
  16489. }
  16490. }
  16491. m.Lock.Lock()
  16492. defer m.Lock.Unlock()
  16493. if m.ListError != nil {
  16494. err := *m.ListError
  16495. klog.V(5).Infof("MockBetaSslCertificates.List(%v, %v) = nil, %v", ctx, fl, err)
  16496. return nil, *m.ListError
  16497. }
  16498. var objs []*beta.SslCertificate
  16499. for _, obj := range m.Objects {
  16500. if !fl.Match(obj.ToBeta()) {
  16501. continue
  16502. }
  16503. objs = append(objs, obj.ToBeta())
  16504. }
  16505. klog.V(5).Infof("MockBetaSslCertificates.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  16506. return objs, nil
  16507. }
  16508. // Insert is a mock for inserting/creating a new object.
  16509. func (m *MockBetaSslCertificates) Insert(ctx context.Context, key *meta.Key, obj *beta.SslCertificate) error {
  16510. if m.InsertHook != nil {
  16511. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  16512. klog.V(5).Infof("MockBetaSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  16513. return err
  16514. }
  16515. }
  16516. if !key.Valid() {
  16517. return fmt.Errorf("invalid GCE key (%+v)", key)
  16518. }
  16519. m.Lock.Lock()
  16520. defer m.Lock.Unlock()
  16521. if err, ok := m.InsertError[*key]; ok {
  16522. klog.V(5).Infof("MockBetaSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  16523. return err
  16524. }
  16525. if _, ok := m.Objects[*key]; ok {
  16526. err := &googleapi.Error{
  16527. Code: http.StatusConflict,
  16528. Message: fmt.Sprintf("MockBetaSslCertificates %v exists", key),
  16529. }
  16530. klog.V(5).Infof("MockBetaSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  16531. return err
  16532. }
  16533. obj.Name = key.Name
  16534. projectID := m.ProjectRouter.ProjectID(ctx, "beta", "sslCertificates")
  16535. obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "sslCertificates", key)
  16536. m.Objects[*key] = &MockSslCertificatesObj{obj}
  16537. klog.V(5).Infof("MockBetaSslCertificates.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  16538. return nil
  16539. }
  16540. // Delete is a mock for deleting the object.
  16541. func (m *MockBetaSslCertificates) Delete(ctx context.Context, key *meta.Key) error {
  16542. if m.DeleteHook != nil {
  16543. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  16544. klog.V(5).Infof("MockBetaSslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  16545. return err
  16546. }
  16547. }
  16548. if !key.Valid() {
  16549. return fmt.Errorf("invalid GCE key (%+v)", key)
  16550. }
  16551. m.Lock.Lock()
  16552. defer m.Lock.Unlock()
  16553. if err, ok := m.DeleteError[*key]; ok {
  16554. klog.V(5).Infof("MockBetaSslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  16555. return err
  16556. }
  16557. if _, ok := m.Objects[*key]; !ok {
  16558. err := &googleapi.Error{
  16559. Code: http.StatusNotFound,
  16560. Message: fmt.Sprintf("MockBetaSslCertificates %v not found", key),
  16561. }
  16562. klog.V(5).Infof("MockBetaSslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  16563. return err
  16564. }
  16565. delete(m.Objects, *key)
  16566. klog.V(5).Infof("MockBetaSslCertificates.Delete(%v, %v) = nil", ctx, key)
  16567. return nil
  16568. }
  16569. // Obj wraps the object for use in the mock.
  16570. func (m *MockBetaSslCertificates) Obj(o *beta.SslCertificate) *MockSslCertificatesObj {
  16571. return &MockSslCertificatesObj{o}
  16572. }
  16573. // GCEBetaSslCertificates is a simplifying adapter for the GCE SslCertificates.
  16574. type GCEBetaSslCertificates struct {
  16575. s *Service
  16576. }
  16577. // Get the SslCertificate named by key.
  16578. func (g *GCEBetaSslCertificates) Get(ctx context.Context, key *meta.Key) (*beta.SslCertificate, error) {
  16579. klog.V(5).Infof("GCEBetaSslCertificates.Get(%v, %v): called", ctx, key)
  16580. if !key.Valid() {
  16581. klog.V(2).Infof("GCEBetaSslCertificates.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  16582. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  16583. }
  16584. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SslCertificates")
  16585. rk := &RateLimitKey{
  16586. ProjectID: projectID,
  16587. Operation: "Get",
  16588. Version: meta.Version("beta"),
  16589. Service: "SslCertificates",
  16590. }
  16591. klog.V(5).Infof("GCEBetaSslCertificates.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  16592. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  16593. klog.V(4).Infof("GCEBetaSslCertificates.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  16594. return nil, err
  16595. }
  16596. call := g.s.Beta.SslCertificates.Get(projectID, key.Name)
  16597. call.Context(ctx)
  16598. v, err := call.Do()
  16599. klog.V(4).Infof("GCEBetaSslCertificates.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  16600. return v, err
  16601. }
  16602. // List all SslCertificate objects.
  16603. func (g *GCEBetaSslCertificates) List(ctx context.Context, fl *filter.F) ([]*beta.SslCertificate, error) {
  16604. klog.V(5).Infof("GCEBetaSslCertificates.List(%v, %v) called", ctx, fl)
  16605. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SslCertificates")
  16606. rk := &RateLimitKey{
  16607. ProjectID: projectID,
  16608. Operation: "List",
  16609. Version: meta.Version("beta"),
  16610. Service: "SslCertificates",
  16611. }
  16612. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  16613. return nil, err
  16614. }
  16615. klog.V(5).Infof("GCEBetaSslCertificates.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  16616. call := g.s.Beta.SslCertificates.List(projectID)
  16617. if fl != filter.None {
  16618. call.Filter(fl.String())
  16619. }
  16620. var all []*beta.SslCertificate
  16621. f := func(l *beta.SslCertificateList) error {
  16622. klog.V(5).Infof("GCEBetaSslCertificates.List(%v, ..., %v): page %+v", ctx, fl, l)
  16623. all = append(all, l.Items...)
  16624. return nil
  16625. }
  16626. if err := call.Pages(ctx, f); err != nil {
  16627. klog.V(4).Infof("GCEBetaSslCertificates.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  16628. return nil, err
  16629. }
  16630. if klog.V(4) {
  16631. klog.V(4).Infof("GCEBetaSslCertificates.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  16632. } else if klog.V(5) {
  16633. var asStr []string
  16634. for _, o := range all {
  16635. asStr = append(asStr, fmt.Sprintf("%+v", o))
  16636. }
  16637. klog.V(5).Infof("GCEBetaSslCertificates.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  16638. }
  16639. return all, nil
  16640. }
  16641. // Insert SslCertificate with key of value obj.
  16642. func (g *GCEBetaSslCertificates) Insert(ctx context.Context, key *meta.Key, obj *beta.SslCertificate) error {
  16643. klog.V(5).Infof("GCEBetaSslCertificates.Insert(%v, %v, %+v): called", ctx, key, obj)
  16644. if !key.Valid() {
  16645. klog.V(2).Infof("GCEBetaSslCertificates.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  16646. return fmt.Errorf("invalid GCE key (%+v)", key)
  16647. }
  16648. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SslCertificates")
  16649. rk := &RateLimitKey{
  16650. ProjectID: projectID,
  16651. Operation: "Insert",
  16652. Version: meta.Version("beta"),
  16653. Service: "SslCertificates",
  16654. }
  16655. klog.V(5).Infof("GCEBetaSslCertificates.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  16656. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  16657. klog.V(4).Infof("GCEBetaSslCertificates.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  16658. return err
  16659. }
  16660. obj.Name = key.Name
  16661. call := g.s.Beta.SslCertificates.Insert(projectID, obj)
  16662. call.Context(ctx)
  16663. op, err := call.Do()
  16664. if err != nil {
  16665. klog.V(4).Infof("GCEBetaSslCertificates.Insert(%v, %v, ...) = %+v", ctx, key, err)
  16666. return err
  16667. }
  16668. err = g.s.WaitForCompletion(ctx, op)
  16669. klog.V(4).Infof("GCEBetaSslCertificates.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  16670. return err
  16671. }
  16672. // Delete the SslCertificate referenced by key.
  16673. func (g *GCEBetaSslCertificates) Delete(ctx context.Context, key *meta.Key) error {
  16674. klog.V(5).Infof("GCEBetaSslCertificates.Delete(%v, %v): called", ctx, key)
  16675. if !key.Valid() {
  16676. klog.V(2).Infof("GCEBetaSslCertificates.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  16677. return fmt.Errorf("invalid GCE key (%+v)", key)
  16678. }
  16679. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SslCertificates")
  16680. rk := &RateLimitKey{
  16681. ProjectID: projectID,
  16682. Operation: "Delete",
  16683. Version: meta.Version("beta"),
  16684. Service: "SslCertificates",
  16685. }
  16686. klog.V(5).Infof("GCEBetaSslCertificates.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  16687. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  16688. klog.V(4).Infof("GCEBetaSslCertificates.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  16689. return err
  16690. }
  16691. call := g.s.Beta.SslCertificates.Delete(projectID, key.Name)
  16692. call.Context(ctx)
  16693. op, err := call.Do()
  16694. if err != nil {
  16695. klog.V(4).Infof("GCEBetaSslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  16696. return err
  16697. }
  16698. err = g.s.WaitForCompletion(ctx, op)
  16699. klog.V(4).Infof("GCEBetaSslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  16700. return err
  16701. }
  16702. // AlphaSslCertificates is an interface that allows for mocking of SslCertificates.
  16703. type AlphaSslCertificates interface {
  16704. Get(ctx context.Context, key *meta.Key) (*alpha.SslCertificate, error)
  16705. List(ctx context.Context, fl *filter.F) ([]*alpha.SslCertificate, error)
  16706. Insert(ctx context.Context, key *meta.Key, obj *alpha.SslCertificate) error
  16707. Delete(ctx context.Context, key *meta.Key) error
  16708. }
  16709. // NewMockAlphaSslCertificates returns a new mock for SslCertificates.
  16710. func NewMockAlphaSslCertificates(pr ProjectRouter, objs map[meta.Key]*MockSslCertificatesObj) *MockAlphaSslCertificates {
  16711. mock := &MockAlphaSslCertificates{
  16712. ProjectRouter: pr,
  16713. Objects: objs,
  16714. GetError: map[meta.Key]error{},
  16715. InsertError: map[meta.Key]error{},
  16716. DeleteError: map[meta.Key]error{},
  16717. }
  16718. return mock
  16719. }
  16720. // MockAlphaSslCertificates is the mock for SslCertificates.
  16721. type MockAlphaSslCertificates struct {
  16722. Lock sync.Mutex
  16723. ProjectRouter ProjectRouter
  16724. // Objects maintained by the mock.
  16725. Objects map[meta.Key]*MockSslCertificatesObj
  16726. // If an entry exists for the given key and operation, then the error
  16727. // will be returned instead of the operation.
  16728. GetError map[meta.Key]error
  16729. ListError *error
  16730. InsertError map[meta.Key]error
  16731. DeleteError map[meta.Key]error
  16732. // xxxHook allow you to intercept the standard processing of the mock in
  16733. // order to add your own logic. Return (true, _, _) to prevent the normal
  16734. // execution flow of the mock. Return (false, nil, nil) to continue with
  16735. // normal mock behavior/ after the hook function executes.
  16736. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaSslCertificates) (bool, *alpha.SslCertificate, error)
  16737. ListHook func(ctx context.Context, fl *filter.F, m *MockAlphaSslCertificates) (bool, []*alpha.SslCertificate, error)
  16738. InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.SslCertificate, m *MockAlphaSslCertificates) (bool, error)
  16739. DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaSslCertificates) (bool, error)
  16740. // X is extra state that can be used as part of the mock. Generated code
  16741. // will not use this field.
  16742. X interface{}
  16743. }
  16744. // Get returns the object from the mock.
  16745. func (m *MockAlphaSslCertificates) Get(ctx context.Context, key *meta.Key) (*alpha.SslCertificate, error) {
  16746. if m.GetHook != nil {
  16747. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  16748. klog.V(5).Infof("MockAlphaSslCertificates.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  16749. return obj, err
  16750. }
  16751. }
  16752. if !key.Valid() {
  16753. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  16754. }
  16755. m.Lock.Lock()
  16756. defer m.Lock.Unlock()
  16757. if err, ok := m.GetError[*key]; ok {
  16758. klog.V(5).Infof("MockAlphaSslCertificates.Get(%v, %s) = nil, %v", ctx, key, err)
  16759. return nil, err
  16760. }
  16761. if obj, ok := m.Objects[*key]; ok {
  16762. typedObj := obj.ToAlpha()
  16763. klog.V(5).Infof("MockAlphaSslCertificates.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  16764. return typedObj, nil
  16765. }
  16766. err := &googleapi.Error{
  16767. Code: http.StatusNotFound,
  16768. Message: fmt.Sprintf("MockAlphaSslCertificates %v not found", key),
  16769. }
  16770. klog.V(5).Infof("MockAlphaSslCertificates.Get(%v, %s) = nil, %v", ctx, key, err)
  16771. return nil, err
  16772. }
  16773. // List all of the objects in the mock.
  16774. func (m *MockAlphaSslCertificates) List(ctx context.Context, fl *filter.F) ([]*alpha.SslCertificate, error) {
  16775. if m.ListHook != nil {
  16776. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  16777. klog.V(5).Infof("MockAlphaSslCertificates.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  16778. return objs, err
  16779. }
  16780. }
  16781. m.Lock.Lock()
  16782. defer m.Lock.Unlock()
  16783. if m.ListError != nil {
  16784. err := *m.ListError
  16785. klog.V(5).Infof("MockAlphaSslCertificates.List(%v, %v) = nil, %v", ctx, fl, err)
  16786. return nil, *m.ListError
  16787. }
  16788. var objs []*alpha.SslCertificate
  16789. for _, obj := range m.Objects {
  16790. if !fl.Match(obj.ToAlpha()) {
  16791. continue
  16792. }
  16793. objs = append(objs, obj.ToAlpha())
  16794. }
  16795. klog.V(5).Infof("MockAlphaSslCertificates.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  16796. return objs, nil
  16797. }
  16798. // Insert is a mock for inserting/creating a new object.
  16799. func (m *MockAlphaSslCertificates) Insert(ctx context.Context, key *meta.Key, obj *alpha.SslCertificate) error {
  16800. if m.InsertHook != nil {
  16801. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  16802. klog.V(5).Infof("MockAlphaSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  16803. return err
  16804. }
  16805. }
  16806. if !key.Valid() {
  16807. return fmt.Errorf("invalid GCE key (%+v)", key)
  16808. }
  16809. m.Lock.Lock()
  16810. defer m.Lock.Unlock()
  16811. if err, ok := m.InsertError[*key]; ok {
  16812. klog.V(5).Infof("MockAlphaSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  16813. return err
  16814. }
  16815. if _, ok := m.Objects[*key]; ok {
  16816. err := &googleapi.Error{
  16817. Code: http.StatusConflict,
  16818. Message: fmt.Sprintf("MockAlphaSslCertificates %v exists", key),
  16819. }
  16820. klog.V(5).Infof("MockAlphaSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  16821. return err
  16822. }
  16823. obj.Name = key.Name
  16824. projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "sslCertificates")
  16825. obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "sslCertificates", key)
  16826. m.Objects[*key] = &MockSslCertificatesObj{obj}
  16827. klog.V(5).Infof("MockAlphaSslCertificates.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  16828. return nil
  16829. }
  16830. // Delete is a mock for deleting the object.
  16831. func (m *MockAlphaSslCertificates) Delete(ctx context.Context, key *meta.Key) error {
  16832. if m.DeleteHook != nil {
  16833. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  16834. klog.V(5).Infof("MockAlphaSslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  16835. return err
  16836. }
  16837. }
  16838. if !key.Valid() {
  16839. return fmt.Errorf("invalid GCE key (%+v)", key)
  16840. }
  16841. m.Lock.Lock()
  16842. defer m.Lock.Unlock()
  16843. if err, ok := m.DeleteError[*key]; ok {
  16844. klog.V(5).Infof("MockAlphaSslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  16845. return err
  16846. }
  16847. if _, ok := m.Objects[*key]; !ok {
  16848. err := &googleapi.Error{
  16849. Code: http.StatusNotFound,
  16850. Message: fmt.Sprintf("MockAlphaSslCertificates %v not found", key),
  16851. }
  16852. klog.V(5).Infof("MockAlphaSslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  16853. return err
  16854. }
  16855. delete(m.Objects, *key)
  16856. klog.V(5).Infof("MockAlphaSslCertificates.Delete(%v, %v) = nil", ctx, key)
  16857. return nil
  16858. }
  16859. // Obj wraps the object for use in the mock.
  16860. func (m *MockAlphaSslCertificates) Obj(o *alpha.SslCertificate) *MockSslCertificatesObj {
  16861. return &MockSslCertificatesObj{o}
  16862. }
  16863. // GCEAlphaSslCertificates is a simplifying adapter for the GCE SslCertificates.
  16864. type GCEAlphaSslCertificates struct {
  16865. s *Service
  16866. }
  16867. // Get the SslCertificate named by key.
  16868. func (g *GCEAlphaSslCertificates) Get(ctx context.Context, key *meta.Key) (*alpha.SslCertificate, error) {
  16869. klog.V(5).Infof("GCEAlphaSslCertificates.Get(%v, %v): called", ctx, key)
  16870. if !key.Valid() {
  16871. klog.V(2).Infof("GCEAlphaSslCertificates.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  16872. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  16873. }
  16874. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "SslCertificates")
  16875. rk := &RateLimitKey{
  16876. ProjectID: projectID,
  16877. Operation: "Get",
  16878. Version: meta.Version("alpha"),
  16879. Service: "SslCertificates",
  16880. }
  16881. klog.V(5).Infof("GCEAlphaSslCertificates.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  16882. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  16883. klog.V(4).Infof("GCEAlphaSslCertificates.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  16884. return nil, err
  16885. }
  16886. call := g.s.Alpha.SslCertificates.Get(projectID, key.Name)
  16887. call.Context(ctx)
  16888. v, err := call.Do()
  16889. klog.V(4).Infof("GCEAlphaSslCertificates.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  16890. return v, err
  16891. }
  16892. // List all SslCertificate objects.
  16893. func (g *GCEAlphaSslCertificates) List(ctx context.Context, fl *filter.F) ([]*alpha.SslCertificate, error) {
  16894. klog.V(5).Infof("GCEAlphaSslCertificates.List(%v, %v) called", ctx, fl)
  16895. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "SslCertificates")
  16896. rk := &RateLimitKey{
  16897. ProjectID: projectID,
  16898. Operation: "List",
  16899. Version: meta.Version("alpha"),
  16900. Service: "SslCertificates",
  16901. }
  16902. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  16903. return nil, err
  16904. }
  16905. klog.V(5).Infof("GCEAlphaSslCertificates.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  16906. call := g.s.Alpha.SslCertificates.List(projectID)
  16907. if fl != filter.None {
  16908. call.Filter(fl.String())
  16909. }
  16910. var all []*alpha.SslCertificate
  16911. f := func(l *alpha.SslCertificateList) error {
  16912. klog.V(5).Infof("GCEAlphaSslCertificates.List(%v, ..., %v): page %+v", ctx, fl, l)
  16913. all = append(all, l.Items...)
  16914. return nil
  16915. }
  16916. if err := call.Pages(ctx, f); err != nil {
  16917. klog.V(4).Infof("GCEAlphaSslCertificates.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  16918. return nil, err
  16919. }
  16920. if klog.V(4) {
  16921. klog.V(4).Infof("GCEAlphaSslCertificates.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  16922. } else if klog.V(5) {
  16923. var asStr []string
  16924. for _, o := range all {
  16925. asStr = append(asStr, fmt.Sprintf("%+v", o))
  16926. }
  16927. klog.V(5).Infof("GCEAlphaSslCertificates.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  16928. }
  16929. return all, nil
  16930. }
  16931. // Insert SslCertificate with key of value obj.
  16932. func (g *GCEAlphaSslCertificates) Insert(ctx context.Context, key *meta.Key, obj *alpha.SslCertificate) error {
  16933. klog.V(5).Infof("GCEAlphaSslCertificates.Insert(%v, %v, %+v): called", ctx, key, obj)
  16934. if !key.Valid() {
  16935. klog.V(2).Infof("GCEAlphaSslCertificates.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  16936. return fmt.Errorf("invalid GCE key (%+v)", key)
  16937. }
  16938. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "SslCertificates")
  16939. rk := &RateLimitKey{
  16940. ProjectID: projectID,
  16941. Operation: "Insert",
  16942. Version: meta.Version("alpha"),
  16943. Service: "SslCertificates",
  16944. }
  16945. klog.V(5).Infof("GCEAlphaSslCertificates.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  16946. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  16947. klog.V(4).Infof("GCEAlphaSslCertificates.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  16948. return err
  16949. }
  16950. obj.Name = key.Name
  16951. call := g.s.Alpha.SslCertificates.Insert(projectID, obj)
  16952. call.Context(ctx)
  16953. op, err := call.Do()
  16954. if err != nil {
  16955. klog.V(4).Infof("GCEAlphaSslCertificates.Insert(%v, %v, ...) = %+v", ctx, key, err)
  16956. return err
  16957. }
  16958. err = g.s.WaitForCompletion(ctx, op)
  16959. klog.V(4).Infof("GCEAlphaSslCertificates.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  16960. return err
  16961. }
  16962. // Delete the SslCertificate referenced by key.
  16963. func (g *GCEAlphaSslCertificates) Delete(ctx context.Context, key *meta.Key) error {
  16964. klog.V(5).Infof("GCEAlphaSslCertificates.Delete(%v, %v): called", ctx, key)
  16965. if !key.Valid() {
  16966. klog.V(2).Infof("GCEAlphaSslCertificates.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  16967. return fmt.Errorf("invalid GCE key (%+v)", key)
  16968. }
  16969. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "SslCertificates")
  16970. rk := &RateLimitKey{
  16971. ProjectID: projectID,
  16972. Operation: "Delete",
  16973. Version: meta.Version("alpha"),
  16974. Service: "SslCertificates",
  16975. }
  16976. klog.V(5).Infof("GCEAlphaSslCertificates.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  16977. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  16978. klog.V(4).Infof("GCEAlphaSslCertificates.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  16979. return err
  16980. }
  16981. call := g.s.Alpha.SslCertificates.Delete(projectID, key.Name)
  16982. call.Context(ctx)
  16983. op, err := call.Do()
  16984. if err != nil {
  16985. klog.V(4).Infof("GCEAlphaSslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  16986. return err
  16987. }
  16988. err = g.s.WaitForCompletion(ctx, op)
  16989. klog.V(4).Infof("GCEAlphaSslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  16990. return err
  16991. }
  16992. // AlphaRegionSslCertificates is an interface that allows for mocking of RegionSslCertificates.
  16993. type AlphaRegionSslCertificates interface {
  16994. Get(ctx context.Context, key *meta.Key) (*alpha.SslCertificate, error)
  16995. List(ctx context.Context, region string, fl *filter.F) ([]*alpha.SslCertificate, error)
  16996. Insert(ctx context.Context, key *meta.Key, obj *alpha.SslCertificate) error
  16997. Delete(ctx context.Context, key *meta.Key) error
  16998. }
  16999. // NewMockAlphaRegionSslCertificates returns a new mock for RegionSslCertificates.
  17000. func NewMockAlphaRegionSslCertificates(pr ProjectRouter, objs map[meta.Key]*MockRegionSslCertificatesObj) *MockAlphaRegionSslCertificates {
  17001. mock := &MockAlphaRegionSslCertificates{
  17002. ProjectRouter: pr,
  17003. Objects: objs,
  17004. GetError: map[meta.Key]error{},
  17005. InsertError: map[meta.Key]error{},
  17006. DeleteError: map[meta.Key]error{},
  17007. }
  17008. return mock
  17009. }
  17010. // MockAlphaRegionSslCertificates is the mock for RegionSslCertificates.
  17011. type MockAlphaRegionSslCertificates struct {
  17012. Lock sync.Mutex
  17013. ProjectRouter ProjectRouter
  17014. // Objects maintained by the mock.
  17015. Objects map[meta.Key]*MockRegionSslCertificatesObj
  17016. // If an entry exists for the given key and operation, then the error
  17017. // will be returned instead of the operation.
  17018. GetError map[meta.Key]error
  17019. ListError *error
  17020. InsertError map[meta.Key]error
  17021. DeleteError map[meta.Key]error
  17022. // xxxHook allow you to intercept the standard processing of the mock in
  17023. // order to add your own logic. Return (true, _, _) to prevent the normal
  17024. // execution flow of the mock. Return (false, nil, nil) to continue with
  17025. // normal mock behavior/ after the hook function executes.
  17026. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaRegionSslCertificates) (bool, *alpha.SslCertificate, error)
  17027. ListHook func(ctx context.Context, region string, fl *filter.F, m *MockAlphaRegionSslCertificates) (bool, []*alpha.SslCertificate, error)
  17028. InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.SslCertificate, m *MockAlphaRegionSslCertificates) (bool, error)
  17029. DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaRegionSslCertificates) (bool, error)
  17030. // X is extra state that can be used as part of the mock. Generated code
  17031. // will not use this field.
  17032. X interface{}
  17033. }
  17034. // Get returns the object from the mock.
  17035. func (m *MockAlphaRegionSslCertificates) Get(ctx context.Context, key *meta.Key) (*alpha.SslCertificate, error) {
  17036. if m.GetHook != nil {
  17037. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  17038. klog.V(5).Infof("MockAlphaRegionSslCertificates.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  17039. return obj, err
  17040. }
  17041. }
  17042. if !key.Valid() {
  17043. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  17044. }
  17045. m.Lock.Lock()
  17046. defer m.Lock.Unlock()
  17047. if err, ok := m.GetError[*key]; ok {
  17048. klog.V(5).Infof("MockAlphaRegionSslCertificates.Get(%v, %s) = nil, %v", ctx, key, err)
  17049. return nil, err
  17050. }
  17051. if obj, ok := m.Objects[*key]; ok {
  17052. typedObj := obj.ToAlpha()
  17053. klog.V(5).Infof("MockAlphaRegionSslCertificates.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  17054. return typedObj, nil
  17055. }
  17056. err := &googleapi.Error{
  17057. Code: http.StatusNotFound,
  17058. Message: fmt.Sprintf("MockAlphaRegionSslCertificates %v not found", key),
  17059. }
  17060. klog.V(5).Infof("MockAlphaRegionSslCertificates.Get(%v, %s) = nil, %v", ctx, key, err)
  17061. return nil, err
  17062. }
  17063. // List all of the objects in the mock in the given region.
  17064. func (m *MockAlphaRegionSslCertificates) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.SslCertificate, error) {
  17065. if m.ListHook != nil {
  17066. if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept {
  17067. klog.V(5).Infof("MockAlphaRegionSslCertificates.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err)
  17068. return objs, err
  17069. }
  17070. }
  17071. m.Lock.Lock()
  17072. defer m.Lock.Unlock()
  17073. if m.ListError != nil {
  17074. err := *m.ListError
  17075. klog.V(5).Infof("MockAlphaRegionSslCertificates.List(%v, %q, %v) = nil, %v", ctx, region, fl, err)
  17076. return nil, *m.ListError
  17077. }
  17078. var objs []*alpha.SslCertificate
  17079. for key, obj := range m.Objects {
  17080. if key.Region != region {
  17081. continue
  17082. }
  17083. if !fl.Match(obj.ToAlpha()) {
  17084. continue
  17085. }
  17086. objs = append(objs, obj.ToAlpha())
  17087. }
  17088. klog.V(5).Infof("MockAlphaRegionSslCertificates.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs))
  17089. return objs, nil
  17090. }
  17091. // Insert is a mock for inserting/creating a new object.
  17092. func (m *MockAlphaRegionSslCertificates) Insert(ctx context.Context, key *meta.Key, obj *alpha.SslCertificate) error {
  17093. if m.InsertHook != nil {
  17094. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  17095. klog.V(5).Infof("MockAlphaRegionSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  17096. return err
  17097. }
  17098. }
  17099. if !key.Valid() {
  17100. return fmt.Errorf("invalid GCE key (%+v)", key)
  17101. }
  17102. m.Lock.Lock()
  17103. defer m.Lock.Unlock()
  17104. if err, ok := m.InsertError[*key]; ok {
  17105. klog.V(5).Infof("MockAlphaRegionSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  17106. return err
  17107. }
  17108. if _, ok := m.Objects[*key]; ok {
  17109. err := &googleapi.Error{
  17110. Code: http.StatusConflict,
  17111. Message: fmt.Sprintf("MockAlphaRegionSslCertificates %v exists", key),
  17112. }
  17113. klog.V(5).Infof("MockAlphaRegionSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  17114. return err
  17115. }
  17116. obj.Name = key.Name
  17117. projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "sslCertificates")
  17118. obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "sslCertificates", key)
  17119. m.Objects[*key] = &MockRegionSslCertificatesObj{obj}
  17120. klog.V(5).Infof("MockAlphaRegionSslCertificates.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  17121. return nil
  17122. }
  17123. // Delete is a mock for deleting the object.
  17124. func (m *MockAlphaRegionSslCertificates) Delete(ctx context.Context, key *meta.Key) error {
  17125. if m.DeleteHook != nil {
  17126. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  17127. klog.V(5).Infof("MockAlphaRegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  17128. return err
  17129. }
  17130. }
  17131. if !key.Valid() {
  17132. return fmt.Errorf("invalid GCE key (%+v)", key)
  17133. }
  17134. m.Lock.Lock()
  17135. defer m.Lock.Unlock()
  17136. if err, ok := m.DeleteError[*key]; ok {
  17137. klog.V(5).Infof("MockAlphaRegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  17138. return err
  17139. }
  17140. if _, ok := m.Objects[*key]; !ok {
  17141. err := &googleapi.Error{
  17142. Code: http.StatusNotFound,
  17143. Message: fmt.Sprintf("MockAlphaRegionSslCertificates %v not found", key),
  17144. }
  17145. klog.V(5).Infof("MockAlphaRegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  17146. return err
  17147. }
  17148. delete(m.Objects, *key)
  17149. klog.V(5).Infof("MockAlphaRegionSslCertificates.Delete(%v, %v) = nil", ctx, key)
  17150. return nil
  17151. }
  17152. // Obj wraps the object for use in the mock.
  17153. func (m *MockAlphaRegionSslCertificates) Obj(o *alpha.SslCertificate) *MockRegionSslCertificatesObj {
  17154. return &MockRegionSslCertificatesObj{o}
  17155. }
  17156. // GCEAlphaRegionSslCertificates is a simplifying adapter for the GCE RegionSslCertificates.
  17157. type GCEAlphaRegionSslCertificates struct {
  17158. s *Service
  17159. }
  17160. // Get the SslCertificate named by key.
  17161. func (g *GCEAlphaRegionSslCertificates) Get(ctx context.Context, key *meta.Key) (*alpha.SslCertificate, error) {
  17162. klog.V(5).Infof("GCEAlphaRegionSslCertificates.Get(%v, %v): called", ctx, key)
  17163. if !key.Valid() {
  17164. klog.V(2).Infof("GCEAlphaRegionSslCertificates.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  17165. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  17166. }
  17167. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionSslCertificates")
  17168. rk := &RateLimitKey{
  17169. ProjectID: projectID,
  17170. Operation: "Get",
  17171. Version: meta.Version("alpha"),
  17172. Service: "RegionSslCertificates",
  17173. }
  17174. klog.V(5).Infof("GCEAlphaRegionSslCertificates.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  17175. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  17176. klog.V(4).Infof("GCEAlphaRegionSslCertificates.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  17177. return nil, err
  17178. }
  17179. call := g.s.Alpha.RegionSslCertificates.Get(projectID, key.Region, key.Name)
  17180. call.Context(ctx)
  17181. v, err := call.Do()
  17182. klog.V(4).Infof("GCEAlphaRegionSslCertificates.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  17183. return v, err
  17184. }
  17185. // List all SslCertificate objects.
  17186. func (g *GCEAlphaRegionSslCertificates) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.SslCertificate, error) {
  17187. klog.V(5).Infof("GCEAlphaRegionSslCertificates.List(%v, %v, %v) called", ctx, region, fl)
  17188. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionSslCertificates")
  17189. rk := &RateLimitKey{
  17190. ProjectID: projectID,
  17191. Operation: "List",
  17192. Version: meta.Version("alpha"),
  17193. Service: "RegionSslCertificates",
  17194. }
  17195. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  17196. return nil, err
  17197. }
  17198. klog.V(5).Infof("GCEAlphaRegionSslCertificates.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk)
  17199. call := g.s.Alpha.RegionSslCertificates.List(projectID, region)
  17200. if fl != filter.None {
  17201. call.Filter(fl.String())
  17202. }
  17203. var all []*alpha.SslCertificate
  17204. f := func(l *alpha.SslCertificateList) error {
  17205. klog.V(5).Infof("GCEAlphaRegionSslCertificates.List(%v, ..., %v): page %+v", ctx, fl, l)
  17206. all = append(all, l.Items...)
  17207. return nil
  17208. }
  17209. if err := call.Pages(ctx, f); err != nil {
  17210. klog.V(4).Infof("GCEAlphaRegionSslCertificates.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  17211. return nil, err
  17212. }
  17213. if klog.V(4) {
  17214. klog.V(4).Infof("GCEAlphaRegionSslCertificates.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  17215. } else if klog.V(5) {
  17216. var asStr []string
  17217. for _, o := range all {
  17218. asStr = append(asStr, fmt.Sprintf("%+v", o))
  17219. }
  17220. klog.V(5).Infof("GCEAlphaRegionSslCertificates.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  17221. }
  17222. return all, nil
  17223. }
  17224. // Insert SslCertificate with key of value obj.
  17225. func (g *GCEAlphaRegionSslCertificates) Insert(ctx context.Context, key *meta.Key, obj *alpha.SslCertificate) error {
  17226. klog.V(5).Infof("GCEAlphaRegionSslCertificates.Insert(%v, %v, %+v): called", ctx, key, obj)
  17227. if !key.Valid() {
  17228. klog.V(2).Infof("GCEAlphaRegionSslCertificates.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  17229. return fmt.Errorf("invalid GCE key (%+v)", key)
  17230. }
  17231. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionSslCertificates")
  17232. rk := &RateLimitKey{
  17233. ProjectID: projectID,
  17234. Operation: "Insert",
  17235. Version: meta.Version("alpha"),
  17236. Service: "RegionSslCertificates",
  17237. }
  17238. klog.V(5).Infof("GCEAlphaRegionSslCertificates.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  17239. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  17240. klog.V(4).Infof("GCEAlphaRegionSslCertificates.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  17241. return err
  17242. }
  17243. obj.Name = key.Name
  17244. call := g.s.Alpha.RegionSslCertificates.Insert(projectID, key.Region, obj)
  17245. call.Context(ctx)
  17246. op, err := call.Do()
  17247. if err != nil {
  17248. klog.V(4).Infof("GCEAlphaRegionSslCertificates.Insert(%v, %v, ...) = %+v", ctx, key, err)
  17249. return err
  17250. }
  17251. err = g.s.WaitForCompletion(ctx, op)
  17252. klog.V(4).Infof("GCEAlphaRegionSslCertificates.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  17253. return err
  17254. }
  17255. // Delete the SslCertificate referenced by key.
  17256. func (g *GCEAlphaRegionSslCertificates) Delete(ctx context.Context, key *meta.Key) error {
  17257. klog.V(5).Infof("GCEAlphaRegionSslCertificates.Delete(%v, %v): called", ctx, key)
  17258. if !key.Valid() {
  17259. klog.V(2).Infof("GCEAlphaRegionSslCertificates.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  17260. return fmt.Errorf("invalid GCE key (%+v)", key)
  17261. }
  17262. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionSslCertificates")
  17263. rk := &RateLimitKey{
  17264. ProjectID: projectID,
  17265. Operation: "Delete",
  17266. Version: meta.Version("alpha"),
  17267. Service: "RegionSslCertificates",
  17268. }
  17269. klog.V(5).Infof("GCEAlphaRegionSslCertificates.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  17270. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  17271. klog.V(4).Infof("GCEAlphaRegionSslCertificates.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  17272. return err
  17273. }
  17274. call := g.s.Alpha.RegionSslCertificates.Delete(projectID, key.Region, key.Name)
  17275. call.Context(ctx)
  17276. op, err := call.Do()
  17277. if err != nil {
  17278. klog.V(4).Infof("GCEAlphaRegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  17279. return err
  17280. }
  17281. err = g.s.WaitForCompletion(ctx, op)
  17282. klog.V(4).Infof("GCEAlphaRegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  17283. return err
  17284. }
  17285. // BetaRegionSslCertificates is an interface that allows for mocking of RegionSslCertificates.
  17286. type BetaRegionSslCertificates interface {
  17287. Get(ctx context.Context, key *meta.Key) (*beta.SslCertificate, error)
  17288. List(ctx context.Context, region string, fl *filter.F) ([]*beta.SslCertificate, error)
  17289. Insert(ctx context.Context, key *meta.Key, obj *beta.SslCertificate) error
  17290. Delete(ctx context.Context, key *meta.Key) error
  17291. }
  17292. // NewMockBetaRegionSslCertificates returns a new mock for RegionSslCertificates.
  17293. func NewMockBetaRegionSslCertificates(pr ProjectRouter, objs map[meta.Key]*MockRegionSslCertificatesObj) *MockBetaRegionSslCertificates {
  17294. mock := &MockBetaRegionSslCertificates{
  17295. ProjectRouter: pr,
  17296. Objects: objs,
  17297. GetError: map[meta.Key]error{},
  17298. InsertError: map[meta.Key]error{},
  17299. DeleteError: map[meta.Key]error{},
  17300. }
  17301. return mock
  17302. }
  17303. // MockBetaRegionSslCertificates is the mock for RegionSslCertificates.
  17304. type MockBetaRegionSslCertificates struct {
  17305. Lock sync.Mutex
  17306. ProjectRouter ProjectRouter
  17307. // Objects maintained by the mock.
  17308. Objects map[meta.Key]*MockRegionSslCertificatesObj
  17309. // If an entry exists for the given key and operation, then the error
  17310. // will be returned instead of the operation.
  17311. GetError map[meta.Key]error
  17312. ListError *error
  17313. InsertError map[meta.Key]error
  17314. DeleteError map[meta.Key]error
  17315. // xxxHook allow you to intercept the standard processing of the mock in
  17316. // order to add your own logic. Return (true, _, _) to prevent the normal
  17317. // execution flow of the mock. Return (false, nil, nil) to continue with
  17318. // normal mock behavior/ after the hook function executes.
  17319. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaRegionSslCertificates) (bool, *beta.SslCertificate, error)
  17320. ListHook func(ctx context.Context, region string, fl *filter.F, m *MockBetaRegionSslCertificates) (bool, []*beta.SslCertificate, error)
  17321. InsertHook func(ctx context.Context, key *meta.Key, obj *beta.SslCertificate, m *MockBetaRegionSslCertificates) (bool, error)
  17322. DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaRegionSslCertificates) (bool, error)
  17323. // X is extra state that can be used as part of the mock. Generated code
  17324. // will not use this field.
  17325. X interface{}
  17326. }
  17327. // Get returns the object from the mock.
  17328. func (m *MockBetaRegionSslCertificates) Get(ctx context.Context, key *meta.Key) (*beta.SslCertificate, error) {
  17329. if m.GetHook != nil {
  17330. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  17331. klog.V(5).Infof("MockBetaRegionSslCertificates.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  17332. return obj, err
  17333. }
  17334. }
  17335. if !key.Valid() {
  17336. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  17337. }
  17338. m.Lock.Lock()
  17339. defer m.Lock.Unlock()
  17340. if err, ok := m.GetError[*key]; ok {
  17341. klog.V(5).Infof("MockBetaRegionSslCertificates.Get(%v, %s) = nil, %v", ctx, key, err)
  17342. return nil, err
  17343. }
  17344. if obj, ok := m.Objects[*key]; ok {
  17345. typedObj := obj.ToBeta()
  17346. klog.V(5).Infof("MockBetaRegionSslCertificates.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  17347. return typedObj, nil
  17348. }
  17349. err := &googleapi.Error{
  17350. Code: http.StatusNotFound,
  17351. Message: fmt.Sprintf("MockBetaRegionSslCertificates %v not found", key),
  17352. }
  17353. klog.V(5).Infof("MockBetaRegionSslCertificates.Get(%v, %s) = nil, %v", ctx, key, err)
  17354. return nil, err
  17355. }
  17356. // List all of the objects in the mock in the given region.
  17357. func (m *MockBetaRegionSslCertificates) List(ctx context.Context, region string, fl *filter.F) ([]*beta.SslCertificate, error) {
  17358. if m.ListHook != nil {
  17359. if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept {
  17360. klog.V(5).Infof("MockBetaRegionSslCertificates.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err)
  17361. return objs, err
  17362. }
  17363. }
  17364. m.Lock.Lock()
  17365. defer m.Lock.Unlock()
  17366. if m.ListError != nil {
  17367. err := *m.ListError
  17368. klog.V(5).Infof("MockBetaRegionSslCertificates.List(%v, %q, %v) = nil, %v", ctx, region, fl, err)
  17369. return nil, *m.ListError
  17370. }
  17371. var objs []*beta.SslCertificate
  17372. for key, obj := range m.Objects {
  17373. if key.Region != region {
  17374. continue
  17375. }
  17376. if !fl.Match(obj.ToBeta()) {
  17377. continue
  17378. }
  17379. objs = append(objs, obj.ToBeta())
  17380. }
  17381. klog.V(5).Infof("MockBetaRegionSslCertificates.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs))
  17382. return objs, nil
  17383. }
  17384. // Insert is a mock for inserting/creating a new object.
  17385. func (m *MockBetaRegionSslCertificates) Insert(ctx context.Context, key *meta.Key, obj *beta.SslCertificate) error {
  17386. if m.InsertHook != nil {
  17387. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  17388. klog.V(5).Infof("MockBetaRegionSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  17389. return err
  17390. }
  17391. }
  17392. if !key.Valid() {
  17393. return fmt.Errorf("invalid GCE key (%+v)", key)
  17394. }
  17395. m.Lock.Lock()
  17396. defer m.Lock.Unlock()
  17397. if err, ok := m.InsertError[*key]; ok {
  17398. klog.V(5).Infof("MockBetaRegionSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  17399. return err
  17400. }
  17401. if _, ok := m.Objects[*key]; ok {
  17402. err := &googleapi.Error{
  17403. Code: http.StatusConflict,
  17404. Message: fmt.Sprintf("MockBetaRegionSslCertificates %v exists", key),
  17405. }
  17406. klog.V(5).Infof("MockBetaRegionSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  17407. return err
  17408. }
  17409. obj.Name = key.Name
  17410. projectID := m.ProjectRouter.ProjectID(ctx, "beta", "sslCertificates")
  17411. obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "sslCertificates", key)
  17412. m.Objects[*key] = &MockRegionSslCertificatesObj{obj}
  17413. klog.V(5).Infof("MockBetaRegionSslCertificates.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  17414. return nil
  17415. }
  17416. // Delete is a mock for deleting the object.
  17417. func (m *MockBetaRegionSslCertificates) Delete(ctx context.Context, key *meta.Key) error {
  17418. if m.DeleteHook != nil {
  17419. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  17420. klog.V(5).Infof("MockBetaRegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  17421. return err
  17422. }
  17423. }
  17424. if !key.Valid() {
  17425. return fmt.Errorf("invalid GCE key (%+v)", key)
  17426. }
  17427. m.Lock.Lock()
  17428. defer m.Lock.Unlock()
  17429. if err, ok := m.DeleteError[*key]; ok {
  17430. klog.V(5).Infof("MockBetaRegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  17431. return err
  17432. }
  17433. if _, ok := m.Objects[*key]; !ok {
  17434. err := &googleapi.Error{
  17435. Code: http.StatusNotFound,
  17436. Message: fmt.Sprintf("MockBetaRegionSslCertificates %v not found", key),
  17437. }
  17438. klog.V(5).Infof("MockBetaRegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  17439. return err
  17440. }
  17441. delete(m.Objects, *key)
  17442. klog.V(5).Infof("MockBetaRegionSslCertificates.Delete(%v, %v) = nil", ctx, key)
  17443. return nil
  17444. }
  17445. // Obj wraps the object for use in the mock.
  17446. func (m *MockBetaRegionSslCertificates) Obj(o *beta.SslCertificate) *MockRegionSslCertificatesObj {
  17447. return &MockRegionSslCertificatesObj{o}
  17448. }
  17449. // GCEBetaRegionSslCertificates is a simplifying adapter for the GCE RegionSslCertificates.
  17450. type GCEBetaRegionSslCertificates struct {
  17451. s *Service
  17452. }
  17453. // Get the SslCertificate named by key.
  17454. func (g *GCEBetaRegionSslCertificates) Get(ctx context.Context, key *meta.Key) (*beta.SslCertificate, error) {
  17455. klog.V(5).Infof("GCEBetaRegionSslCertificates.Get(%v, %v): called", ctx, key)
  17456. if !key.Valid() {
  17457. klog.V(2).Infof("GCEBetaRegionSslCertificates.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  17458. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  17459. }
  17460. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionSslCertificates")
  17461. rk := &RateLimitKey{
  17462. ProjectID: projectID,
  17463. Operation: "Get",
  17464. Version: meta.Version("beta"),
  17465. Service: "RegionSslCertificates",
  17466. }
  17467. klog.V(5).Infof("GCEBetaRegionSslCertificates.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  17468. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  17469. klog.V(4).Infof("GCEBetaRegionSslCertificates.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  17470. return nil, err
  17471. }
  17472. call := g.s.Beta.RegionSslCertificates.Get(projectID, key.Region, key.Name)
  17473. call.Context(ctx)
  17474. v, err := call.Do()
  17475. klog.V(4).Infof("GCEBetaRegionSslCertificates.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  17476. return v, err
  17477. }
  17478. // List all SslCertificate objects.
  17479. func (g *GCEBetaRegionSslCertificates) List(ctx context.Context, region string, fl *filter.F) ([]*beta.SslCertificate, error) {
  17480. klog.V(5).Infof("GCEBetaRegionSslCertificates.List(%v, %v, %v) called", ctx, region, fl)
  17481. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionSslCertificates")
  17482. rk := &RateLimitKey{
  17483. ProjectID: projectID,
  17484. Operation: "List",
  17485. Version: meta.Version("beta"),
  17486. Service: "RegionSslCertificates",
  17487. }
  17488. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  17489. return nil, err
  17490. }
  17491. klog.V(5).Infof("GCEBetaRegionSslCertificates.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk)
  17492. call := g.s.Beta.RegionSslCertificates.List(projectID, region)
  17493. if fl != filter.None {
  17494. call.Filter(fl.String())
  17495. }
  17496. var all []*beta.SslCertificate
  17497. f := func(l *beta.SslCertificateList) error {
  17498. klog.V(5).Infof("GCEBetaRegionSslCertificates.List(%v, ..., %v): page %+v", ctx, fl, l)
  17499. all = append(all, l.Items...)
  17500. return nil
  17501. }
  17502. if err := call.Pages(ctx, f); err != nil {
  17503. klog.V(4).Infof("GCEBetaRegionSslCertificates.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  17504. return nil, err
  17505. }
  17506. if klog.V(4) {
  17507. klog.V(4).Infof("GCEBetaRegionSslCertificates.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  17508. } else if klog.V(5) {
  17509. var asStr []string
  17510. for _, o := range all {
  17511. asStr = append(asStr, fmt.Sprintf("%+v", o))
  17512. }
  17513. klog.V(5).Infof("GCEBetaRegionSslCertificates.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  17514. }
  17515. return all, nil
  17516. }
  17517. // Insert SslCertificate with key of value obj.
  17518. func (g *GCEBetaRegionSslCertificates) Insert(ctx context.Context, key *meta.Key, obj *beta.SslCertificate) error {
  17519. klog.V(5).Infof("GCEBetaRegionSslCertificates.Insert(%v, %v, %+v): called", ctx, key, obj)
  17520. if !key.Valid() {
  17521. klog.V(2).Infof("GCEBetaRegionSslCertificates.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  17522. return fmt.Errorf("invalid GCE key (%+v)", key)
  17523. }
  17524. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionSslCertificates")
  17525. rk := &RateLimitKey{
  17526. ProjectID: projectID,
  17527. Operation: "Insert",
  17528. Version: meta.Version("beta"),
  17529. Service: "RegionSslCertificates",
  17530. }
  17531. klog.V(5).Infof("GCEBetaRegionSslCertificates.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  17532. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  17533. klog.V(4).Infof("GCEBetaRegionSslCertificates.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  17534. return err
  17535. }
  17536. obj.Name = key.Name
  17537. call := g.s.Beta.RegionSslCertificates.Insert(projectID, key.Region, obj)
  17538. call.Context(ctx)
  17539. op, err := call.Do()
  17540. if err != nil {
  17541. klog.V(4).Infof("GCEBetaRegionSslCertificates.Insert(%v, %v, ...) = %+v", ctx, key, err)
  17542. return err
  17543. }
  17544. err = g.s.WaitForCompletion(ctx, op)
  17545. klog.V(4).Infof("GCEBetaRegionSslCertificates.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  17546. return err
  17547. }
  17548. // Delete the SslCertificate referenced by key.
  17549. func (g *GCEBetaRegionSslCertificates) Delete(ctx context.Context, key *meta.Key) error {
  17550. klog.V(5).Infof("GCEBetaRegionSslCertificates.Delete(%v, %v): called", ctx, key)
  17551. if !key.Valid() {
  17552. klog.V(2).Infof("GCEBetaRegionSslCertificates.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  17553. return fmt.Errorf("invalid GCE key (%+v)", key)
  17554. }
  17555. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionSslCertificates")
  17556. rk := &RateLimitKey{
  17557. ProjectID: projectID,
  17558. Operation: "Delete",
  17559. Version: meta.Version("beta"),
  17560. Service: "RegionSslCertificates",
  17561. }
  17562. klog.V(5).Infof("GCEBetaRegionSslCertificates.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  17563. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  17564. klog.V(4).Infof("GCEBetaRegionSslCertificates.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  17565. return err
  17566. }
  17567. call := g.s.Beta.RegionSslCertificates.Delete(projectID, key.Region, key.Name)
  17568. call.Context(ctx)
  17569. op, err := call.Do()
  17570. if err != nil {
  17571. klog.V(4).Infof("GCEBetaRegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  17572. return err
  17573. }
  17574. err = g.s.WaitForCompletion(ctx, op)
  17575. klog.V(4).Infof("GCEBetaRegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err)
  17576. return err
  17577. }
  17578. // AlphaSubnetworks is an interface that allows for mocking of Subnetworks.
  17579. type AlphaSubnetworks interface {
  17580. Get(ctx context.Context, key *meta.Key) (*alpha.Subnetwork, error)
  17581. List(ctx context.Context, region string, fl *filter.F) ([]*alpha.Subnetwork, error)
  17582. Insert(ctx context.Context, key *meta.Key, obj *alpha.Subnetwork) error
  17583. Delete(ctx context.Context, key *meta.Key) error
  17584. }
  17585. // NewMockAlphaSubnetworks returns a new mock for Subnetworks.
  17586. func NewMockAlphaSubnetworks(pr ProjectRouter, objs map[meta.Key]*MockSubnetworksObj) *MockAlphaSubnetworks {
  17587. mock := &MockAlphaSubnetworks{
  17588. ProjectRouter: pr,
  17589. Objects: objs,
  17590. GetError: map[meta.Key]error{},
  17591. InsertError: map[meta.Key]error{},
  17592. DeleteError: map[meta.Key]error{},
  17593. }
  17594. return mock
  17595. }
  17596. // MockAlphaSubnetworks is the mock for Subnetworks.
  17597. type MockAlphaSubnetworks struct {
  17598. Lock sync.Mutex
  17599. ProjectRouter ProjectRouter
  17600. // Objects maintained by the mock.
  17601. Objects map[meta.Key]*MockSubnetworksObj
  17602. // If an entry exists for the given key and operation, then the error
  17603. // will be returned instead of the operation.
  17604. GetError map[meta.Key]error
  17605. ListError *error
  17606. InsertError map[meta.Key]error
  17607. DeleteError map[meta.Key]error
  17608. // xxxHook allow you to intercept the standard processing of the mock in
  17609. // order to add your own logic. Return (true, _, _) to prevent the normal
  17610. // execution flow of the mock. Return (false, nil, nil) to continue with
  17611. // normal mock behavior/ after the hook function executes.
  17612. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaSubnetworks) (bool, *alpha.Subnetwork, error)
  17613. ListHook func(ctx context.Context, region string, fl *filter.F, m *MockAlphaSubnetworks) (bool, []*alpha.Subnetwork, error)
  17614. InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.Subnetwork, m *MockAlphaSubnetworks) (bool, error)
  17615. DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaSubnetworks) (bool, error)
  17616. // X is extra state that can be used as part of the mock. Generated code
  17617. // will not use this field.
  17618. X interface{}
  17619. }
  17620. // Get returns the object from the mock.
  17621. func (m *MockAlphaSubnetworks) Get(ctx context.Context, key *meta.Key) (*alpha.Subnetwork, error) {
  17622. if m.GetHook != nil {
  17623. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  17624. klog.V(5).Infof("MockAlphaSubnetworks.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  17625. return obj, err
  17626. }
  17627. }
  17628. if !key.Valid() {
  17629. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  17630. }
  17631. m.Lock.Lock()
  17632. defer m.Lock.Unlock()
  17633. if err, ok := m.GetError[*key]; ok {
  17634. klog.V(5).Infof("MockAlphaSubnetworks.Get(%v, %s) = nil, %v", ctx, key, err)
  17635. return nil, err
  17636. }
  17637. if obj, ok := m.Objects[*key]; ok {
  17638. typedObj := obj.ToAlpha()
  17639. klog.V(5).Infof("MockAlphaSubnetworks.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  17640. return typedObj, nil
  17641. }
  17642. err := &googleapi.Error{
  17643. Code: http.StatusNotFound,
  17644. Message: fmt.Sprintf("MockAlphaSubnetworks %v not found", key),
  17645. }
  17646. klog.V(5).Infof("MockAlphaSubnetworks.Get(%v, %s) = nil, %v", ctx, key, err)
  17647. return nil, err
  17648. }
  17649. // List all of the objects in the mock in the given region.
  17650. func (m *MockAlphaSubnetworks) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.Subnetwork, error) {
  17651. if m.ListHook != nil {
  17652. if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept {
  17653. klog.V(5).Infof("MockAlphaSubnetworks.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err)
  17654. return objs, err
  17655. }
  17656. }
  17657. m.Lock.Lock()
  17658. defer m.Lock.Unlock()
  17659. if m.ListError != nil {
  17660. err := *m.ListError
  17661. klog.V(5).Infof("MockAlphaSubnetworks.List(%v, %q, %v) = nil, %v", ctx, region, fl, err)
  17662. return nil, *m.ListError
  17663. }
  17664. var objs []*alpha.Subnetwork
  17665. for key, obj := range m.Objects {
  17666. if key.Region != region {
  17667. continue
  17668. }
  17669. if !fl.Match(obj.ToAlpha()) {
  17670. continue
  17671. }
  17672. objs = append(objs, obj.ToAlpha())
  17673. }
  17674. klog.V(5).Infof("MockAlphaSubnetworks.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs))
  17675. return objs, nil
  17676. }
  17677. // Insert is a mock for inserting/creating a new object.
  17678. func (m *MockAlphaSubnetworks) Insert(ctx context.Context, key *meta.Key, obj *alpha.Subnetwork) error {
  17679. if m.InsertHook != nil {
  17680. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  17681. klog.V(5).Infof("MockAlphaSubnetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  17682. return err
  17683. }
  17684. }
  17685. if !key.Valid() {
  17686. return fmt.Errorf("invalid GCE key (%+v)", key)
  17687. }
  17688. m.Lock.Lock()
  17689. defer m.Lock.Unlock()
  17690. if err, ok := m.InsertError[*key]; ok {
  17691. klog.V(5).Infof("MockAlphaSubnetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  17692. return err
  17693. }
  17694. if _, ok := m.Objects[*key]; ok {
  17695. err := &googleapi.Error{
  17696. Code: http.StatusConflict,
  17697. Message: fmt.Sprintf("MockAlphaSubnetworks %v exists", key),
  17698. }
  17699. klog.V(5).Infof("MockAlphaSubnetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  17700. return err
  17701. }
  17702. obj.Name = key.Name
  17703. projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "subnetworks")
  17704. obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "subnetworks", key)
  17705. m.Objects[*key] = &MockSubnetworksObj{obj}
  17706. klog.V(5).Infof("MockAlphaSubnetworks.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  17707. return nil
  17708. }
  17709. // Delete is a mock for deleting the object.
  17710. func (m *MockAlphaSubnetworks) Delete(ctx context.Context, key *meta.Key) error {
  17711. if m.DeleteHook != nil {
  17712. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  17713. klog.V(5).Infof("MockAlphaSubnetworks.Delete(%v, %v) = %v", ctx, key, err)
  17714. return err
  17715. }
  17716. }
  17717. if !key.Valid() {
  17718. return fmt.Errorf("invalid GCE key (%+v)", key)
  17719. }
  17720. m.Lock.Lock()
  17721. defer m.Lock.Unlock()
  17722. if err, ok := m.DeleteError[*key]; ok {
  17723. klog.V(5).Infof("MockAlphaSubnetworks.Delete(%v, %v) = %v", ctx, key, err)
  17724. return err
  17725. }
  17726. if _, ok := m.Objects[*key]; !ok {
  17727. err := &googleapi.Error{
  17728. Code: http.StatusNotFound,
  17729. Message: fmt.Sprintf("MockAlphaSubnetworks %v not found", key),
  17730. }
  17731. klog.V(5).Infof("MockAlphaSubnetworks.Delete(%v, %v) = %v", ctx, key, err)
  17732. return err
  17733. }
  17734. delete(m.Objects, *key)
  17735. klog.V(5).Infof("MockAlphaSubnetworks.Delete(%v, %v) = nil", ctx, key)
  17736. return nil
  17737. }
  17738. // Obj wraps the object for use in the mock.
  17739. func (m *MockAlphaSubnetworks) Obj(o *alpha.Subnetwork) *MockSubnetworksObj {
  17740. return &MockSubnetworksObj{o}
  17741. }
  17742. // GCEAlphaSubnetworks is a simplifying adapter for the GCE Subnetworks.
  17743. type GCEAlphaSubnetworks struct {
  17744. s *Service
  17745. }
  17746. // Get the Subnetwork named by key.
  17747. func (g *GCEAlphaSubnetworks) Get(ctx context.Context, key *meta.Key) (*alpha.Subnetwork, error) {
  17748. klog.V(5).Infof("GCEAlphaSubnetworks.Get(%v, %v): called", ctx, key)
  17749. if !key.Valid() {
  17750. klog.V(2).Infof("GCEAlphaSubnetworks.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  17751. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  17752. }
  17753. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Subnetworks")
  17754. rk := &RateLimitKey{
  17755. ProjectID: projectID,
  17756. Operation: "Get",
  17757. Version: meta.Version("alpha"),
  17758. Service: "Subnetworks",
  17759. }
  17760. klog.V(5).Infof("GCEAlphaSubnetworks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  17761. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  17762. klog.V(4).Infof("GCEAlphaSubnetworks.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  17763. return nil, err
  17764. }
  17765. call := g.s.Alpha.Subnetworks.Get(projectID, key.Region, key.Name)
  17766. call.Context(ctx)
  17767. v, err := call.Do()
  17768. klog.V(4).Infof("GCEAlphaSubnetworks.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  17769. return v, err
  17770. }
  17771. // List all Subnetwork objects.
  17772. func (g *GCEAlphaSubnetworks) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.Subnetwork, error) {
  17773. klog.V(5).Infof("GCEAlphaSubnetworks.List(%v, %v, %v) called", ctx, region, fl)
  17774. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Subnetworks")
  17775. rk := &RateLimitKey{
  17776. ProjectID: projectID,
  17777. Operation: "List",
  17778. Version: meta.Version("alpha"),
  17779. Service: "Subnetworks",
  17780. }
  17781. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  17782. return nil, err
  17783. }
  17784. klog.V(5).Infof("GCEAlphaSubnetworks.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk)
  17785. call := g.s.Alpha.Subnetworks.List(projectID, region)
  17786. if fl != filter.None {
  17787. call.Filter(fl.String())
  17788. }
  17789. var all []*alpha.Subnetwork
  17790. f := func(l *alpha.SubnetworkList) error {
  17791. klog.V(5).Infof("GCEAlphaSubnetworks.List(%v, ..., %v): page %+v", ctx, fl, l)
  17792. all = append(all, l.Items...)
  17793. return nil
  17794. }
  17795. if err := call.Pages(ctx, f); err != nil {
  17796. klog.V(4).Infof("GCEAlphaSubnetworks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  17797. return nil, err
  17798. }
  17799. if klog.V(4) {
  17800. klog.V(4).Infof("GCEAlphaSubnetworks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  17801. } else if klog.V(5) {
  17802. var asStr []string
  17803. for _, o := range all {
  17804. asStr = append(asStr, fmt.Sprintf("%+v", o))
  17805. }
  17806. klog.V(5).Infof("GCEAlphaSubnetworks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  17807. }
  17808. return all, nil
  17809. }
  17810. // Insert Subnetwork with key of value obj.
  17811. func (g *GCEAlphaSubnetworks) Insert(ctx context.Context, key *meta.Key, obj *alpha.Subnetwork) error {
  17812. klog.V(5).Infof("GCEAlphaSubnetworks.Insert(%v, %v, %+v): called", ctx, key, obj)
  17813. if !key.Valid() {
  17814. klog.V(2).Infof("GCEAlphaSubnetworks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  17815. return fmt.Errorf("invalid GCE key (%+v)", key)
  17816. }
  17817. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Subnetworks")
  17818. rk := &RateLimitKey{
  17819. ProjectID: projectID,
  17820. Operation: "Insert",
  17821. Version: meta.Version("alpha"),
  17822. Service: "Subnetworks",
  17823. }
  17824. klog.V(5).Infof("GCEAlphaSubnetworks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  17825. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  17826. klog.V(4).Infof("GCEAlphaSubnetworks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  17827. return err
  17828. }
  17829. obj.Name = key.Name
  17830. call := g.s.Alpha.Subnetworks.Insert(projectID, key.Region, obj)
  17831. call.Context(ctx)
  17832. op, err := call.Do()
  17833. if err != nil {
  17834. klog.V(4).Infof("GCEAlphaSubnetworks.Insert(%v, %v, ...) = %+v", ctx, key, err)
  17835. return err
  17836. }
  17837. err = g.s.WaitForCompletion(ctx, op)
  17838. klog.V(4).Infof("GCEAlphaSubnetworks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  17839. return err
  17840. }
  17841. // Delete the Subnetwork referenced by key.
  17842. func (g *GCEAlphaSubnetworks) Delete(ctx context.Context, key *meta.Key) error {
  17843. klog.V(5).Infof("GCEAlphaSubnetworks.Delete(%v, %v): called", ctx, key)
  17844. if !key.Valid() {
  17845. klog.V(2).Infof("GCEAlphaSubnetworks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  17846. return fmt.Errorf("invalid GCE key (%+v)", key)
  17847. }
  17848. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Subnetworks")
  17849. rk := &RateLimitKey{
  17850. ProjectID: projectID,
  17851. Operation: "Delete",
  17852. Version: meta.Version("alpha"),
  17853. Service: "Subnetworks",
  17854. }
  17855. klog.V(5).Infof("GCEAlphaSubnetworks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  17856. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  17857. klog.V(4).Infof("GCEAlphaSubnetworks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  17858. return err
  17859. }
  17860. call := g.s.Alpha.Subnetworks.Delete(projectID, key.Region, key.Name)
  17861. call.Context(ctx)
  17862. op, err := call.Do()
  17863. if err != nil {
  17864. klog.V(4).Infof("GCEAlphaSubnetworks.Delete(%v, %v) = %v", ctx, key, err)
  17865. return err
  17866. }
  17867. err = g.s.WaitForCompletion(ctx, op)
  17868. klog.V(4).Infof("GCEAlphaSubnetworks.Delete(%v, %v) = %v", ctx, key, err)
  17869. return err
  17870. }
  17871. // BetaSubnetworks is an interface that allows for mocking of Subnetworks.
  17872. type BetaSubnetworks interface {
  17873. Get(ctx context.Context, key *meta.Key) (*beta.Subnetwork, error)
  17874. List(ctx context.Context, region string, fl *filter.F) ([]*beta.Subnetwork, error)
  17875. Insert(ctx context.Context, key *meta.Key, obj *beta.Subnetwork) error
  17876. Delete(ctx context.Context, key *meta.Key) error
  17877. }
  17878. // NewMockBetaSubnetworks returns a new mock for Subnetworks.
  17879. func NewMockBetaSubnetworks(pr ProjectRouter, objs map[meta.Key]*MockSubnetworksObj) *MockBetaSubnetworks {
  17880. mock := &MockBetaSubnetworks{
  17881. ProjectRouter: pr,
  17882. Objects: objs,
  17883. GetError: map[meta.Key]error{},
  17884. InsertError: map[meta.Key]error{},
  17885. DeleteError: map[meta.Key]error{},
  17886. }
  17887. return mock
  17888. }
  17889. // MockBetaSubnetworks is the mock for Subnetworks.
  17890. type MockBetaSubnetworks struct {
  17891. Lock sync.Mutex
  17892. ProjectRouter ProjectRouter
  17893. // Objects maintained by the mock.
  17894. Objects map[meta.Key]*MockSubnetworksObj
  17895. // If an entry exists for the given key and operation, then the error
  17896. // will be returned instead of the operation.
  17897. GetError map[meta.Key]error
  17898. ListError *error
  17899. InsertError map[meta.Key]error
  17900. DeleteError map[meta.Key]error
  17901. // xxxHook allow you to intercept the standard processing of the mock in
  17902. // order to add your own logic. Return (true, _, _) to prevent the normal
  17903. // execution flow of the mock. Return (false, nil, nil) to continue with
  17904. // normal mock behavior/ after the hook function executes.
  17905. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaSubnetworks) (bool, *beta.Subnetwork, error)
  17906. ListHook func(ctx context.Context, region string, fl *filter.F, m *MockBetaSubnetworks) (bool, []*beta.Subnetwork, error)
  17907. InsertHook func(ctx context.Context, key *meta.Key, obj *beta.Subnetwork, m *MockBetaSubnetworks) (bool, error)
  17908. DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaSubnetworks) (bool, error)
  17909. // X is extra state that can be used as part of the mock. Generated code
  17910. // will not use this field.
  17911. X interface{}
  17912. }
  17913. // Get returns the object from the mock.
  17914. func (m *MockBetaSubnetworks) Get(ctx context.Context, key *meta.Key) (*beta.Subnetwork, error) {
  17915. if m.GetHook != nil {
  17916. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  17917. klog.V(5).Infof("MockBetaSubnetworks.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  17918. return obj, err
  17919. }
  17920. }
  17921. if !key.Valid() {
  17922. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  17923. }
  17924. m.Lock.Lock()
  17925. defer m.Lock.Unlock()
  17926. if err, ok := m.GetError[*key]; ok {
  17927. klog.V(5).Infof("MockBetaSubnetworks.Get(%v, %s) = nil, %v", ctx, key, err)
  17928. return nil, err
  17929. }
  17930. if obj, ok := m.Objects[*key]; ok {
  17931. typedObj := obj.ToBeta()
  17932. klog.V(5).Infof("MockBetaSubnetworks.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  17933. return typedObj, nil
  17934. }
  17935. err := &googleapi.Error{
  17936. Code: http.StatusNotFound,
  17937. Message: fmt.Sprintf("MockBetaSubnetworks %v not found", key),
  17938. }
  17939. klog.V(5).Infof("MockBetaSubnetworks.Get(%v, %s) = nil, %v", ctx, key, err)
  17940. return nil, err
  17941. }
  17942. // List all of the objects in the mock in the given region.
  17943. func (m *MockBetaSubnetworks) List(ctx context.Context, region string, fl *filter.F) ([]*beta.Subnetwork, error) {
  17944. if m.ListHook != nil {
  17945. if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept {
  17946. klog.V(5).Infof("MockBetaSubnetworks.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err)
  17947. return objs, err
  17948. }
  17949. }
  17950. m.Lock.Lock()
  17951. defer m.Lock.Unlock()
  17952. if m.ListError != nil {
  17953. err := *m.ListError
  17954. klog.V(5).Infof("MockBetaSubnetworks.List(%v, %q, %v) = nil, %v", ctx, region, fl, err)
  17955. return nil, *m.ListError
  17956. }
  17957. var objs []*beta.Subnetwork
  17958. for key, obj := range m.Objects {
  17959. if key.Region != region {
  17960. continue
  17961. }
  17962. if !fl.Match(obj.ToBeta()) {
  17963. continue
  17964. }
  17965. objs = append(objs, obj.ToBeta())
  17966. }
  17967. klog.V(5).Infof("MockBetaSubnetworks.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs))
  17968. return objs, nil
  17969. }
  17970. // Insert is a mock for inserting/creating a new object.
  17971. func (m *MockBetaSubnetworks) Insert(ctx context.Context, key *meta.Key, obj *beta.Subnetwork) error {
  17972. if m.InsertHook != nil {
  17973. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  17974. klog.V(5).Infof("MockBetaSubnetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  17975. return err
  17976. }
  17977. }
  17978. if !key.Valid() {
  17979. return fmt.Errorf("invalid GCE key (%+v)", key)
  17980. }
  17981. m.Lock.Lock()
  17982. defer m.Lock.Unlock()
  17983. if err, ok := m.InsertError[*key]; ok {
  17984. klog.V(5).Infof("MockBetaSubnetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  17985. return err
  17986. }
  17987. if _, ok := m.Objects[*key]; ok {
  17988. err := &googleapi.Error{
  17989. Code: http.StatusConflict,
  17990. Message: fmt.Sprintf("MockBetaSubnetworks %v exists", key),
  17991. }
  17992. klog.V(5).Infof("MockBetaSubnetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  17993. return err
  17994. }
  17995. obj.Name = key.Name
  17996. projectID := m.ProjectRouter.ProjectID(ctx, "beta", "subnetworks")
  17997. obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "subnetworks", key)
  17998. m.Objects[*key] = &MockSubnetworksObj{obj}
  17999. klog.V(5).Infof("MockBetaSubnetworks.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  18000. return nil
  18001. }
  18002. // Delete is a mock for deleting the object.
  18003. func (m *MockBetaSubnetworks) Delete(ctx context.Context, key *meta.Key) error {
  18004. if m.DeleteHook != nil {
  18005. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  18006. klog.V(5).Infof("MockBetaSubnetworks.Delete(%v, %v) = %v", ctx, key, err)
  18007. return err
  18008. }
  18009. }
  18010. if !key.Valid() {
  18011. return fmt.Errorf("invalid GCE key (%+v)", key)
  18012. }
  18013. m.Lock.Lock()
  18014. defer m.Lock.Unlock()
  18015. if err, ok := m.DeleteError[*key]; ok {
  18016. klog.V(5).Infof("MockBetaSubnetworks.Delete(%v, %v) = %v", ctx, key, err)
  18017. return err
  18018. }
  18019. if _, ok := m.Objects[*key]; !ok {
  18020. err := &googleapi.Error{
  18021. Code: http.StatusNotFound,
  18022. Message: fmt.Sprintf("MockBetaSubnetworks %v not found", key),
  18023. }
  18024. klog.V(5).Infof("MockBetaSubnetworks.Delete(%v, %v) = %v", ctx, key, err)
  18025. return err
  18026. }
  18027. delete(m.Objects, *key)
  18028. klog.V(5).Infof("MockBetaSubnetworks.Delete(%v, %v) = nil", ctx, key)
  18029. return nil
  18030. }
  18031. // Obj wraps the object for use in the mock.
  18032. func (m *MockBetaSubnetworks) Obj(o *beta.Subnetwork) *MockSubnetworksObj {
  18033. return &MockSubnetworksObj{o}
  18034. }
  18035. // GCEBetaSubnetworks is a simplifying adapter for the GCE Subnetworks.
  18036. type GCEBetaSubnetworks struct {
  18037. s *Service
  18038. }
  18039. // Get the Subnetwork named by key.
  18040. func (g *GCEBetaSubnetworks) Get(ctx context.Context, key *meta.Key) (*beta.Subnetwork, error) {
  18041. klog.V(5).Infof("GCEBetaSubnetworks.Get(%v, %v): called", ctx, key)
  18042. if !key.Valid() {
  18043. klog.V(2).Infof("GCEBetaSubnetworks.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  18044. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  18045. }
  18046. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Subnetworks")
  18047. rk := &RateLimitKey{
  18048. ProjectID: projectID,
  18049. Operation: "Get",
  18050. Version: meta.Version("beta"),
  18051. Service: "Subnetworks",
  18052. }
  18053. klog.V(5).Infof("GCEBetaSubnetworks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  18054. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  18055. klog.V(4).Infof("GCEBetaSubnetworks.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  18056. return nil, err
  18057. }
  18058. call := g.s.Beta.Subnetworks.Get(projectID, key.Region, key.Name)
  18059. call.Context(ctx)
  18060. v, err := call.Do()
  18061. klog.V(4).Infof("GCEBetaSubnetworks.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  18062. return v, err
  18063. }
  18064. // List all Subnetwork objects.
  18065. func (g *GCEBetaSubnetworks) List(ctx context.Context, region string, fl *filter.F) ([]*beta.Subnetwork, error) {
  18066. klog.V(5).Infof("GCEBetaSubnetworks.List(%v, %v, %v) called", ctx, region, fl)
  18067. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Subnetworks")
  18068. rk := &RateLimitKey{
  18069. ProjectID: projectID,
  18070. Operation: "List",
  18071. Version: meta.Version("beta"),
  18072. Service: "Subnetworks",
  18073. }
  18074. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  18075. return nil, err
  18076. }
  18077. klog.V(5).Infof("GCEBetaSubnetworks.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk)
  18078. call := g.s.Beta.Subnetworks.List(projectID, region)
  18079. if fl != filter.None {
  18080. call.Filter(fl.String())
  18081. }
  18082. var all []*beta.Subnetwork
  18083. f := func(l *beta.SubnetworkList) error {
  18084. klog.V(5).Infof("GCEBetaSubnetworks.List(%v, ..., %v): page %+v", ctx, fl, l)
  18085. all = append(all, l.Items...)
  18086. return nil
  18087. }
  18088. if err := call.Pages(ctx, f); err != nil {
  18089. klog.V(4).Infof("GCEBetaSubnetworks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  18090. return nil, err
  18091. }
  18092. if klog.V(4) {
  18093. klog.V(4).Infof("GCEBetaSubnetworks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  18094. } else if klog.V(5) {
  18095. var asStr []string
  18096. for _, o := range all {
  18097. asStr = append(asStr, fmt.Sprintf("%+v", o))
  18098. }
  18099. klog.V(5).Infof("GCEBetaSubnetworks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  18100. }
  18101. return all, nil
  18102. }
  18103. // Insert Subnetwork with key of value obj.
  18104. func (g *GCEBetaSubnetworks) Insert(ctx context.Context, key *meta.Key, obj *beta.Subnetwork) error {
  18105. klog.V(5).Infof("GCEBetaSubnetworks.Insert(%v, %v, %+v): called", ctx, key, obj)
  18106. if !key.Valid() {
  18107. klog.V(2).Infof("GCEBetaSubnetworks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  18108. return fmt.Errorf("invalid GCE key (%+v)", key)
  18109. }
  18110. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Subnetworks")
  18111. rk := &RateLimitKey{
  18112. ProjectID: projectID,
  18113. Operation: "Insert",
  18114. Version: meta.Version("beta"),
  18115. Service: "Subnetworks",
  18116. }
  18117. klog.V(5).Infof("GCEBetaSubnetworks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  18118. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  18119. klog.V(4).Infof("GCEBetaSubnetworks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  18120. return err
  18121. }
  18122. obj.Name = key.Name
  18123. call := g.s.Beta.Subnetworks.Insert(projectID, key.Region, obj)
  18124. call.Context(ctx)
  18125. op, err := call.Do()
  18126. if err != nil {
  18127. klog.V(4).Infof("GCEBetaSubnetworks.Insert(%v, %v, ...) = %+v", ctx, key, err)
  18128. return err
  18129. }
  18130. err = g.s.WaitForCompletion(ctx, op)
  18131. klog.V(4).Infof("GCEBetaSubnetworks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  18132. return err
  18133. }
  18134. // Delete the Subnetwork referenced by key.
  18135. func (g *GCEBetaSubnetworks) Delete(ctx context.Context, key *meta.Key) error {
  18136. klog.V(5).Infof("GCEBetaSubnetworks.Delete(%v, %v): called", ctx, key)
  18137. if !key.Valid() {
  18138. klog.V(2).Infof("GCEBetaSubnetworks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  18139. return fmt.Errorf("invalid GCE key (%+v)", key)
  18140. }
  18141. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Subnetworks")
  18142. rk := &RateLimitKey{
  18143. ProjectID: projectID,
  18144. Operation: "Delete",
  18145. Version: meta.Version("beta"),
  18146. Service: "Subnetworks",
  18147. }
  18148. klog.V(5).Infof("GCEBetaSubnetworks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  18149. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  18150. klog.V(4).Infof("GCEBetaSubnetworks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  18151. return err
  18152. }
  18153. call := g.s.Beta.Subnetworks.Delete(projectID, key.Region, key.Name)
  18154. call.Context(ctx)
  18155. op, err := call.Do()
  18156. if err != nil {
  18157. klog.V(4).Infof("GCEBetaSubnetworks.Delete(%v, %v) = %v", ctx, key, err)
  18158. return err
  18159. }
  18160. err = g.s.WaitForCompletion(ctx, op)
  18161. klog.V(4).Infof("GCEBetaSubnetworks.Delete(%v, %v) = %v", ctx, key, err)
  18162. return err
  18163. }
  18164. // Subnetworks is an interface that allows for mocking of Subnetworks.
  18165. type Subnetworks interface {
  18166. Get(ctx context.Context, key *meta.Key) (*ga.Subnetwork, error)
  18167. List(ctx context.Context, region string, fl *filter.F) ([]*ga.Subnetwork, error)
  18168. Insert(ctx context.Context, key *meta.Key, obj *ga.Subnetwork) error
  18169. Delete(ctx context.Context, key *meta.Key) error
  18170. }
  18171. // NewMockSubnetworks returns a new mock for Subnetworks.
  18172. func NewMockSubnetworks(pr ProjectRouter, objs map[meta.Key]*MockSubnetworksObj) *MockSubnetworks {
  18173. mock := &MockSubnetworks{
  18174. ProjectRouter: pr,
  18175. Objects: objs,
  18176. GetError: map[meta.Key]error{},
  18177. InsertError: map[meta.Key]error{},
  18178. DeleteError: map[meta.Key]error{},
  18179. }
  18180. return mock
  18181. }
  18182. // MockSubnetworks is the mock for Subnetworks.
  18183. type MockSubnetworks struct {
  18184. Lock sync.Mutex
  18185. ProjectRouter ProjectRouter
  18186. // Objects maintained by the mock.
  18187. Objects map[meta.Key]*MockSubnetworksObj
  18188. // If an entry exists for the given key and operation, then the error
  18189. // will be returned instead of the operation.
  18190. GetError map[meta.Key]error
  18191. ListError *error
  18192. InsertError map[meta.Key]error
  18193. DeleteError map[meta.Key]error
  18194. // xxxHook allow you to intercept the standard processing of the mock in
  18195. // order to add your own logic. Return (true, _, _) to prevent the normal
  18196. // execution flow of the mock. Return (false, nil, nil) to continue with
  18197. // normal mock behavior/ after the hook function executes.
  18198. GetHook func(ctx context.Context, key *meta.Key, m *MockSubnetworks) (bool, *ga.Subnetwork, error)
  18199. ListHook func(ctx context.Context, region string, fl *filter.F, m *MockSubnetworks) (bool, []*ga.Subnetwork, error)
  18200. InsertHook func(ctx context.Context, key *meta.Key, obj *ga.Subnetwork, m *MockSubnetworks) (bool, error)
  18201. DeleteHook func(ctx context.Context, key *meta.Key, m *MockSubnetworks) (bool, error)
  18202. // X is extra state that can be used as part of the mock. Generated code
  18203. // will not use this field.
  18204. X interface{}
  18205. }
  18206. // Get returns the object from the mock.
  18207. func (m *MockSubnetworks) Get(ctx context.Context, key *meta.Key) (*ga.Subnetwork, error) {
  18208. if m.GetHook != nil {
  18209. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  18210. klog.V(5).Infof("MockSubnetworks.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  18211. return obj, err
  18212. }
  18213. }
  18214. if !key.Valid() {
  18215. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  18216. }
  18217. m.Lock.Lock()
  18218. defer m.Lock.Unlock()
  18219. if err, ok := m.GetError[*key]; ok {
  18220. klog.V(5).Infof("MockSubnetworks.Get(%v, %s) = nil, %v", ctx, key, err)
  18221. return nil, err
  18222. }
  18223. if obj, ok := m.Objects[*key]; ok {
  18224. typedObj := obj.ToGA()
  18225. klog.V(5).Infof("MockSubnetworks.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  18226. return typedObj, nil
  18227. }
  18228. err := &googleapi.Error{
  18229. Code: http.StatusNotFound,
  18230. Message: fmt.Sprintf("MockSubnetworks %v not found", key),
  18231. }
  18232. klog.V(5).Infof("MockSubnetworks.Get(%v, %s) = nil, %v", ctx, key, err)
  18233. return nil, err
  18234. }
  18235. // List all of the objects in the mock in the given region.
  18236. func (m *MockSubnetworks) List(ctx context.Context, region string, fl *filter.F) ([]*ga.Subnetwork, error) {
  18237. if m.ListHook != nil {
  18238. if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept {
  18239. klog.V(5).Infof("MockSubnetworks.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err)
  18240. return objs, err
  18241. }
  18242. }
  18243. m.Lock.Lock()
  18244. defer m.Lock.Unlock()
  18245. if m.ListError != nil {
  18246. err := *m.ListError
  18247. klog.V(5).Infof("MockSubnetworks.List(%v, %q, %v) = nil, %v", ctx, region, fl, err)
  18248. return nil, *m.ListError
  18249. }
  18250. var objs []*ga.Subnetwork
  18251. for key, obj := range m.Objects {
  18252. if key.Region != region {
  18253. continue
  18254. }
  18255. if !fl.Match(obj.ToGA()) {
  18256. continue
  18257. }
  18258. objs = append(objs, obj.ToGA())
  18259. }
  18260. klog.V(5).Infof("MockSubnetworks.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs))
  18261. return objs, nil
  18262. }
  18263. // Insert is a mock for inserting/creating a new object.
  18264. func (m *MockSubnetworks) Insert(ctx context.Context, key *meta.Key, obj *ga.Subnetwork) error {
  18265. if m.InsertHook != nil {
  18266. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  18267. klog.V(5).Infof("MockSubnetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  18268. return err
  18269. }
  18270. }
  18271. if !key.Valid() {
  18272. return fmt.Errorf("invalid GCE key (%+v)", key)
  18273. }
  18274. m.Lock.Lock()
  18275. defer m.Lock.Unlock()
  18276. if err, ok := m.InsertError[*key]; ok {
  18277. klog.V(5).Infof("MockSubnetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  18278. return err
  18279. }
  18280. if _, ok := m.Objects[*key]; ok {
  18281. err := &googleapi.Error{
  18282. Code: http.StatusConflict,
  18283. Message: fmt.Sprintf("MockSubnetworks %v exists", key),
  18284. }
  18285. klog.V(5).Infof("MockSubnetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  18286. return err
  18287. }
  18288. obj.Name = key.Name
  18289. projectID := m.ProjectRouter.ProjectID(ctx, "ga", "subnetworks")
  18290. obj.SelfLink = SelfLink(meta.VersionGA, projectID, "subnetworks", key)
  18291. m.Objects[*key] = &MockSubnetworksObj{obj}
  18292. klog.V(5).Infof("MockSubnetworks.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  18293. return nil
  18294. }
  18295. // Delete is a mock for deleting the object.
  18296. func (m *MockSubnetworks) Delete(ctx context.Context, key *meta.Key) error {
  18297. if m.DeleteHook != nil {
  18298. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  18299. klog.V(5).Infof("MockSubnetworks.Delete(%v, %v) = %v", ctx, key, err)
  18300. return err
  18301. }
  18302. }
  18303. if !key.Valid() {
  18304. return fmt.Errorf("invalid GCE key (%+v)", key)
  18305. }
  18306. m.Lock.Lock()
  18307. defer m.Lock.Unlock()
  18308. if err, ok := m.DeleteError[*key]; ok {
  18309. klog.V(5).Infof("MockSubnetworks.Delete(%v, %v) = %v", ctx, key, err)
  18310. return err
  18311. }
  18312. if _, ok := m.Objects[*key]; !ok {
  18313. err := &googleapi.Error{
  18314. Code: http.StatusNotFound,
  18315. Message: fmt.Sprintf("MockSubnetworks %v not found", key),
  18316. }
  18317. klog.V(5).Infof("MockSubnetworks.Delete(%v, %v) = %v", ctx, key, err)
  18318. return err
  18319. }
  18320. delete(m.Objects, *key)
  18321. klog.V(5).Infof("MockSubnetworks.Delete(%v, %v) = nil", ctx, key)
  18322. return nil
  18323. }
  18324. // Obj wraps the object for use in the mock.
  18325. func (m *MockSubnetworks) Obj(o *ga.Subnetwork) *MockSubnetworksObj {
  18326. return &MockSubnetworksObj{o}
  18327. }
  18328. // GCESubnetworks is a simplifying adapter for the GCE Subnetworks.
  18329. type GCESubnetworks struct {
  18330. s *Service
  18331. }
  18332. // Get the Subnetwork named by key.
  18333. func (g *GCESubnetworks) Get(ctx context.Context, key *meta.Key) (*ga.Subnetwork, error) {
  18334. klog.V(5).Infof("GCESubnetworks.Get(%v, %v): called", ctx, key)
  18335. if !key.Valid() {
  18336. klog.V(2).Infof("GCESubnetworks.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  18337. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  18338. }
  18339. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Subnetworks")
  18340. rk := &RateLimitKey{
  18341. ProjectID: projectID,
  18342. Operation: "Get",
  18343. Version: meta.Version("ga"),
  18344. Service: "Subnetworks",
  18345. }
  18346. klog.V(5).Infof("GCESubnetworks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  18347. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  18348. klog.V(4).Infof("GCESubnetworks.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  18349. return nil, err
  18350. }
  18351. call := g.s.GA.Subnetworks.Get(projectID, key.Region, key.Name)
  18352. call.Context(ctx)
  18353. v, err := call.Do()
  18354. klog.V(4).Infof("GCESubnetworks.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  18355. return v, err
  18356. }
  18357. // List all Subnetwork objects.
  18358. func (g *GCESubnetworks) List(ctx context.Context, region string, fl *filter.F) ([]*ga.Subnetwork, error) {
  18359. klog.V(5).Infof("GCESubnetworks.List(%v, %v, %v) called", ctx, region, fl)
  18360. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Subnetworks")
  18361. rk := &RateLimitKey{
  18362. ProjectID: projectID,
  18363. Operation: "List",
  18364. Version: meta.Version("ga"),
  18365. Service: "Subnetworks",
  18366. }
  18367. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  18368. return nil, err
  18369. }
  18370. klog.V(5).Infof("GCESubnetworks.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk)
  18371. call := g.s.GA.Subnetworks.List(projectID, region)
  18372. if fl != filter.None {
  18373. call.Filter(fl.String())
  18374. }
  18375. var all []*ga.Subnetwork
  18376. f := func(l *ga.SubnetworkList) error {
  18377. klog.V(5).Infof("GCESubnetworks.List(%v, ..., %v): page %+v", ctx, fl, l)
  18378. all = append(all, l.Items...)
  18379. return nil
  18380. }
  18381. if err := call.Pages(ctx, f); err != nil {
  18382. klog.V(4).Infof("GCESubnetworks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  18383. return nil, err
  18384. }
  18385. if klog.V(4) {
  18386. klog.V(4).Infof("GCESubnetworks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  18387. } else if klog.V(5) {
  18388. var asStr []string
  18389. for _, o := range all {
  18390. asStr = append(asStr, fmt.Sprintf("%+v", o))
  18391. }
  18392. klog.V(5).Infof("GCESubnetworks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  18393. }
  18394. return all, nil
  18395. }
  18396. // Insert Subnetwork with key of value obj.
  18397. func (g *GCESubnetworks) Insert(ctx context.Context, key *meta.Key, obj *ga.Subnetwork) error {
  18398. klog.V(5).Infof("GCESubnetworks.Insert(%v, %v, %+v): called", ctx, key, obj)
  18399. if !key.Valid() {
  18400. klog.V(2).Infof("GCESubnetworks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  18401. return fmt.Errorf("invalid GCE key (%+v)", key)
  18402. }
  18403. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Subnetworks")
  18404. rk := &RateLimitKey{
  18405. ProjectID: projectID,
  18406. Operation: "Insert",
  18407. Version: meta.Version("ga"),
  18408. Service: "Subnetworks",
  18409. }
  18410. klog.V(5).Infof("GCESubnetworks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  18411. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  18412. klog.V(4).Infof("GCESubnetworks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  18413. return err
  18414. }
  18415. obj.Name = key.Name
  18416. call := g.s.GA.Subnetworks.Insert(projectID, key.Region, obj)
  18417. call.Context(ctx)
  18418. op, err := call.Do()
  18419. if err != nil {
  18420. klog.V(4).Infof("GCESubnetworks.Insert(%v, %v, ...) = %+v", ctx, key, err)
  18421. return err
  18422. }
  18423. err = g.s.WaitForCompletion(ctx, op)
  18424. klog.V(4).Infof("GCESubnetworks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  18425. return err
  18426. }
  18427. // Delete the Subnetwork referenced by key.
  18428. func (g *GCESubnetworks) Delete(ctx context.Context, key *meta.Key) error {
  18429. klog.V(5).Infof("GCESubnetworks.Delete(%v, %v): called", ctx, key)
  18430. if !key.Valid() {
  18431. klog.V(2).Infof("GCESubnetworks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  18432. return fmt.Errorf("invalid GCE key (%+v)", key)
  18433. }
  18434. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Subnetworks")
  18435. rk := &RateLimitKey{
  18436. ProjectID: projectID,
  18437. Operation: "Delete",
  18438. Version: meta.Version("ga"),
  18439. Service: "Subnetworks",
  18440. }
  18441. klog.V(5).Infof("GCESubnetworks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  18442. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  18443. klog.V(4).Infof("GCESubnetworks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  18444. return err
  18445. }
  18446. call := g.s.GA.Subnetworks.Delete(projectID, key.Region, key.Name)
  18447. call.Context(ctx)
  18448. op, err := call.Do()
  18449. if err != nil {
  18450. klog.V(4).Infof("GCESubnetworks.Delete(%v, %v) = %v", ctx, key, err)
  18451. return err
  18452. }
  18453. err = g.s.WaitForCompletion(ctx, op)
  18454. klog.V(4).Infof("GCESubnetworks.Delete(%v, %v) = %v", ctx, key, err)
  18455. return err
  18456. }
  18457. // AlphaTargetHttpProxies is an interface that allows for mocking of TargetHttpProxies.
  18458. type AlphaTargetHttpProxies interface {
  18459. Get(ctx context.Context, key *meta.Key) (*alpha.TargetHttpProxy, error)
  18460. List(ctx context.Context, fl *filter.F) ([]*alpha.TargetHttpProxy, error)
  18461. Insert(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpProxy) error
  18462. Delete(ctx context.Context, key *meta.Key) error
  18463. SetUrlMap(context.Context, *meta.Key, *alpha.UrlMapReference) error
  18464. }
  18465. // NewMockAlphaTargetHttpProxies returns a new mock for TargetHttpProxies.
  18466. func NewMockAlphaTargetHttpProxies(pr ProjectRouter, objs map[meta.Key]*MockTargetHttpProxiesObj) *MockAlphaTargetHttpProxies {
  18467. mock := &MockAlphaTargetHttpProxies{
  18468. ProjectRouter: pr,
  18469. Objects: objs,
  18470. GetError: map[meta.Key]error{},
  18471. InsertError: map[meta.Key]error{},
  18472. DeleteError: map[meta.Key]error{},
  18473. }
  18474. return mock
  18475. }
  18476. // MockAlphaTargetHttpProxies is the mock for TargetHttpProxies.
  18477. type MockAlphaTargetHttpProxies struct {
  18478. Lock sync.Mutex
  18479. ProjectRouter ProjectRouter
  18480. // Objects maintained by the mock.
  18481. Objects map[meta.Key]*MockTargetHttpProxiesObj
  18482. // If an entry exists for the given key and operation, then the error
  18483. // will be returned instead of the operation.
  18484. GetError map[meta.Key]error
  18485. ListError *error
  18486. InsertError map[meta.Key]error
  18487. DeleteError map[meta.Key]error
  18488. // xxxHook allow you to intercept the standard processing of the mock in
  18489. // order to add your own logic. Return (true, _, _) to prevent the normal
  18490. // execution flow of the mock. Return (false, nil, nil) to continue with
  18491. // normal mock behavior/ after the hook function executes.
  18492. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaTargetHttpProxies) (bool, *alpha.TargetHttpProxy, error)
  18493. ListHook func(ctx context.Context, fl *filter.F, m *MockAlphaTargetHttpProxies) (bool, []*alpha.TargetHttpProxy, error)
  18494. InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpProxy, m *MockAlphaTargetHttpProxies) (bool, error)
  18495. DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaTargetHttpProxies) (bool, error)
  18496. SetUrlMapHook func(context.Context, *meta.Key, *alpha.UrlMapReference, *MockAlphaTargetHttpProxies) error
  18497. // X is extra state that can be used as part of the mock. Generated code
  18498. // will not use this field.
  18499. X interface{}
  18500. }
  18501. // Get returns the object from the mock.
  18502. func (m *MockAlphaTargetHttpProxies) Get(ctx context.Context, key *meta.Key) (*alpha.TargetHttpProxy, error) {
  18503. if m.GetHook != nil {
  18504. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  18505. klog.V(5).Infof("MockAlphaTargetHttpProxies.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  18506. return obj, err
  18507. }
  18508. }
  18509. if !key.Valid() {
  18510. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  18511. }
  18512. m.Lock.Lock()
  18513. defer m.Lock.Unlock()
  18514. if err, ok := m.GetError[*key]; ok {
  18515. klog.V(5).Infof("MockAlphaTargetHttpProxies.Get(%v, %s) = nil, %v", ctx, key, err)
  18516. return nil, err
  18517. }
  18518. if obj, ok := m.Objects[*key]; ok {
  18519. typedObj := obj.ToAlpha()
  18520. klog.V(5).Infof("MockAlphaTargetHttpProxies.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  18521. return typedObj, nil
  18522. }
  18523. err := &googleapi.Error{
  18524. Code: http.StatusNotFound,
  18525. Message: fmt.Sprintf("MockAlphaTargetHttpProxies %v not found", key),
  18526. }
  18527. klog.V(5).Infof("MockAlphaTargetHttpProxies.Get(%v, %s) = nil, %v", ctx, key, err)
  18528. return nil, err
  18529. }
  18530. // List all of the objects in the mock.
  18531. func (m *MockAlphaTargetHttpProxies) List(ctx context.Context, fl *filter.F) ([]*alpha.TargetHttpProxy, error) {
  18532. if m.ListHook != nil {
  18533. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  18534. klog.V(5).Infof("MockAlphaTargetHttpProxies.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  18535. return objs, err
  18536. }
  18537. }
  18538. m.Lock.Lock()
  18539. defer m.Lock.Unlock()
  18540. if m.ListError != nil {
  18541. err := *m.ListError
  18542. klog.V(5).Infof("MockAlphaTargetHttpProxies.List(%v, %v) = nil, %v", ctx, fl, err)
  18543. return nil, *m.ListError
  18544. }
  18545. var objs []*alpha.TargetHttpProxy
  18546. for _, obj := range m.Objects {
  18547. if !fl.Match(obj.ToAlpha()) {
  18548. continue
  18549. }
  18550. objs = append(objs, obj.ToAlpha())
  18551. }
  18552. klog.V(5).Infof("MockAlphaTargetHttpProxies.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  18553. return objs, nil
  18554. }
  18555. // Insert is a mock for inserting/creating a new object.
  18556. func (m *MockAlphaTargetHttpProxies) Insert(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpProxy) error {
  18557. if m.InsertHook != nil {
  18558. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  18559. klog.V(5).Infof("MockAlphaTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  18560. return err
  18561. }
  18562. }
  18563. if !key.Valid() {
  18564. return fmt.Errorf("invalid GCE key (%+v)", key)
  18565. }
  18566. m.Lock.Lock()
  18567. defer m.Lock.Unlock()
  18568. if err, ok := m.InsertError[*key]; ok {
  18569. klog.V(5).Infof("MockAlphaTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  18570. return err
  18571. }
  18572. if _, ok := m.Objects[*key]; ok {
  18573. err := &googleapi.Error{
  18574. Code: http.StatusConflict,
  18575. Message: fmt.Sprintf("MockAlphaTargetHttpProxies %v exists", key),
  18576. }
  18577. klog.V(5).Infof("MockAlphaTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  18578. return err
  18579. }
  18580. obj.Name = key.Name
  18581. projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "targetHttpProxies")
  18582. obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "targetHttpProxies", key)
  18583. m.Objects[*key] = &MockTargetHttpProxiesObj{obj}
  18584. klog.V(5).Infof("MockAlphaTargetHttpProxies.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  18585. return nil
  18586. }
  18587. // Delete is a mock for deleting the object.
  18588. func (m *MockAlphaTargetHttpProxies) Delete(ctx context.Context, key *meta.Key) error {
  18589. if m.DeleteHook != nil {
  18590. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  18591. klog.V(5).Infof("MockAlphaTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  18592. return err
  18593. }
  18594. }
  18595. if !key.Valid() {
  18596. return fmt.Errorf("invalid GCE key (%+v)", key)
  18597. }
  18598. m.Lock.Lock()
  18599. defer m.Lock.Unlock()
  18600. if err, ok := m.DeleteError[*key]; ok {
  18601. klog.V(5).Infof("MockAlphaTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  18602. return err
  18603. }
  18604. if _, ok := m.Objects[*key]; !ok {
  18605. err := &googleapi.Error{
  18606. Code: http.StatusNotFound,
  18607. Message: fmt.Sprintf("MockAlphaTargetHttpProxies %v not found", key),
  18608. }
  18609. klog.V(5).Infof("MockAlphaTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  18610. return err
  18611. }
  18612. delete(m.Objects, *key)
  18613. klog.V(5).Infof("MockAlphaTargetHttpProxies.Delete(%v, %v) = nil", ctx, key)
  18614. return nil
  18615. }
  18616. // Obj wraps the object for use in the mock.
  18617. func (m *MockAlphaTargetHttpProxies) Obj(o *alpha.TargetHttpProxy) *MockTargetHttpProxiesObj {
  18618. return &MockTargetHttpProxiesObj{o}
  18619. }
  18620. // SetUrlMap is a mock for the corresponding method.
  18621. func (m *MockAlphaTargetHttpProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *alpha.UrlMapReference) error {
  18622. if m.SetUrlMapHook != nil {
  18623. return m.SetUrlMapHook(ctx, key, arg0, m)
  18624. }
  18625. return nil
  18626. }
  18627. // GCEAlphaTargetHttpProxies is a simplifying adapter for the GCE TargetHttpProxies.
  18628. type GCEAlphaTargetHttpProxies struct {
  18629. s *Service
  18630. }
  18631. // Get the TargetHttpProxy named by key.
  18632. func (g *GCEAlphaTargetHttpProxies) Get(ctx context.Context, key *meta.Key) (*alpha.TargetHttpProxy, error) {
  18633. klog.V(5).Infof("GCEAlphaTargetHttpProxies.Get(%v, %v): called", ctx, key)
  18634. if !key.Valid() {
  18635. klog.V(2).Infof("GCEAlphaTargetHttpProxies.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  18636. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  18637. }
  18638. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "TargetHttpProxies")
  18639. rk := &RateLimitKey{
  18640. ProjectID: projectID,
  18641. Operation: "Get",
  18642. Version: meta.Version("alpha"),
  18643. Service: "TargetHttpProxies",
  18644. }
  18645. klog.V(5).Infof("GCEAlphaTargetHttpProxies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  18646. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  18647. klog.V(4).Infof("GCEAlphaTargetHttpProxies.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  18648. return nil, err
  18649. }
  18650. call := g.s.Alpha.TargetHttpProxies.Get(projectID, key.Name)
  18651. call.Context(ctx)
  18652. v, err := call.Do()
  18653. klog.V(4).Infof("GCEAlphaTargetHttpProxies.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  18654. return v, err
  18655. }
  18656. // List all TargetHttpProxy objects.
  18657. func (g *GCEAlphaTargetHttpProxies) List(ctx context.Context, fl *filter.F) ([]*alpha.TargetHttpProxy, error) {
  18658. klog.V(5).Infof("GCEAlphaTargetHttpProxies.List(%v, %v) called", ctx, fl)
  18659. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "TargetHttpProxies")
  18660. rk := &RateLimitKey{
  18661. ProjectID: projectID,
  18662. Operation: "List",
  18663. Version: meta.Version("alpha"),
  18664. Service: "TargetHttpProxies",
  18665. }
  18666. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  18667. return nil, err
  18668. }
  18669. klog.V(5).Infof("GCEAlphaTargetHttpProxies.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  18670. call := g.s.Alpha.TargetHttpProxies.List(projectID)
  18671. if fl != filter.None {
  18672. call.Filter(fl.String())
  18673. }
  18674. var all []*alpha.TargetHttpProxy
  18675. f := func(l *alpha.TargetHttpProxyList) error {
  18676. klog.V(5).Infof("GCEAlphaTargetHttpProxies.List(%v, ..., %v): page %+v", ctx, fl, l)
  18677. all = append(all, l.Items...)
  18678. return nil
  18679. }
  18680. if err := call.Pages(ctx, f); err != nil {
  18681. klog.V(4).Infof("GCEAlphaTargetHttpProxies.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  18682. return nil, err
  18683. }
  18684. if klog.V(4) {
  18685. klog.V(4).Infof("GCEAlphaTargetHttpProxies.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  18686. } else if klog.V(5) {
  18687. var asStr []string
  18688. for _, o := range all {
  18689. asStr = append(asStr, fmt.Sprintf("%+v", o))
  18690. }
  18691. klog.V(5).Infof("GCEAlphaTargetHttpProxies.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  18692. }
  18693. return all, nil
  18694. }
  18695. // Insert TargetHttpProxy with key of value obj.
  18696. func (g *GCEAlphaTargetHttpProxies) Insert(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpProxy) error {
  18697. klog.V(5).Infof("GCEAlphaTargetHttpProxies.Insert(%v, %v, %+v): called", ctx, key, obj)
  18698. if !key.Valid() {
  18699. klog.V(2).Infof("GCEAlphaTargetHttpProxies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  18700. return fmt.Errorf("invalid GCE key (%+v)", key)
  18701. }
  18702. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "TargetHttpProxies")
  18703. rk := &RateLimitKey{
  18704. ProjectID: projectID,
  18705. Operation: "Insert",
  18706. Version: meta.Version("alpha"),
  18707. Service: "TargetHttpProxies",
  18708. }
  18709. klog.V(5).Infof("GCEAlphaTargetHttpProxies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  18710. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  18711. klog.V(4).Infof("GCEAlphaTargetHttpProxies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  18712. return err
  18713. }
  18714. obj.Name = key.Name
  18715. call := g.s.Alpha.TargetHttpProxies.Insert(projectID, obj)
  18716. call.Context(ctx)
  18717. op, err := call.Do()
  18718. if err != nil {
  18719. klog.V(4).Infof("GCEAlphaTargetHttpProxies.Insert(%v, %v, ...) = %+v", ctx, key, err)
  18720. return err
  18721. }
  18722. err = g.s.WaitForCompletion(ctx, op)
  18723. klog.V(4).Infof("GCEAlphaTargetHttpProxies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  18724. return err
  18725. }
  18726. // Delete the TargetHttpProxy referenced by key.
  18727. func (g *GCEAlphaTargetHttpProxies) Delete(ctx context.Context, key *meta.Key) error {
  18728. klog.V(5).Infof("GCEAlphaTargetHttpProxies.Delete(%v, %v): called", ctx, key)
  18729. if !key.Valid() {
  18730. klog.V(2).Infof("GCEAlphaTargetHttpProxies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  18731. return fmt.Errorf("invalid GCE key (%+v)", key)
  18732. }
  18733. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "TargetHttpProxies")
  18734. rk := &RateLimitKey{
  18735. ProjectID: projectID,
  18736. Operation: "Delete",
  18737. Version: meta.Version("alpha"),
  18738. Service: "TargetHttpProxies",
  18739. }
  18740. klog.V(5).Infof("GCEAlphaTargetHttpProxies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  18741. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  18742. klog.V(4).Infof("GCEAlphaTargetHttpProxies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  18743. return err
  18744. }
  18745. call := g.s.Alpha.TargetHttpProxies.Delete(projectID, key.Name)
  18746. call.Context(ctx)
  18747. op, err := call.Do()
  18748. if err != nil {
  18749. klog.V(4).Infof("GCEAlphaTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  18750. return err
  18751. }
  18752. err = g.s.WaitForCompletion(ctx, op)
  18753. klog.V(4).Infof("GCEAlphaTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  18754. return err
  18755. }
  18756. // SetUrlMap is a method on GCEAlphaTargetHttpProxies.
  18757. func (g *GCEAlphaTargetHttpProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *alpha.UrlMapReference) error {
  18758. klog.V(5).Infof("GCEAlphaTargetHttpProxies.SetUrlMap(%v, %v, ...): called", ctx, key)
  18759. if !key.Valid() {
  18760. klog.V(2).Infof("GCEAlphaTargetHttpProxies.SetUrlMap(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  18761. return fmt.Errorf("invalid GCE key (%+v)", key)
  18762. }
  18763. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "TargetHttpProxies")
  18764. rk := &RateLimitKey{
  18765. ProjectID: projectID,
  18766. Operation: "SetUrlMap",
  18767. Version: meta.Version("alpha"),
  18768. Service: "TargetHttpProxies",
  18769. }
  18770. klog.V(5).Infof("GCEAlphaTargetHttpProxies.SetUrlMap(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  18771. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  18772. klog.V(4).Infof("GCEAlphaTargetHttpProxies.SetUrlMap(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  18773. return err
  18774. }
  18775. call := g.s.Alpha.TargetHttpProxies.SetUrlMap(projectID, key.Name, arg0)
  18776. call.Context(ctx)
  18777. op, err := call.Do()
  18778. if err != nil {
  18779. klog.V(4).Infof("GCEAlphaTargetHttpProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err)
  18780. return err
  18781. }
  18782. err = g.s.WaitForCompletion(ctx, op)
  18783. klog.V(4).Infof("GCEAlphaTargetHttpProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err)
  18784. return err
  18785. }
  18786. // BetaTargetHttpProxies is an interface that allows for mocking of TargetHttpProxies.
  18787. type BetaTargetHttpProxies interface {
  18788. Get(ctx context.Context, key *meta.Key) (*beta.TargetHttpProxy, error)
  18789. List(ctx context.Context, fl *filter.F) ([]*beta.TargetHttpProxy, error)
  18790. Insert(ctx context.Context, key *meta.Key, obj *beta.TargetHttpProxy) error
  18791. Delete(ctx context.Context, key *meta.Key) error
  18792. SetUrlMap(context.Context, *meta.Key, *beta.UrlMapReference) error
  18793. }
  18794. // NewMockBetaTargetHttpProxies returns a new mock for TargetHttpProxies.
  18795. func NewMockBetaTargetHttpProxies(pr ProjectRouter, objs map[meta.Key]*MockTargetHttpProxiesObj) *MockBetaTargetHttpProxies {
  18796. mock := &MockBetaTargetHttpProxies{
  18797. ProjectRouter: pr,
  18798. Objects: objs,
  18799. GetError: map[meta.Key]error{},
  18800. InsertError: map[meta.Key]error{},
  18801. DeleteError: map[meta.Key]error{},
  18802. }
  18803. return mock
  18804. }
  18805. // MockBetaTargetHttpProxies is the mock for TargetHttpProxies.
  18806. type MockBetaTargetHttpProxies struct {
  18807. Lock sync.Mutex
  18808. ProjectRouter ProjectRouter
  18809. // Objects maintained by the mock.
  18810. Objects map[meta.Key]*MockTargetHttpProxiesObj
  18811. // If an entry exists for the given key and operation, then the error
  18812. // will be returned instead of the operation.
  18813. GetError map[meta.Key]error
  18814. ListError *error
  18815. InsertError map[meta.Key]error
  18816. DeleteError map[meta.Key]error
  18817. // xxxHook allow you to intercept the standard processing of the mock in
  18818. // order to add your own logic. Return (true, _, _) to prevent the normal
  18819. // execution flow of the mock. Return (false, nil, nil) to continue with
  18820. // normal mock behavior/ after the hook function executes.
  18821. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaTargetHttpProxies) (bool, *beta.TargetHttpProxy, error)
  18822. ListHook func(ctx context.Context, fl *filter.F, m *MockBetaTargetHttpProxies) (bool, []*beta.TargetHttpProxy, error)
  18823. InsertHook func(ctx context.Context, key *meta.Key, obj *beta.TargetHttpProxy, m *MockBetaTargetHttpProxies) (bool, error)
  18824. DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaTargetHttpProxies) (bool, error)
  18825. SetUrlMapHook func(context.Context, *meta.Key, *beta.UrlMapReference, *MockBetaTargetHttpProxies) error
  18826. // X is extra state that can be used as part of the mock. Generated code
  18827. // will not use this field.
  18828. X interface{}
  18829. }
  18830. // Get returns the object from the mock.
  18831. func (m *MockBetaTargetHttpProxies) Get(ctx context.Context, key *meta.Key) (*beta.TargetHttpProxy, error) {
  18832. if m.GetHook != nil {
  18833. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  18834. klog.V(5).Infof("MockBetaTargetHttpProxies.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  18835. return obj, err
  18836. }
  18837. }
  18838. if !key.Valid() {
  18839. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  18840. }
  18841. m.Lock.Lock()
  18842. defer m.Lock.Unlock()
  18843. if err, ok := m.GetError[*key]; ok {
  18844. klog.V(5).Infof("MockBetaTargetHttpProxies.Get(%v, %s) = nil, %v", ctx, key, err)
  18845. return nil, err
  18846. }
  18847. if obj, ok := m.Objects[*key]; ok {
  18848. typedObj := obj.ToBeta()
  18849. klog.V(5).Infof("MockBetaTargetHttpProxies.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  18850. return typedObj, nil
  18851. }
  18852. err := &googleapi.Error{
  18853. Code: http.StatusNotFound,
  18854. Message: fmt.Sprintf("MockBetaTargetHttpProxies %v not found", key),
  18855. }
  18856. klog.V(5).Infof("MockBetaTargetHttpProxies.Get(%v, %s) = nil, %v", ctx, key, err)
  18857. return nil, err
  18858. }
  18859. // List all of the objects in the mock.
  18860. func (m *MockBetaTargetHttpProxies) List(ctx context.Context, fl *filter.F) ([]*beta.TargetHttpProxy, error) {
  18861. if m.ListHook != nil {
  18862. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  18863. klog.V(5).Infof("MockBetaTargetHttpProxies.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  18864. return objs, err
  18865. }
  18866. }
  18867. m.Lock.Lock()
  18868. defer m.Lock.Unlock()
  18869. if m.ListError != nil {
  18870. err := *m.ListError
  18871. klog.V(5).Infof("MockBetaTargetHttpProxies.List(%v, %v) = nil, %v", ctx, fl, err)
  18872. return nil, *m.ListError
  18873. }
  18874. var objs []*beta.TargetHttpProxy
  18875. for _, obj := range m.Objects {
  18876. if !fl.Match(obj.ToBeta()) {
  18877. continue
  18878. }
  18879. objs = append(objs, obj.ToBeta())
  18880. }
  18881. klog.V(5).Infof("MockBetaTargetHttpProxies.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  18882. return objs, nil
  18883. }
  18884. // Insert is a mock for inserting/creating a new object.
  18885. func (m *MockBetaTargetHttpProxies) Insert(ctx context.Context, key *meta.Key, obj *beta.TargetHttpProxy) error {
  18886. if m.InsertHook != nil {
  18887. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  18888. klog.V(5).Infof("MockBetaTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  18889. return err
  18890. }
  18891. }
  18892. if !key.Valid() {
  18893. return fmt.Errorf("invalid GCE key (%+v)", key)
  18894. }
  18895. m.Lock.Lock()
  18896. defer m.Lock.Unlock()
  18897. if err, ok := m.InsertError[*key]; ok {
  18898. klog.V(5).Infof("MockBetaTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  18899. return err
  18900. }
  18901. if _, ok := m.Objects[*key]; ok {
  18902. err := &googleapi.Error{
  18903. Code: http.StatusConflict,
  18904. Message: fmt.Sprintf("MockBetaTargetHttpProxies %v exists", key),
  18905. }
  18906. klog.V(5).Infof("MockBetaTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  18907. return err
  18908. }
  18909. obj.Name = key.Name
  18910. projectID := m.ProjectRouter.ProjectID(ctx, "beta", "targetHttpProxies")
  18911. obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "targetHttpProxies", key)
  18912. m.Objects[*key] = &MockTargetHttpProxiesObj{obj}
  18913. klog.V(5).Infof("MockBetaTargetHttpProxies.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  18914. return nil
  18915. }
  18916. // Delete is a mock for deleting the object.
  18917. func (m *MockBetaTargetHttpProxies) Delete(ctx context.Context, key *meta.Key) error {
  18918. if m.DeleteHook != nil {
  18919. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  18920. klog.V(5).Infof("MockBetaTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  18921. return err
  18922. }
  18923. }
  18924. if !key.Valid() {
  18925. return fmt.Errorf("invalid GCE key (%+v)", key)
  18926. }
  18927. m.Lock.Lock()
  18928. defer m.Lock.Unlock()
  18929. if err, ok := m.DeleteError[*key]; ok {
  18930. klog.V(5).Infof("MockBetaTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  18931. return err
  18932. }
  18933. if _, ok := m.Objects[*key]; !ok {
  18934. err := &googleapi.Error{
  18935. Code: http.StatusNotFound,
  18936. Message: fmt.Sprintf("MockBetaTargetHttpProxies %v not found", key),
  18937. }
  18938. klog.V(5).Infof("MockBetaTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  18939. return err
  18940. }
  18941. delete(m.Objects, *key)
  18942. klog.V(5).Infof("MockBetaTargetHttpProxies.Delete(%v, %v) = nil", ctx, key)
  18943. return nil
  18944. }
  18945. // Obj wraps the object for use in the mock.
  18946. func (m *MockBetaTargetHttpProxies) Obj(o *beta.TargetHttpProxy) *MockTargetHttpProxiesObj {
  18947. return &MockTargetHttpProxiesObj{o}
  18948. }
  18949. // SetUrlMap is a mock for the corresponding method.
  18950. func (m *MockBetaTargetHttpProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *beta.UrlMapReference) error {
  18951. if m.SetUrlMapHook != nil {
  18952. return m.SetUrlMapHook(ctx, key, arg0, m)
  18953. }
  18954. return nil
  18955. }
  18956. // GCEBetaTargetHttpProxies is a simplifying adapter for the GCE TargetHttpProxies.
  18957. type GCEBetaTargetHttpProxies struct {
  18958. s *Service
  18959. }
  18960. // Get the TargetHttpProxy named by key.
  18961. func (g *GCEBetaTargetHttpProxies) Get(ctx context.Context, key *meta.Key) (*beta.TargetHttpProxy, error) {
  18962. klog.V(5).Infof("GCEBetaTargetHttpProxies.Get(%v, %v): called", ctx, key)
  18963. if !key.Valid() {
  18964. klog.V(2).Infof("GCEBetaTargetHttpProxies.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  18965. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  18966. }
  18967. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "TargetHttpProxies")
  18968. rk := &RateLimitKey{
  18969. ProjectID: projectID,
  18970. Operation: "Get",
  18971. Version: meta.Version("beta"),
  18972. Service: "TargetHttpProxies",
  18973. }
  18974. klog.V(5).Infof("GCEBetaTargetHttpProxies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  18975. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  18976. klog.V(4).Infof("GCEBetaTargetHttpProxies.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  18977. return nil, err
  18978. }
  18979. call := g.s.Beta.TargetHttpProxies.Get(projectID, key.Name)
  18980. call.Context(ctx)
  18981. v, err := call.Do()
  18982. klog.V(4).Infof("GCEBetaTargetHttpProxies.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  18983. return v, err
  18984. }
  18985. // List all TargetHttpProxy objects.
  18986. func (g *GCEBetaTargetHttpProxies) List(ctx context.Context, fl *filter.F) ([]*beta.TargetHttpProxy, error) {
  18987. klog.V(5).Infof("GCEBetaTargetHttpProxies.List(%v, %v) called", ctx, fl)
  18988. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "TargetHttpProxies")
  18989. rk := &RateLimitKey{
  18990. ProjectID: projectID,
  18991. Operation: "List",
  18992. Version: meta.Version("beta"),
  18993. Service: "TargetHttpProxies",
  18994. }
  18995. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  18996. return nil, err
  18997. }
  18998. klog.V(5).Infof("GCEBetaTargetHttpProxies.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  18999. call := g.s.Beta.TargetHttpProxies.List(projectID)
  19000. if fl != filter.None {
  19001. call.Filter(fl.String())
  19002. }
  19003. var all []*beta.TargetHttpProxy
  19004. f := func(l *beta.TargetHttpProxyList) error {
  19005. klog.V(5).Infof("GCEBetaTargetHttpProxies.List(%v, ..., %v): page %+v", ctx, fl, l)
  19006. all = append(all, l.Items...)
  19007. return nil
  19008. }
  19009. if err := call.Pages(ctx, f); err != nil {
  19010. klog.V(4).Infof("GCEBetaTargetHttpProxies.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  19011. return nil, err
  19012. }
  19013. if klog.V(4) {
  19014. klog.V(4).Infof("GCEBetaTargetHttpProxies.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  19015. } else if klog.V(5) {
  19016. var asStr []string
  19017. for _, o := range all {
  19018. asStr = append(asStr, fmt.Sprintf("%+v", o))
  19019. }
  19020. klog.V(5).Infof("GCEBetaTargetHttpProxies.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  19021. }
  19022. return all, nil
  19023. }
  19024. // Insert TargetHttpProxy with key of value obj.
  19025. func (g *GCEBetaTargetHttpProxies) Insert(ctx context.Context, key *meta.Key, obj *beta.TargetHttpProxy) error {
  19026. klog.V(5).Infof("GCEBetaTargetHttpProxies.Insert(%v, %v, %+v): called", ctx, key, obj)
  19027. if !key.Valid() {
  19028. klog.V(2).Infof("GCEBetaTargetHttpProxies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  19029. return fmt.Errorf("invalid GCE key (%+v)", key)
  19030. }
  19031. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "TargetHttpProxies")
  19032. rk := &RateLimitKey{
  19033. ProjectID: projectID,
  19034. Operation: "Insert",
  19035. Version: meta.Version("beta"),
  19036. Service: "TargetHttpProxies",
  19037. }
  19038. klog.V(5).Infof("GCEBetaTargetHttpProxies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  19039. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  19040. klog.V(4).Infof("GCEBetaTargetHttpProxies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  19041. return err
  19042. }
  19043. obj.Name = key.Name
  19044. call := g.s.Beta.TargetHttpProxies.Insert(projectID, obj)
  19045. call.Context(ctx)
  19046. op, err := call.Do()
  19047. if err != nil {
  19048. klog.V(4).Infof("GCEBetaTargetHttpProxies.Insert(%v, %v, ...) = %+v", ctx, key, err)
  19049. return err
  19050. }
  19051. err = g.s.WaitForCompletion(ctx, op)
  19052. klog.V(4).Infof("GCEBetaTargetHttpProxies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  19053. return err
  19054. }
  19055. // Delete the TargetHttpProxy referenced by key.
  19056. func (g *GCEBetaTargetHttpProxies) Delete(ctx context.Context, key *meta.Key) error {
  19057. klog.V(5).Infof("GCEBetaTargetHttpProxies.Delete(%v, %v): called", ctx, key)
  19058. if !key.Valid() {
  19059. klog.V(2).Infof("GCEBetaTargetHttpProxies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  19060. return fmt.Errorf("invalid GCE key (%+v)", key)
  19061. }
  19062. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "TargetHttpProxies")
  19063. rk := &RateLimitKey{
  19064. ProjectID: projectID,
  19065. Operation: "Delete",
  19066. Version: meta.Version("beta"),
  19067. Service: "TargetHttpProxies",
  19068. }
  19069. klog.V(5).Infof("GCEBetaTargetHttpProxies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  19070. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  19071. klog.V(4).Infof("GCEBetaTargetHttpProxies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  19072. return err
  19073. }
  19074. call := g.s.Beta.TargetHttpProxies.Delete(projectID, key.Name)
  19075. call.Context(ctx)
  19076. op, err := call.Do()
  19077. if err != nil {
  19078. klog.V(4).Infof("GCEBetaTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  19079. return err
  19080. }
  19081. err = g.s.WaitForCompletion(ctx, op)
  19082. klog.V(4).Infof("GCEBetaTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  19083. return err
  19084. }
  19085. // SetUrlMap is a method on GCEBetaTargetHttpProxies.
  19086. func (g *GCEBetaTargetHttpProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *beta.UrlMapReference) error {
  19087. klog.V(5).Infof("GCEBetaTargetHttpProxies.SetUrlMap(%v, %v, ...): called", ctx, key)
  19088. if !key.Valid() {
  19089. klog.V(2).Infof("GCEBetaTargetHttpProxies.SetUrlMap(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  19090. return fmt.Errorf("invalid GCE key (%+v)", key)
  19091. }
  19092. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "TargetHttpProxies")
  19093. rk := &RateLimitKey{
  19094. ProjectID: projectID,
  19095. Operation: "SetUrlMap",
  19096. Version: meta.Version("beta"),
  19097. Service: "TargetHttpProxies",
  19098. }
  19099. klog.V(5).Infof("GCEBetaTargetHttpProxies.SetUrlMap(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  19100. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  19101. klog.V(4).Infof("GCEBetaTargetHttpProxies.SetUrlMap(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  19102. return err
  19103. }
  19104. call := g.s.Beta.TargetHttpProxies.SetUrlMap(projectID, key.Name, arg0)
  19105. call.Context(ctx)
  19106. op, err := call.Do()
  19107. if err != nil {
  19108. klog.V(4).Infof("GCEBetaTargetHttpProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err)
  19109. return err
  19110. }
  19111. err = g.s.WaitForCompletion(ctx, op)
  19112. klog.V(4).Infof("GCEBetaTargetHttpProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err)
  19113. return err
  19114. }
  19115. // TargetHttpProxies is an interface that allows for mocking of TargetHttpProxies.
  19116. type TargetHttpProxies interface {
  19117. Get(ctx context.Context, key *meta.Key) (*ga.TargetHttpProxy, error)
  19118. List(ctx context.Context, fl *filter.F) ([]*ga.TargetHttpProxy, error)
  19119. Insert(ctx context.Context, key *meta.Key, obj *ga.TargetHttpProxy) error
  19120. Delete(ctx context.Context, key *meta.Key) error
  19121. SetUrlMap(context.Context, *meta.Key, *ga.UrlMapReference) error
  19122. }
  19123. // NewMockTargetHttpProxies returns a new mock for TargetHttpProxies.
  19124. func NewMockTargetHttpProxies(pr ProjectRouter, objs map[meta.Key]*MockTargetHttpProxiesObj) *MockTargetHttpProxies {
  19125. mock := &MockTargetHttpProxies{
  19126. ProjectRouter: pr,
  19127. Objects: objs,
  19128. GetError: map[meta.Key]error{},
  19129. InsertError: map[meta.Key]error{},
  19130. DeleteError: map[meta.Key]error{},
  19131. }
  19132. return mock
  19133. }
  19134. // MockTargetHttpProxies is the mock for TargetHttpProxies.
  19135. type MockTargetHttpProxies struct {
  19136. Lock sync.Mutex
  19137. ProjectRouter ProjectRouter
  19138. // Objects maintained by the mock.
  19139. Objects map[meta.Key]*MockTargetHttpProxiesObj
  19140. // If an entry exists for the given key and operation, then the error
  19141. // will be returned instead of the operation.
  19142. GetError map[meta.Key]error
  19143. ListError *error
  19144. InsertError map[meta.Key]error
  19145. DeleteError map[meta.Key]error
  19146. // xxxHook allow you to intercept the standard processing of the mock in
  19147. // order to add your own logic. Return (true, _, _) to prevent the normal
  19148. // execution flow of the mock. Return (false, nil, nil) to continue with
  19149. // normal mock behavior/ after the hook function executes.
  19150. GetHook func(ctx context.Context, key *meta.Key, m *MockTargetHttpProxies) (bool, *ga.TargetHttpProxy, error)
  19151. ListHook func(ctx context.Context, fl *filter.F, m *MockTargetHttpProxies) (bool, []*ga.TargetHttpProxy, error)
  19152. InsertHook func(ctx context.Context, key *meta.Key, obj *ga.TargetHttpProxy, m *MockTargetHttpProxies) (bool, error)
  19153. DeleteHook func(ctx context.Context, key *meta.Key, m *MockTargetHttpProxies) (bool, error)
  19154. SetUrlMapHook func(context.Context, *meta.Key, *ga.UrlMapReference, *MockTargetHttpProxies) error
  19155. // X is extra state that can be used as part of the mock. Generated code
  19156. // will not use this field.
  19157. X interface{}
  19158. }
  19159. // Get returns the object from the mock.
  19160. func (m *MockTargetHttpProxies) Get(ctx context.Context, key *meta.Key) (*ga.TargetHttpProxy, error) {
  19161. if m.GetHook != nil {
  19162. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  19163. klog.V(5).Infof("MockTargetHttpProxies.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  19164. return obj, err
  19165. }
  19166. }
  19167. if !key.Valid() {
  19168. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  19169. }
  19170. m.Lock.Lock()
  19171. defer m.Lock.Unlock()
  19172. if err, ok := m.GetError[*key]; ok {
  19173. klog.V(5).Infof("MockTargetHttpProxies.Get(%v, %s) = nil, %v", ctx, key, err)
  19174. return nil, err
  19175. }
  19176. if obj, ok := m.Objects[*key]; ok {
  19177. typedObj := obj.ToGA()
  19178. klog.V(5).Infof("MockTargetHttpProxies.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  19179. return typedObj, nil
  19180. }
  19181. err := &googleapi.Error{
  19182. Code: http.StatusNotFound,
  19183. Message: fmt.Sprintf("MockTargetHttpProxies %v not found", key),
  19184. }
  19185. klog.V(5).Infof("MockTargetHttpProxies.Get(%v, %s) = nil, %v", ctx, key, err)
  19186. return nil, err
  19187. }
  19188. // List all of the objects in the mock.
  19189. func (m *MockTargetHttpProxies) List(ctx context.Context, fl *filter.F) ([]*ga.TargetHttpProxy, error) {
  19190. if m.ListHook != nil {
  19191. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  19192. klog.V(5).Infof("MockTargetHttpProxies.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  19193. return objs, err
  19194. }
  19195. }
  19196. m.Lock.Lock()
  19197. defer m.Lock.Unlock()
  19198. if m.ListError != nil {
  19199. err := *m.ListError
  19200. klog.V(5).Infof("MockTargetHttpProxies.List(%v, %v) = nil, %v", ctx, fl, err)
  19201. return nil, *m.ListError
  19202. }
  19203. var objs []*ga.TargetHttpProxy
  19204. for _, obj := range m.Objects {
  19205. if !fl.Match(obj.ToGA()) {
  19206. continue
  19207. }
  19208. objs = append(objs, obj.ToGA())
  19209. }
  19210. klog.V(5).Infof("MockTargetHttpProxies.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  19211. return objs, nil
  19212. }
  19213. // Insert is a mock for inserting/creating a new object.
  19214. func (m *MockTargetHttpProxies) Insert(ctx context.Context, key *meta.Key, obj *ga.TargetHttpProxy) error {
  19215. if m.InsertHook != nil {
  19216. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  19217. klog.V(5).Infof("MockTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  19218. return err
  19219. }
  19220. }
  19221. if !key.Valid() {
  19222. return fmt.Errorf("invalid GCE key (%+v)", key)
  19223. }
  19224. m.Lock.Lock()
  19225. defer m.Lock.Unlock()
  19226. if err, ok := m.InsertError[*key]; ok {
  19227. klog.V(5).Infof("MockTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  19228. return err
  19229. }
  19230. if _, ok := m.Objects[*key]; ok {
  19231. err := &googleapi.Error{
  19232. Code: http.StatusConflict,
  19233. Message: fmt.Sprintf("MockTargetHttpProxies %v exists", key),
  19234. }
  19235. klog.V(5).Infof("MockTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  19236. return err
  19237. }
  19238. obj.Name = key.Name
  19239. projectID := m.ProjectRouter.ProjectID(ctx, "ga", "targetHttpProxies")
  19240. obj.SelfLink = SelfLink(meta.VersionGA, projectID, "targetHttpProxies", key)
  19241. m.Objects[*key] = &MockTargetHttpProxiesObj{obj}
  19242. klog.V(5).Infof("MockTargetHttpProxies.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  19243. return nil
  19244. }
  19245. // Delete is a mock for deleting the object.
  19246. func (m *MockTargetHttpProxies) Delete(ctx context.Context, key *meta.Key) error {
  19247. if m.DeleteHook != nil {
  19248. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  19249. klog.V(5).Infof("MockTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  19250. return err
  19251. }
  19252. }
  19253. if !key.Valid() {
  19254. return fmt.Errorf("invalid GCE key (%+v)", key)
  19255. }
  19256. m.Lock.Lock()
  19257. defer m.Lock.Unlock()
  19258. if err, ok := m.DeleteError[*key]; ok {
  19259. klog.V(5).Infof("MockTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  19260. return err
  19261. }
  19262. if _, ok := m.Objects[*key]; !ok {
  19263. err := &googleapi.Error{
  19264. Code: http.StatusNotFound,
  19265. Message: fmt.Sprintf("MockTargetHttpProxies %v not found", key),
  19266. }
  19267. klog.V(5).Infof("MockTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  19268. return err
  19269. }
  19270. delete(m.Objects, *key)
  19271. klog.V(5).Infof("MockTargetHttpProxies.Delete(%v, %v) = nil", ctx, key)
  19272. return nil
  19273. }
  19274. // Obj wraps the object for use in the mock.
  19275. func (m *MockTargetHttpProxies) Obj(o *ga.TargetHttpProxy) *MockTargetHttpProxiesObj {
  19276. return &MockTargetHttpProxiesObj{o}
  19277. }
  19278. // SetUrlMap is a mock for the corresponding method.
  19279. func (m *MockTargetHttpProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *ga.UrlMapReference) error {
  19280. if m.SetUrlMapHook != nil {
  19281. return m.SetUrlMapHook(ctx, key, arg0, m)
  19282. }
  19283. return nil
  19284. }
  19285. // GCETargetHttpProxies is a simplifying adapter for the GCE TargetHttpProxies.
  19286. type GCETargetHttpProxies struct {
  19287. s *Service
  19288. }
  19289. // Get the TargetHttpProxy named by key.
  19290. func (g *GCETargetHttpProxies) Get(ctx context.Context, key *meta.Key) (*ga.TargetHttpProxy, error) {
  19291. klog.V(5).Infof("GCETargetHttpProxies.Get(%v, %v): called", ctx, key)
  19292. if !key.Valid() {
  19293. klog.V(2).Infof("GCETargetHttpProxies.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  19294. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  19295. }
  19296. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetHttpProxies")
  19297. rk := &RateLimitKey{
  19298. ProjectID: projectID,
  19299. Operation: "Get",
  19300. Version: meta.Version("ga"),
  19301. Service: "TargetHttpProxies",
  19302. }
  19303. klog.V(5).Infof("GCETargetHttpProxies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  19304. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  19305. klog.V(4).Infof("GCETargetHttpProxies.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  19306. return nil, err
  19307. }
  19308. call := g.s.GA.TargetHttpProxies.Get(projectID, key.Name)
  19309. call.Context(ctx)
  19310. v, err := call.Do()
  19311. klog.V(4).Infof("GCETargetHttpProxies.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  19312. return v, err
  19313. }
  19314. // List all TargetHttpProxy objects.
  19315. func (g *GCETargetHttpProxies) List(ctx context.Context, fl *filter.F) ([]*ga.TargetHttpProxy, error) {
  19316. klog.V(5).Infof("GCETargetHttpProxies.List(%v, %v) called", ctx, fl)
  19317. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetHttpProxies")
  19318. rk := &RateLimitKey{
  19319. ProjectID: projectID,
  19320. Operation: "List",
  19321. Version: meta.Version("ga"),
  19322. Service: "TargetHttpProxies",
  19323. }
  19324. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  19325. return nil, err
  19326. }
  19327. klog.V(5).Infof("GCETargetHttpProxies.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  19328. call := g.s.GA.TargetHttpProxies.List(projectID)
  19329. if fl != filter.None {
  19330. call.Filter(fl.String())
  19331. }
  19332. var all []*ga.TargetHttpProxy
  19333. f := func(l *ga.TargetHttpProxyList) error {
  19334. klog.V(5).Infof("GCETargetHttpProxies.List(%v, ..., %v): page %+v", ctx, fl, l)
  19335. all = append(all, l.Items...)
  19336. return nil
  19337. }
  19338. if err := call.Pages(ctx, f); err != nil {
  19339. klog.V(4).Infof("GCETargetHttpProxies.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  19340. return nil, err
  19341. }
  19342. if klog.V(4) {
  19343. klog.V(4).Infof("GCETargetHttpProxies.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  19344. } else if klog.V(5) {
  19345. var asStr []string
  19346. for _, o := range all {
  19347. asStr = append(asStr, fmt.Sprintf("%+v", o))
  19348. }
  19349. klog.V(5).Infof("GCETargetHttpProxies.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  19350. }
  19351. return all, nil
  19352. }
  19353. // Insert TargetHttpProxy with key of value obj.
  19354. func (g *GCETargetHttpProxies) Insert(ctx context.Context, key *meta.Key, obj *ga.TargetHttpProxy) error {
  19355. klog.V(5).Infof("GCETargetHttpProxies.Insert(%v, %v, %+v): called", ctx, key, obj)
  19356. if !key.Valid() {
  19357. klog.V(2).Infof("GCETargetHttpProxies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  19358. return fmt.Errorf("invalid GCE key (%+v)", key)
  19359. }
  19360. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetHttpProxies")
  19361. rk := &RateLimitKey{
  19362. ProjectID: projectID,
  19363. Operation: "Insert",
  19364. Version: meta.Version("ga"),
  19365. Service: "TargetHttpProxies",
  19366. }
  19367. klog.V(5).Infof("GCETargetHttpProxies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  19368. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  19369. klog.V(4).Infof("GCETargetHttpProxies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  19370. return err
  19371. }
  19372. obj.Name = key.Name
  19373. call := g.s.GA.TargetHttpProxies.Insert(projectID, obj)
  19374. call.Context(ctx)
  19375. op, err := call.Do()
  19376. if err != nil {
  19377. klog.V(4).Infof("GCETargetHttpProxies.Insert(%v, %v, ...) = %+v", ctx, key, err)
  19378. return err
  19379. }
  19380. err = g.s.WaitForCompletion(ctx, op)
  19381. klog.V(4).Infof("GCETargetHttpProxies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  19382. return err
  19383. }
  19384. // Delete the TargetHttpProxy referenced by key.
  19385. func (g *GCETargetHttpProxies) Delete(ctx context.Context, key *meta.Key) error {
  19386. klog.V(5).Infof("GCETargetHttpProxies.Delete(%v, %v): called", ctx, key)
  19387. if !key.Valid() {
  19388. klog.V(2).Infof("GCETargetHttpProxies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  19389. return fmt.Errorf("invalid GCE key (%+v)", key)
  19390. }
  19391. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetHttpProxies")
  19392. rk := &RateLimitKey{
  19393. ProjectID: projectID,
  19394. Operation: "Delete",
  19395. Version: meta.Version("ga"),
  19396. Service: "TargetHttpProxies",
  19397. }
  19398. klog.V(5).Infof("GCETargetHttpProxies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  19399. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  19400. klog.V(4).Infof("GCETargetHttpProxies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  19401. return err
  19402. }
  19403. call := g.s.GA.TargetHttpProxies.Delete(projectID, key.Name)
  19404. call.Context(ctx)
  19405. op, err := call.Do()
  19406. if err != nil {
  19407. klog.V(4).Infof("GCETargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  19408. return err
  19409. }
  19410. err = g.s.WaitForCompletion(ctx, op)
  19411. klog.V(4).Infof("GCETargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  19412. return err
  19413. }
  19414. // SetUrlMap is a method on GCETargetHttpProxies.
  19415. func (g *GCETargetHttpProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *ga.UrlMapReference) error {
  19416. klog.V(5).Infof("GCETargetHttpProxies.SetUrlMap(%v, %v, ...): called", ctx, key)
  19417. if !key.Valid() {
  19418. klog.V(2).Infof("GCETargetHttpProxies.SetUrlMap(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  19419. return fmt.Errorf("invalid GCE key (%+v)", key)
  19420. }
  19421. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetHttpProxies")
  19422. rk := &RateLimitKey{
  19423. ProjectID: projectID,
  19424. Operation: "SetUrlMap",
  19425. Version: meta.Version("ga"),
  19426. Service: "TargetHttpProxies",
  19427. }
  19428. klog.V(5).Infof("GCETargetHttpProxies.SetUrlMap(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  19429. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  19430. klog.V(4).Infof("GCETargetHttpProxies.SetUrlMap(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  19431. return err
  19432. }
  19433. call := g.s.GA.TargetHttpProxies.SetUrlMap(projectID, key.Name, arg0)
  19434. call.Context(ctx)
  19435. op, err := call.Do()
  19436. if err != nil {
  19437. klog.V(4).Infof("GCETargetHttpProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err)
  19438. return err
  19439. }
  19440. err = g.s.WaitForCompletion(ctx, op)
  19441. klog.V(4).Infof("GCETargetHttpProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err)
  19442. return err
  19443. }
  19444. // AlphaRegionTargetHttpProxies is an interface that allows for mocking of RegionTargetHttpProxies.
  19445. type AlphaRegionTargetHttpProxies interface {
  19446. Get(ctx context.Context, key *meta.Key) (*alpha.TargetHttpProxy, error)
  19447. List(ctx context.Context, region string, fl *filter.F) ([]*alpha.TargetHttpProxy, error)
  19448. Insert(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpProxy) error
  19449. Delete(ctx context.Context, key *meta.Key) error
  19450. SetUrlMap(context.Context, *meta.Key, *alpha.UrlMapReference) error
  19451. }
  19452. // NewMockAlphaRegionTargetHttpProxies returns a new mock for RegionTargetHttpProxies.
  19453. func NewMockAlphaRegionTargetHttpProxies(pr ProjectRouter, objs map[meta.Key]*MockRegionTargetHttpProxiesObj) *MockAlphaRegionTargetHttpProxies {
  19454. mock := &MockAlphaRegionTargetHttpProxies{
  19455. ProjectRouter: pr,
  19456. Objects: objs,
  19457. GetError: map[meta.Key]error{},
  19458. InsertError: map[meta.Key]error{},
  19459. DeleteError: map[meta.Key]error{},
  19460. }
  19461. return mock
  19462. }
  19463. // MockAlphaRegionTargetHttpProxies is the mock for RegionTargetHttpProxies.
  19464. type MockAlphaRegionTargetHttpProxies struct {
  19465. Lock sync.Mutex
  19466. ProjectRouter ProjectRouter
  19467. // Objects maintained by the mock.
  19468. Objects map[meta.Key]*MockRegionTargetHttpProxiesObj
  19469. // If an entry exists for the given key and operation, then the error
  19470. // will be returned instead of the operation.
  19471. GetError map[meta.Key]error
  19472. ListError *error
  19473. InsertError map[meta.Key]error
  19474. DeleteError map[meta.Key]error
  19475. // xxxHook allow you to intercept the standard processing of the mock in
  19476. // order to add your own logic. Return (true, _, _) to prevent the normal
  19477. // execution flow of the mock. Return (false, nil, nil) to continue with
  19478. // normal mock behavior/ after the hook function executes.
  19479. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaRegionTargetHttpProxies) (bool, *alpha.TargetHttpProxy, error)
  19480. ListHook func(ctx context.Context, region string, fl *filter.F, m *MockAlphaRegionTargetHttpProxies) (bool, []*alpha.TargetHttpProxy, error)
  19481. InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpProxy, m *MockAlphaRegionTargetHttpProxies) (bool, error)
  19482. DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaRegionTargetHttpProxies) (bool, error)
  19483. SetUrlMapHook func(context.Context, *meta.Key, *alpha.UrlMapReference, *MockAlphaRegionTargetHttpProxies) error
  19484. // X is extra state that can be used as part of the mock. Generated code
  19485. // will not use this field.
  19486. X interface{}
  19487. }
  19488. // Get returns the object from the mock.
  19489. func (m *MockAlphaRegionTargetHttpProxies) Get(ctx context.Context, key *meta.Key) (*alpha.TargetHttpProxy, error) {
  19490. if m.GetHook != nil {
  19491. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  19492. klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  19493. return obj, err
  19494. }
  19495. }
  19496. if !key.Valid() {
  19497. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  19498. }
  19499. m.Lock.Lock()
  19500. defer m.Lock.Unlock()
  19501. if err, ok := m.GetError[*key]; ok {
  19502. klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.Get(%v, %s) = nil, %v", ctx, key, err)
  19503. return nil, err
  19504. }
  19505. if obj, ok := m.Objects[*key]; ok {
  19506. typedObj := obj.ToAlpha()
  19507. klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  19508. return typedObj, nil
  19509. }
  19510. err := &googleapi.Error{
  19511. Code: http.StatusNotFound,
  19512. Message: fmt.Sprintf("MockAlphaRegionTargetHttpProxies %v not found", key),
  19513. }
  19514. klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.Get(%v, %s) = nil, %v", ctx, key, err)
  19515. return nil, err
  19516. }
  19517. // List all of the objects in the mock in the given region.
  19518. func (m *MockAlphaRegionTargetHttpProxies) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.TargetHttpProxy, error) {
  19519. if m.ListHook != nil {
  19520. if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept {
  19521. klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err)
  19522. return objs, err
  19523. }
  19524. }
  19525. m.Lock.Lock()
  19526. defer m.Lock.Unlock()
  19527. if m.ListError != nil {
  19528. err := *m.ListError
  19529. klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.List(%v, %q, %v) = nil, %v", ctx, region, fl, err)
  19530. return nil, *m.ListError
  19531. }
  19532. var objs []*alpha.TargetHttpProxy
  19533. for key, obj := range m.Objects {
  19534. if key.Region != region {
  19535. continue
  19536. }
  19537. if !fl.Match(obj.ToAlpha()) {
  19538. continue
  19539. }
  19540. objs = append(objs, obj.ToAlpha())
  19541. }
  19542. klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs))
  19543. return objs, nil
  19544. }
  19545. // Insert is a mock for inserting/creating a new object.
  19546. func (m *MockAlphaRegionTargetHttpProxies) Insert(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpProxy) error {
  19547. if m.InsertHook != nil {
  19548. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  19549. klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  19550. return err
  19551. }
  19552. }
  19553. if !key.Valid() {
  19554. return fmt.Errorf("invalid GCE key (%+v)", key)
  19555. }
  19556. m.Lock.Lock()
  19557. defer m.Lock.Unlock()
  19558. if err, ok := m.InsertError[*key]; ok {
  19559. klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  19560. return err
  19561. }
  19562. if _, ok := m.Objects[*key]; ok {
  19563. err := &googleapi.Error{
  19564. Code: http.StatusConflict,
  19565. Message: fmt.Sprintf("MockAlphaRegionTargetHttpProxies %v exists", key),
  19566. }
  19567. klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  19568. return err
  19569. }
  19570. obj.Name = key.Name
  19571. projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "targetHttpProxies")
  19572. obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "targetHttpProxies", key)
  19573. m.Objects[*key] = &MockRegionTargetHttpProxiesObj{obj}
  19574. klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  19575. return nil
  19576. }
  19577. // Delete is a mock for deleting the object.
  19578. func (m *MockAlphaRegionTargetHttpProxies) Delete(ctx context.Context, key *meta.Key) error {
  19579. if m.DeleteHook != nil {
  19580. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  19581. klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  19582. return err
  19583. }
  19584. }
  19585. if !key.Valid() {
  19586. return fmt.Errorf("invalid GCE key (%+v)", key)
  19587. }
  19588. m.Lock.Lock()
  19589. defer m.Lock.Unlock()
  19590. if err, ok := m.DeleteError[*key]; ok {
  19591. klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  19592. return err
  19593. }
  19594. if _, ok := m.Objects[*key]; !ok {
  19595. err := &googleapi.Error{
  19596. Code: http.StatusNotFound,
  19597. Message: fmt.Sprintf("MockAlphaRegionTargetHttpProxies %v not found", key),
  19598. }
  19599. klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  19600. return err
  19601. }
  19602. delete(m.Objects, *key)
  19603. klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.Delete(%v, %v) = nil", ctx, key)
  19604. return nil
  19605. }
  19606. // Obj wraps the object for use in the mock.
  19607. func (m *MockAlphaRegionTargetHttpProxies) Obj(o *alpha.TargetHttpProxy) *MockRegionTargetHttpProxiesObj {
  19608. return &MockRegionTargetHttpProxiesObj{o}
  19609. }
  19610. // SetUrlMap is a mock for the corresponding method.
  19611. func (m *MockAlphaRegionTargetHttpProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *alpha.UrlMapReference) error {
  19612. if m.SetUrlMapHook != nil {
  19613. return m.SetUrlMapHook(ctx, key, arg0, m)
  19614. }
  19615. return nil
  19616. }
  19617. // GCEAlphaRegionTargetHttpProxies is a simplifying adapter for the GCE RegionTargetHttpProxies.
  19618. type GCEAlphaRegionTargetHttpProxies struct {
  19619. s *Service
  19620. }
  19621. // Get the TargetHttpProxy named by key.
  19622. func (g *GCEAlphaRegionTargetHttpProxies) Get(ctx context.Context, key *meta.Key) (*alpha.TargetHttpProxy, error) {
  19623. klog.V(5).Infof("GCEAlphaRegionTargetHttpProxies.Get(%v, %v): called", ctx, key)
  19624. if !key.Valid() {
  19625. klog.V(2).Infof("GCEAlphaRegionTargetHttpProxies.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  19626. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  19627. }
  19628. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionTargetHttpProxies")
  19629. rk := &RateLimitKey{
  19630. ProjectID: projectID,
  19631. Operation: "Get",
  19632. Version: meta.Version("alpha"),
  19633. Service: "RegionTargetHttpProxies",
  19634. }
  19635. klog.V(5).Infof("GCEAlphaRegionTargetHttpProxies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  19636. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  19637. klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  19638. return nil, err
  19639. }
  19640. call := g.s.Alpha.RegionTargetHttpProxies.Get(projectID, key.Region, key.Name)
  19641. call.Context(ctx)
  19642. v, err := call.Do()
  19643. klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  19644. return v, err
  19645. }
  19646. // List all TargetHttpProxy objects.
  19647. func (g *GCEAlphaRegionTargetHttpProxies) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.TargetHttpProxy, error) {
  19648. klog.V(5).Infof("GCEAlphaRegionTargetHttpProxies.List(%v, %v, %v) called", ctx, region, fl)
  19649. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionTargetHttpProxies")
  19650. rk := &RateLimitKey{
  19651. ProjectID: projectID,
  19652. Operation: "List",
  19653. Version: meta.Version("alpha"),
  19654. Service: "RegionTargetHttpProxies",
  19655. }
  19656. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  19657. return nil, err
  19658. }
  19659. klog.V(5).Infof("GCEAlphaRegionTargetHttpProxies.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk)
  19660. call := g.s.Alpha.RegionTargetHttpProxies.List(projectID, region)
  19661. if fl != filter.None {
  19662. call.Filter(fl.String())
  19663. }
  19664. var all []*alpha.TargetHttpProxy
  19665. f := func(l *alpha.TargetHttpProxyList) error {
  19666. klog.V(5).Infof("GCEAlphaRegionTargetHttpProxies.List(%v, ..., %v): page %+v", ctx, fl, l)
  19667. all = append(all, l.Items...)
  19668. return nil
  19669. }
  19670. if err := call.Pages(ctx, f); err != nil {
  19671. klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  19672. return nil, err
  19673. }
  19674. if klog.V(4) {
  19675. klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  19676. } else if klog.V(5) {
  19677. var asStr []string
  19678. for _, o := range all {
  19679. asStr = append(asStr, fmt.Sprintf("%+v", o))
  19680. }
  19681. klog.V(5).Infof("GCEAlphaRegionTargetHttpProxies.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  19682. }
  19683. return all, nil
  19684. }
  19685. // Insert TargetHttpProxy with key of value obj.
  19686. func (g *GCEAlphaRegionTargetHttpProxies) Insert(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpProxy) error {
  19687. klog.V(5).Infof("GCEAlphaRegionTargetHttpProxies.Insert(%v, %v, %+v): called", ctx, key, obj)
  19688. if !key.Valid() {
  19689. klog.V(2).Infof("GCEAlphaRegionTargetHttpProxies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  19690. return fmt.Errorf("invalid GCE key (%+v)", key)
  19691. }
  19692. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionTargetHttpProxies")
  19693. rk := &RateLimitKey{
  19694. ProjectID: projectID,
  19695. Operation: "Insert",
  19696. Version: meta.Version("alpha"),
  19697. Service: "RegionTargetHttpProxies",
  19698. }
  19699. klog.V(5).Infof("GCEAlphaRegionTargetHttpProxies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  19700. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  19701. klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  19702. return err
  19703. }
  19704. obj.Name = key.Name
  19705. call := g.s.Alpha.RegionTargetHttpProxies.Insert(projectID, key.Region, obj)
  19706. call.Context(ctx)
  19707. op, err := call.Do()
  19708. if err != nil {
  19709. klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.Insert(%v, %v, ...) = %+v", ctx, key, err)
  19710. return err
  19711. }
  19712. err = g.s.WaitForCompletion(ctx, op)
  19713. klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  19714. return err
  19715. }
  19716. // Delete the TargetHttpProxy referenced by key.
  19717. func (g *GCEAlphaRegionTargetHttpProxies) Delete(ctx context.Context, key *meta.Key) error {
  19718. klog.V(5).Infof("GCEAlphaRegionTargetHttpProxies.Delete(%v, %v): called", ctx, key)
  19719. if !key.Valid() {
  19720. klog.V(2).Infof("GCEAlphaRegionTargetHttpProxies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  19721. return fmt.Errorf("invalid GCE key (%+v)", key)
  19722. }
  19723. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionTargetHttpProxies")
  19724. rk := &RateLimitKey{
  19725. ProjectID: projectID,
  19726. Operation: "Delete",
  19727. Version: meta.Version("alpha"),
  19728. Service: "RegionTargetHttpProxies",
  19729. }
  19730. klog.V(5).Infof("GCEAlphaRegionTargetHttpProxies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  19731. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  19732. klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  19733. return err
  19734. }
  19735. call := g.s.Alpha.RegionTargetHttpProxies.Delete(projectID, key.Region, key.Name)
  19736. call.Context(ctx)
  19737. op, err := call.Do()
  19738. if err != nil {
  19739. klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  19740. return err
  19741. }
  19742. err = g.s.WaitForCompletion(ctx, op)
  19743. klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  19744. return err
  19745. }
  19746. // SetUrlMap is a method on GCEAlphaRegionTargetHttpProxies.
  19747. func (g *GCEAlphaRegionTargetHttpProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *alpha.UrlMapReference) error {
  19748. klog.V(5).Infof("GCEAlphaRegionTargetHttpProxies.SetUrlMap(%v, %v, ...): called", ctx, key)
  19749. if !key.Valid() {
  19750. klog.V(2).Infof("GCEAlphaRegionTargetHttpProxies.SetUrlMap(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  19751. return fmt.Errorf("invalid GCE key (%+v)", key)
  19752. }
  19753. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionTargetHttpProxies")
  19754. rk := &RateLimitKey{
  19755. ProjectID: projectID,
  19756. Operation: "SetUrlMap",
  19757. Version: meta.Version("alpha"),
  19758. Service: "RegionTargetHttpProxies",
  19759. }
  19760. klog.V(5).Infof("GCEAlphaRegionTargetHttpProxies.SetUrlMap(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  19761. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  19762. klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.SetUrlMap(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  19763. return err
  19764. }
  19765. call := g.s.Alpha.RegionTargetHttpProxies.SetUrlMap(projectID, key.Region, key.Name, arg0)
  19766. call.Context(ctx)
  19767. op, err := call.Do()
  19768. if err != nil {
  19769. klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err)
  19770. return err
  19771. }
  19772. err = g.s.WaitForCompletion(ctx, op)
  19773. klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err)
  19774. return err
  19775. }
  19776. // BetaRegionTargetHttpProxies is an interface that allows for mocking of RegionTargetHttpProxies.
  19777. type BetaRegionTargetHttpProxies interface {
  19778. Get(ctx context.Context, key *meta.Key) (*beta.TargetHttpProxy, error)
  19779. List(ctx context.Context, region string, fl *filter.F) ([]*beta.TargetHttpProxy, error)
  19780. Insert(ctx context.Context, key *meta.Key, obj *beta.TargetHttpProxy) error
  19781. Delete(ctx context.Context, key *meta.Key) error
  19782. SetUrlMap(context.Context, *meta.Key, *beta.UrlMapReference) error
  19783. }
  19784. // NewMockBetaRegionTargetHttpProxies returns a new mock for RegionTargetHttpProxies.
  19785. func NewMockBetaRegionTargetHttpProxies(pr ProjectRouter, objs map[meta.Key]*MockRegionTargetHttpProxiesObj) *MockBetaRegionTargetHttpProxies {
  19786. mock := &MockBetaRegionTargetHttpProxies{
  19787. ProjectRouter: pr,
  19788. Objects: objs,
  19789. GetError: map[meta.Key]error{},
  19790. InsertError: map[meta.Key]error{},
  19791. DeleteError: map[meta.Key]error{},
  19792. }
  19793. return mock
  19794. }
  19795. // MockBetaRegionTargetHttpProxies is the mock for RegionTargetHttpProxies.
  19796. type MockBetaRegionTargetHttpProxies struct {
  19797. Lock sync.Mutex
  19798. ProjectRouter ProjectRouter
  19799. // Objects maintained by the mock.
  19800. Objects map[meta.Key]*MockRegionTargetHttpProxiesObj
  19801. // If an entry exists for the given key and operation, then the error
  19802. // will be returned instead of the operation.
  19803. GetError map[meta.Key]error
  19804. ListError *error
  19805. InsertError map[meta.Key]error
  19806. DeleteError map[meta.Key]error
  19807. // xxxHook allow you to intercept the standard processing of the mock in
  19808. // order to add your own logic. Return (true, _, _) to prevent the normal
  19809. // execution flow of the mock. Return (false, nil, nil) to continue with
  19810. // normal mock behavior/ after the hook function executes.
  19811. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaRegionTargetHttpProxies) (bool, *beta.TargetHttpProxy, error)
  19812. ListHook func(ctx context.Context, region string, fl *filter.F, m *MockBetaRegionTargetHttpProxies) (bool, []*beta.TargetHttpProxy, error)
  19813. InsertHook func(ctx context.Context, key *meta.Key, obj *beta.TargetHttpProxy, m *MockBetaRegionTargetHttpProxies) (bool, error)
  19814. DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaRegionTargetHttpProxies) (bool, error)
  19815. SetUrlMapHook func(context.Context, *meta.Key, *beta.UrlMapReference, *MockBetaRegionTargetHttpProxies) error
  19816. // X is extra state that can be used as part of the mock. Generated code
  19817. // will not use this field.
  19818. X interface{}
  19819. }
  19820. // Get returns the object from the mock.
  19821. func (m *MockBetaRegionTargetHttpProxies) Get(ctx context.Context, key *meta.Key) (*beta.TargetHttpProxy, error) {
  19822. if m.GetHook != nil {
  19823. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  19824. klog.V(5).Infof("MockBetaRegionTargetHttpProxies.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  19825. return obj, err
  19826. }
  19827. }
  19828. if !key.Valid() {
  19829. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  19830. }
  19831. m.Lock.Lock()
  19832. defer m.Lock.Unlock()
  19833. if err, ok := m.GetError[*key]; ok {
  19834. klog.V(5).Infof("MockBetaRegionTargetHttpProxies.Get(%v, %s) = nil, %v", ctx, key, err)
  19835. return nil, err
  19836. }
  19837. if obj, ok := m.Objects[*key]; ok {
  19838. typedObj := obj.ToBeta()
  19839. klog.V(5).Infof("MockBetaRegionTargetHttpProxies.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  19840. return typedObj, nil
  19841. }
  19842. err := &googleapi.Error{
  19843. Code: http.StatusNotFound,
  19844. Message: fmt.Sprintf("MockBetaRegionTargetHttpProxies %v not found", key),
  19845. }
  19846. klog.V(5).Infof("MockBetaRegionTargetHttpProxies.Get(%v, %s) = nil, %v", ctx, key, err)
  19847. return nil, err
  19848. }
  19849. // List all of the objects in the mock in the given region.
  19850. func (m *MockBetaRegionTargetHttpProxies) List(ctx context.Context, region string, fl *filter.F) ([]*beta.TargetHttpProxy, error) {
  19851. if m.ListHook != nil {
  19852. if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept {
  19853. klog.V(5).Infof("MockBetaRegionTargetHttpProxies.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err)
  19854. return objs, err
  19855. }
  19856. }
  19857. m.Lock.Lock()
  19858. defer m.Lock.Unlock()
  19859. if m.ListError != nil {
  19860. err := *m.ListError
  19861. klog.V(5).Infof("MockBetaRegionTargetHttpProxies.List(%v, %q, %v) = nil, %v", ctx, region, fl, err)
  19862. return nil, *m.ListError
  19863. }
  19864. var objs []*beta.TargetHttpProxy
  19865. for key, obj := range m.Objects {
  19866. if key.Region != region {
  19867. continue
  19868. }
  19869. if !fl.Match(obj.ToBeta()) {
  19870. continue
  19871. }
  19872. objs = append(objs, obj.ToBeta())
  19873. }
  19874. klog.V(5).Infof("MockBetaRegionTargetHttpProxies.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs))
  19875. return objs, nil
  19876. }
  19877. // Insert is a mock for inserting/creating a new object.
  19878. func (m *MockBetaRegionTargetHttpProxies) Insert(ctx context.Context, key *meta.Key, obj *beta.TargetHttpProxy) error {
  19879. if m.InsertHook != nil {
  19880. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  19881. klog.V(5).Infof("MockBetaRegionTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  19882. return err
  19883. }
  19884. }
  19885. if !key.Valid() {
  19886. return fmt.Errorf("invalid GCE key (%+v)", key)
  19887. }
  19888. m.Lock.Lock()
  19889. defer m.Lock.Unlock()
  19890. if err, ok := m.InsertError[*key]; ok {
  19891. klog.V(5).Infof("MockBetaRegionTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  19892. return err
  19893. }
  19894. if _, ok := m.Objects[*key]; ok {
  19895. err := &googleapi.Error{
  19896. Code: http.StatusConflict,
  19897. Message: fmt.Sprintf("MockBetaRegionTargetHttpProxies %v exists", key),
  19898. }
  19899. klog.V(5).Infof("MockBetaRegionTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  19900. return err
  19901. }
  19902. obj.Name = key.Name
  19903. projectID := m.ProjectRouter.ProjectID(ctx, "beta", "targetHttpProxies")
  19904. obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "targetHttpProxies", key)
  19905. m.Objects[*key] = &MockRegionTargetHttpProxiesObj{obj}
  19906. klog.V(5).Infof("MockBetaRegionTargetHttpProxies.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  19907. return nil
  19908. }
  19909. // Delete is a mock for deleting the object.
  19910. func (m *MockBetaRegionTargetHttpProxies) Delete(ctx context.Context, key *meta.Key) error {
  19911. if m.DeleteHook != nil {
  19912. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  19913. klog.V(5).Infof("MockBetaRegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  19914. return err
  19915. }
  19916. }
  19917. if !key.Valid() {
  19918. return fmt.Errorf("invalid GCE key (%+v)", key)
  19919. }
  19920. m.Lock.Lock()
  19921. defer m.Lock.Unlock()
  19922. if err, ok := m.DeleteError[*key]; ok {
  19923. klog.V(5).Infof("MockBetaRegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  19924. return err
  19925. }
  19926. if _, ok := m.Objects[*key]; !ok {
  19927. err := &googleapi.Error{
  19928. Code: http.StatusNotFound,
  19929. Message: fmt.Sprintf("MockBetaRegionTargetHttpProxies %v not found", key),
  19930. }
  19931. klog.V(5).Infof("MockBetaRegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  19932. return err
  19933. }
  19934. delete(m.Objects, *key)
  19935. klog.V(5).Infof("MockBetaRegionTargetHttpProxies.Delete(%v, %v) = nil", ctx, key)
  19936. return nil
  19937. }
  19938. // Obj wraps the object for use in the mock.
  19939. func (m *MockBetaRegionTargetHttpProxies) Obj(o *beta.TargetHttpProxy) *MockRegionTargetHttpProxiesObj {
  19940. return &MockRegionTargetHttpProxiesObj{o}
  19941. }
  19942. // SetUrlMap is a mock for the corresponding method.
  19943. func (m *MockBetaRegionTargetHttpProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *beta.UrlMapReference) error {
  19944. if m.SetUrlMapHook != nil {
  19945. return m.SetUrlMapHook(ctx, key, arg0, m)
  19946. }
  19947. return nil
  19948. }
  19949. // GCEBetaRegionTargetHttpProxies is a simplifying adapter for the GCE RegionTargetHttpProxies.
  19950. type GCEBetaRegionTargetHttpProxies struct {
  19951. s *Service
  19952. }
  19953. // Get the TargetHttpProxy named by key.
  19954. func (g *GCEBetaRegionTargetHttpProxies) Get(ctx context.Context, key *meta.Key) (*beta.TargetHttpProxy, error) {
  19955. klog.V(5).Infof("GCEBetaRegionTargetHttpProxies.Get(%v, %v): called", ctx, key)
  19956. if !key.Valid() {
  19957. klog.V(2).Infof("GCEBetaRegionTargetHttpProxies.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  19958. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  19959. }
  19960. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionTargetHttpProxies")
  19961. rk := &RateLimitKey{
  19962. ProjectID: projectID,
  19963. Operation: "Get",
  19964. Version: meta.Version("beta"),
  19965. Service: "RegionTargetHttpProxies",
  19966. }
  19967. klog.V(5).Infof("GCEBetaRegionTargetHttpProxies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  19968. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  19969. klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  19970. return nil, err
  19971. }
  19972. call := g.s.Beta.RegionTargetHttpProxies.Get(projectID, key.Region, key.Name)
  19973. call.Context(ctx)
  19974. v, err := call.Do()
  19975. klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  19976. return v, err
  19977. }
  19978. // List all TargetHttpProxy objects.
  19979. func (g *GCEBetaRegionTargetHttpProxies) List(ctx context.Context, region string, fl *filter.F) ([]*beta.TargetHttpProxy, error) {
  19980. klog.V(5).Infof("GCEBetaRegionTargetHttpProxies.List(%v, %v, %v) called", ctx, region, fl)
  19981. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionTargetHttpProxies")
  19982. rk := &RateLimitKey{
  19983. ProjectID: projectID,
  19984. Operation: "List",
  19985. Version: meta.Version("beta"),
  19986. Service: "RegionTargetHttpProxies",
  19987. }
  19988. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  19989. return nil, err
  19990. }
  19991. klog.V(5).Infof("GCEBetaRegionTargetHttpProxies.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk)
  19992. call := g.s.Beta.RegionTargetHttpProxies.List(projectID, region)
  19993. if fl != filter.None {
  19994. call.Filter(fl.String())
  19995. }
  19996. var all []*beta.TargetHttpProxy
  19997. f := func(l *beta.TargetHttpProxyList) error {
  19998. klog.V(5).Infof("GCEBetaRegionTargetHttpProxies.List(%v, ..., %v): page %+v", ctx, fl, l)
  19999. all = append(all, l.Items...)
  20000. return nil
  20001. }
  20002. if err := call.Pages(ctx, f); err != nil {
  20003. klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  20004. return nil, err
  20005. }
  20006. if klog.V(4) {
  20007. klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  20008. } else if klog.V(5) {
  20009. var asStr []string
  20010. for _, o := range all {
  20011. asStr = append(asStr, fmt.Sprintf("%+v", o))
  20012. }
  20013. klog.V(5).Infof("GCEBetaRegionTargetHttpProxies.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  20014. }
  20015. return all, nil
  20016. }
  20017. // Insert TargetHttpProxy with key of value obj.
  20018. func (g *GCEBetaRegionTargetHttpProxies) Insert(ctx context.Context, key *meta.Key, obj *beta.TargetHttpProxy) error {
  20019. klog.V(5).Infof("GCEBetaRegionTargetHttpProxies.Insert(%v, %v, %+v): called", ctx, key, obj)
  20020. if !key.Valid() {
  20021. klog.V(2).Infof("GCEBetaRegionTargetHttpProxies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  20022. return fmt.Errorf("invalid GCE key (%+v)", key)
  20023. }
  20024. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionTargetHttpProxies")
  20025. rk := &RateLimitKey{
  20026. ProjectID: projectID,
  20027. Operation: "Insert",
  20028. Version: meta.Version("beta"),
  20029. Service: "RegionTargetHttpProxies",
  20030. }
  20031. klog.V(5).Infof("GCEBetaRegionTargetHttpProxies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  20032. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  20033. klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  20034. return err
  20035. }
  20036. obj.Name = key.Name
  20037. call := g.s.Beta.RegionTargetHttpProxies.Insert(projectID, key.Region, obj)
  20038. call.Context(ctx)
  20039. op, err := call.Do()
  20040. if err != nil {
  20041. klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.Insert(%v, %v, ...) = %+v", ctx, key, err)
  20042. return err
  20043. }
  20044. err = g.s.WaitForCompletion(ctx, op)
  20045. klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  20046. return err
  20047. }
  20048. // Delete the TargetHttpProxy referenced by key.
  20049. func (g *GCEBetaRegionTargetHttpProxies) Delete(ctx context.Context, key *meta.Key) error {
  20050. klog.V(5).Infof("GCEBetaRegionTargetHttpProxies.Delete(%v, %v): called", ctx, key)
  20051. if !key.Valid() {
  20052. klog.V(2).Infof("GCEBetaRegionTargetHttpProxies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  20053. return fmt.Errorf("invalid GCE key (%+v)", key)
  20054. }
  20055. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionTargetHttpProxies")
  20056. rk := &RateLimitKey{
  20057. ProjectID: projectID,
  20058. Operation: "Delete",
  20059. Version: meta.Version("beta"),
  20060. Service: "RegionTargetHttpProxies",
  20061. }
  20062. klog.V(5).Infof("GCEBetaRegionTargetHttpProxies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  20063. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  20064. klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  20065. return err
  20066. }
  20067. call := g.s.Beta.RegionTargetHttpProxies.Delete(projectID, key.Region, key.Name)
  20068. call.Context(ctx)
  20069. op, err := call.Do()
  20070. if err != nil {
  20071. klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  20072. return err
  20073. }
  20074. err = g.s.WaitForCompletion(ctx, op)
  20075. klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err)
  20076. return err
  20077. }
  20078. // SetUrlMap is a method on GCEBetaRegionTargetHttpProxies.
  20079. func (g *GCEBetaRegionTargetHttpProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *beta.UrlMapReference) error {
  20080. klog.V(5).Infof("GCEBetaRegionTargetHttpProxies.SetUrlMap(%v, %v, ...): called", ctx, key)
  20081. if !key.Valid() {
  20082. klog.V(2).Infof("GCEBetaRegionTargetHttpProxies.SetUrlMap(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  20083. return fmt.Errorf("invalid GCE key (%+v)", key)
  20084. }
  20085. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionTargetHttpProxies")
  20086. rk := &RateLimitKey{
  20087. ProjectID: projectID,
  20088. Operation: "SetUrlMap",
  20089. Version: meta.Version("beta"),
  20090. Service: "RegionTargetHttpProxies",
  20091. }
  20092. klog.V(5).Infof("GCEBetaRegionTargetHttpProxies.SetUrlMap(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  20093. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  20094. klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.SetUrlMap(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  20095. return err
  20096. }
  20097. call := g.s.Beta.RegionTargetHttpProxies.SetUrlMap(projectID, key.Region, key.Name, arg0)
  20098. call.Context(ctx)
  20099. op, err := call.Do()
  20100. if err != nil {
  20101. klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err)
  20102. return err
  20103. }
  20104. err = g.s.WaitForCompletion(ctx, op)
  20105. klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err)
  20106. return err
  20107. }
  20108. // TargetHttpsProxies is an interface that allows for mocking of TargetHttpsProxies.
  20109. type TargetHttpsProxies interface {
  20110. Get(ctx context.Context, key *meta.Key) (*ga.TargetHttpsProxy, error)
  20111. List(ctx context.Context, fl *filter.F) ([]*ga.TargetHttpsProxy, error)
  20112. Insert(ctx context.Context, key *meta.Key, obj *ga.TargetHttpsProxy) error
  20113. Delete(ctx context.Context, key *meta.Key) error
  20114. SetSslCertificates(context.Context, *meta.Key, *ga.TargetHttpsProxiesSetSslCertificatesRequest) error
  20115. SetUrlMap(context.Context, *meta.Key, *ga.UrlMapReference) error
  20116. }
  20117. // NewMockTargetHttpsProxies returns a new mock for TargetHttpsProxies.
  20118. func NewMockTargetHttpsProxies(pr ProjectRouter, objs map[meta.Key]*MockTargetHttpsProxiesObj) *MockTargetHttpsProxies {
  20119. mock := &MockTargetHttpsProxies{
  20120. ProjectRouter: pr,
  20121. Objects: objs,
  20122. GetError: map[meta.Key]error{},
  20123. InsertError: map[meta.Key]error{},
  20124. DeleteError: map[meta.Key]error{},
  20125. }
  20126. return mock
  20127. }
  20128. // MockTargetHttpsProxies is the mock for TargetHttpsProxies.
  20129. type MockTargetHttpsProxies struct {
  20130. Lock sync.Mutex
  20131. ProjectRouter ProjectRouter
  20132. // Objects maintained by the mock.
  20133. Objects map[meta.Key]*MockTargetHttpsProxiesObj
  20134. // If an entry exists for the given key and operation, then the error
  20135. // will be returned instead of the operation.
  20136. GetError map[meta.Key]error
  20137. ListError *error
  20138. InsertError map[meta.Key]error
  20139. DeleteError map[meta.Key]error
  20140. // xxxHook allow you to intercept the standard processing of the mock in
  20141. // order to add your own logic. Return (true, _, _) to prevent the normal
  20142. // execution flow of the mock. Return (false, nil, nil) to continue with
  20143. // normal mock behavior/ after the hook function executes.
  20144. GetHook func(ctx context.Context, key *meta.Key, m *MockTargetHttpsProxies) (bool, *ga.TargetHttpsProxy, error)
  20145. ListHook func(ctx context.Context, fl *filter.F, m *MockTargetHttpsProxies) (bool, []*ga.TargetHttpsProxy, error)
  20146. InsertHook func(ctx context.Context, key *meta.Key, obj *ga.TargetHttpsProxy, m *MockTargetHttpsProxies) (bool, error)
  20147. DeleteHook func(ctx context.Context, key *meta.Key, m *MockTargetHttpsProxies) (bool, error)
  20148. SetSslCertificatesHook func(context.Context, *meta.Key, *ga.TargetHttpsProxiesSetSslCertificatesRequest, *MockTargetHttpsProxies) error
  20149. SetUrlMapHook func(context.Context, *meta.Key, *ga.UrlMapReference, *MockTargetHttpsProxies) error
  20150. // X is extra state that can be used as part of the mock. Generated code
  20151. // will not use this field.
  20152. X interface{}
  20153. }
  20154. // Get returns the object from the mock.
  20155. func (m *MockTargetHttpsProxies) Get(ctx context.Context, key *meta.Key) (*ga.TargetHttpsProxy, error) {
  20156. if m.GetHook != nil {
  20157. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  20158. klog.V(5).Infof("MockTargetHttpsProxies.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  20159. return obj, err
  20160. }
  20161. }
  20162. if !key.Valid() {
  20163. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  20164. }
  20165. m.Lock.Lock()
  20166. defer m.Lock.Unlock()
  20167. if err, ok := m.GetError[*key]; ok {
  20168. klog.V(5).Infof("MockTargetHttpsProxies.Get(%v, %s) = nil, %v", ctx, key, err)
  20169. return nil, err
  20170. }
  20171. if obj, ok := m.Objects[*key]; ok {
  20172. typedObj := obj.ToGA()
  20173. klog.V(5).Infof("MockTargetHttpsProxies.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  20174. return typedObj, nil
  20175. }
  20176. err := &googleapi.Error{
  20177. Code: http.StatusNotFound,
  20178. Message: fmt.Sprintf("MockTargetHttpsProxies %v not found", key),
  20179. }
  20180. klog.V(5).Infof("MockTargetHttpsProxies.Get(%v, %s) = nil, %v", ctx, key, err)
  20181. return nil, err
  20182. }
  20183. // List all of the objects in the mock.
  20184. func (m *MockTargetHttpsProxies) List(ctx context.Context, fl *filter.F) ([]*ga.TargetHttpsProxy, error) {
  20185. if m.ListHook != nil {
  20186. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  20187. klog.V(5).Infof("MockTargetHttpsProxies.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  20188. return objs, err
  20189. }
  20190. }
  20191. m.Lock.Lock()
  20192. defer m.Lock.Unlock()
  20193. if m.ListError != nil {
  20194. err := *m.ListError
  20195. klog.V(5).Infof("MockTargetHttpsProxies.List(%v, %v) = nil, %v", ctx, fl, err)
  20196. return nil, *m.ListError
  20197. }
  20198. var objs []*ga.TargetHttpsProxy
  20199. for _, obj := range m.Objects {
  20200. if !fl.Match(obj.ToGA()) {
  20201. continue
  20202. }
  20203. objs = append(objs, obj.ToGA())
  20204. }
  20205. klog.V(5).Infof("MockTargetHttpsProxies.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  20206. return objs, nil
  20207. }
  20208. // Insert is a mock for inserting/creating a new object.
  20209. func (m *MockTargetHttpsProxies) Insert(ctx context.Context, key *meta.Key, obj *ga.TargetHttpsProxy) error {
  20210. if m.InsertHook != nil {
  20211. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  20212. klog.V(5).Infof("MockTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  20213. return err
  20214. }
  20215. }
  20216. if !key.Valid() {
  20217. return fmt.Errorf("invalid GCE key (%+v)", key)
  20218. }
  20219. m.Lock.Lock()
  20220. defer m.Lock.Unlock()
  20221. if err, ok := m.InsertError[*key]; ok {
  20222. klog.V(5).Infof("MockTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  20223. return err
  20224. }
  20225. if _, ok := m.Objects[*key]; ok {
  20226. err := &googleapi.Error{
  20227. Code: http.StatusConflict,
  20228. Message: fmt.Sprintf("MockTargetHttpsProxies %v exists", key),
  20229. }
  20230. klog.V(5).Infof("MockTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  20231. return err
  20232. }
  20233. obj.Name = key.Name
  20234. projectID := m.ProjectRouter.ProjectID(ctx, "ga", "targetHttpsProxies")
  20235. obj.SelfLink = SelfLink(meta.VersionGA, projectID, "targetHttpsProxies", key)
  20236. m.Objects[*key] = &MockTargetHttpsProxiesObj{obj}
  20237. klog.V(5).Infof("MockTargetHttpsProxies.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  20238. return nil
  20239. }
  20240. // Delete is a mock for deleting the object.
  20241. func (m *MockTargetHttpsProxies) Delete(ctx context.Context, key *meta.Key) error {
  20242. if m.DeleteHook != nil {
  20243. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  20244. klog.V(5).Infof("MockTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  20245. return err
  20246. }
  20247. }
  20248. if !key.Valid() {
  20249. return fmt.Errorf("invalid GCE key (%+v)", key)
  20250. }
  20251. m.Lock.Lock()
  20252. defer m.Lock.Unlock()
  20253. if err, ok := m.DeleteError[*key]; ok {
  20254. klog.V(5).Infof("MockTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  20255. return err
  20256. }
  20257. if _, ok := m.Objects[*key]; !ok {
  20258. err := &googleapi.Error{
  20259. Code: http.StatusNotFound,
  20260. Message: fmt.Sprintf("MockTargetHttpsProxies %v not found", key),
  20261. }
  20262. klog.V(5).Infof("MockTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  20263. return err
  20264. }
  20265. delete(m.Objects, *key)
  20266. klog.V(5).Infof("MockTargetHttpsProxies.Delete(%v, %v) = nil", ctx, key)
  20267. return nil
  20268. }
  20269. // Obj wraps the object for use in the mock.
  20270. func (m *MockTargetHttpsProxies) Obj(o *ga.TargetHttpsProxy) *MockTargetHttpsProxiesObj {
  20271. return &MockTargetHttpsProxiesObj{o}
  20272. }
  20273. // SetSslCertificates is a mock for the corresponding method.
  20274. func (m *MockTargetHttpsProxies) SetSslCertificates(ctx context.Context, key *meta.Key, arg0 *ga.TargetHttpsProxiesSetSslCertificatesRequest) error {
  20275. if m.SetSslCertificatesHook != nil {
  20276. return m.SetSslCertificatesHook(ctx, key, arg0, m)
  20277. }
  20278. return nil
  20279. }
  20280. // SetUrlMap is a mock for the corresponding method.
  20281. func (m *MockTargetHttpsProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *ga.UrlMapReference) error {
  20282. if m.SetUrlMapHook != nil {
  20283. return m.SetUrlMapHook(ctx, key, arg0, m)
  20284. }
  20285. return nil
  20286. }
  20287. // GCETargetHttpsProxies is a simplifying adapter for the GCE TargetHttpsProxies.
  20288. type GCETargetHttpsProxies struct {
  20289. s *Service
  20290. }
  20291. // Get the TargetHttpsProxy named by key.
  20292. func (g *GCETargetHttpsProxies) Get(ctx context.Context, key *meta.Key) (*ga.TargetHttpsProxy, error) {
  20293. klog.V(5).Infof("GCETargetHttpsProxies.Get(%v, %v): called", ctx, key)
  20294. if !key.Valid() {
  20295. klog.V(2).Infof("GCETargetHttpsProxies.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  20296. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  20297. }
  20298. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetHttpsProxies")
  20299. rk := &RateLimitKey{
  20300. ProjectID: projectID,
  20301. Operation: "Get",
  20302. Version: meta.Version("ga"),
  20303. Service: "TargetHttpsProxies",
  20304. }
  20305. klog.V(5).Infof("GCETargetHttpsProxies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  20306. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  20307. klog.V(4).Infof("GCETargetHttpsProxies.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  20308. return nil, err
  20309. }
  20310. call := g.s.GA.TargetHttpsProxies.Get(projectID, key.Name)
  20311. call.Context(ctx)
  20312. v, err := call.Do()
  20313. klog.V(4).Infof("GCETargetHttpsProxies.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  20314. return v, err
  20315. }
  20316. // List all TargetHttpsProxy objects.
  20317. func (g *GCETargetHttpsProxies) List(ctx context.Context, fl *filter.F) ([]*ga.TargetHttpsProxy, error) {
  20318. klog.V(5).Infof("GCETargetHttpsProxies.List(%v, %v) called", ctx, fl)
  20319. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetHttpsProxies")
  20320. rk := &RateLimitKey{
  20321. ProjectID: projectID,
  20322. Operation: "List",
  20323. Version: meta.Version("ga"),
  20324. Service: "TargetHttpsProxies",
  20325. }
  20326. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  20327. return nil, err
  20328. }
  20329. klog.V(5).Infof("GCETargetHttpsProxies.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  20330. call := g.s.GA.TargetHttpsProxies.List(projectID)
  20331. if fl != filter.None {
  20332. call.Filter(fl.String())
  20333. }
  20334. var all []*ga.TargetHttpsProxy
  20335. f := func(l *ga.TargetHttpsProxyList) error {
  20336. klog.V(5).Infof("GCETargetHttpsProxies.List(%v, ..., %v): page %+v", ctx, fl, l)
  20337. all = append(all, l.Items...)
  20338. return nil
  20339. }
  20340. if err := call.Pages(ctx, f); err != nil {
  20341. klog.V(4).Infof("GCETargetHttpsProxies.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  20342. return nil, err
  20343. }
  20344. if klog.V(4) {
  20345. klog.V(4).Infof("GCETargetHttpsProxies.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  20346. } else if klog.V(5) {
  20347. var asStr []string
  20348. for _, o := range all {
  20349. asStr = append(asStr, fmt.Sprintf("%+v", o))
  20350. }
  20351. klog.V(5).Infof("GCETargetHttpsProxies.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  20352. }
  20353. return all, nil
  20354. }
  20355. // Insert TargetHttpsProxy with key of value obj.
  20356. func (g *GCETargetHttpsProxies) Insert(ctx context.Context, key *meta.Key, obj *ga.TargetHttpsProxy) error {
  20357. klog.V(5).Infof("GCETargetHttpsProxies.Insert(%v, %v, %+v): called", ctx, key, obj)
  20358. if !key.Valid() {
  20359. klog.V(2).Infof("GCETargetHttpsProxies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  20360. return fmt.Errorf("invalid GCE key (%+v)", key)
  20361. }
  20362. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetHttpsProxies")
  20363. rk := &RateLimitKey{
  20364. ProjectID: projectID,
  20365. Operation: "Insert",
  20366. Version: meta.Version("ga"),
  20367. Service: "TargetHttpsProxies",
  20368. }
  20369. klog.V(5).Infof("GCETargetHttpsProxies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  20370. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  20371. klog.V(4).Infof("GCETargetHttpsProxies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  20372. return err
  20373. }
  20374. obj.Name = key.Name
  20375. call := g.s.GA.TargetHttpsProxies.Insert(projectID, obj)
  20376. call.Context(ctx)
  20377. op, err := call.Do()
  20378. if err != nil {
  20379. klog.V(4).Infof("GCETargetHttpsProxies.Insert(%v, %v, ...) = %+v", ctx, key, err)
  20380. return err
  20381. }
  20382. err = g.s.WaitForCompletion(ctx, op)
  20383. klog.V(4).Infof("GCETargetHttpsProxies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  20384. return err
  20385. }
  20386. // Delete the TargetHttpsProxy referenced by key.
  20387. func (g *GCETargetHttpsProxies) Delete(ctx context.Context, key *meta.Key) error {
  20388. klog.V(5).Infof("GCETargetHttpsProxies.Delete(%v, %v): called", ctx, key)
  20389. if !key.Valid() {
  20390. klog.V(2).Infof("GCETargetHttpsProxies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  20391. return fmt.Errorf("invalid GCE key (%+v)", key)
  20392. }
  20393. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetHttpsProxies")
  20394. rk := &RateLimitKey{
  20395. ProjectID: projectID,
  20396. Operation: "Delete",
  20397. Version: meta.Version("ga"),
  20398. Service: "TargetHttpsProxies",
  20399. }
  20400. klog.V(5).Infof("GCETargetHttpsProxies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  20401. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  20402. klog.V(4).Infof("GCETargetHttpsProxies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  20403. return err
  20404. }
  20405. call := g.s.GA.TargetHttpsProxies.Delete(projectID, key.Name)
  20406. call.Context(ctx)
  20407. op, err := call.Do()
  20408. if err != nil {
  20409. klog.V(4).Infof("GCETargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  20410. return err
  20411. }
  20412. err = g.s.WaitForCompletion(ctx, op)
  20413. klog.V(4).Infof("GCETargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  20414. return err
  20415. }
  20416. // SetSslCertificates is a method on GCETargetHttpsProxies.
  20417. func (g *GCETargetHttpsProxies) SetSslCertificates(ctx context.Context, key *meta.Key, arg0 *ga.TargetHttpsProxiesSetSslCertificatesRequest) error {
  20418. klog.V(5).Infof("GCETargetHttpsProxies.SetSslCertificates(%v, %v, ...): called", ctx, key)
  20419. if !key.Valid() {
  20420. klog.V(2).Infof("GCETargetHttpsProxies.SetSslCertificates(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  20421. return fmt.Errorf("invalid GCE key (%+v)", key)
  20422. }
  20423. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetHttpsProxies")
  20424. rk := &RateLimitKey{
  20425. ProjectID: projectID,
  20426. Operation: "SetSslCertificates",
  20427. Version: meta.Version("ga"),
  20428. Service: "TargetHttpsProxies",
  20429. }
  20430. klog.V(5).Infof("GCETargetHttpsProxies.SetSslCertificates(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  20431. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  20432. klog.V(4).Infof("GCETargetHttpsProxies.SetSslCertificates(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  20433. return err
  20434. }
  20435. call := g.s.GA.TargetHttpsProxies.SetSslCertificates(projectID, key.Name, arg0)
  20436. call.Context(ctx)
  20437. op, err := call.Do()
  20438. if err != nil {
  20439. klog.V(4).Infof("GCETargetHttpsProxies.SetSslCertificates(%v, %v, ...) = %+v", ctx, key, err)
  20440. return err
  20441. }
  20442. err = g.s.WaitForCompletion(ctx, op)
  20443. klog.V(4).Infof("GCETargetHttpsProxies.SetSslCertificates(%v, %v, ...) = %+v", ctx, key, err)
  20444. return err
  20445. }
  20446. // SetUrlMap is a method on GCETargetHttpsProxies.
  20447. func (g *GCETargetHttpsProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *ga.UrlMapReference) error {
  20448. klog.V(5).Infof("GCETargetHttpsProxies.SetUrlMap(%v, %v, ...): called", ctx, key)
  20449. if !key.Valid() {
  20450. klog.V(2).Infof("GCETargetHttpsProxies.SetUrlMap(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  20451. return fmt.Errorf("invalid GCE key (%+v)", key)
  20452. }
  20453. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetHttpsProxies")
  20454. rk := &RateLimitKey{
  20455. ProjectID: projectID,
  20456. Operation: "SetUrlMap",
  20457. Version: meta.Version("ga"),
  20458. Service: "TargetHttpsProxies",
  20459. }
  20460. klog.V(5).Infof("GCETargetHttpsProxies.SetUrlMap(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  20461. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  20462. klog.V(4).Infof("GCETargetHttpsProxies.SetUrlMap(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  20463. return err
  20464. }
  20465. call := g.s.GA.TargetHttpsProxies.SetUrlMap(projectID, key.Name, arg0)
  20466. call.Context(ctx)
  20467. op, err := call.Do()
  20468. if err != nil {
  20469. klog.V(4).Infof("GCETargetHttpsProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err)
  20470. return err
  20471. }
  20472. err = g.s.WaitForCompletion(ctx, op)
  20473. klog.V(4).Infof("GCETargetHttpsProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err)
  20474. return err
  20475. }
  20476. // AlphaTargetHttpsProxies is an interface that allows for mocking of TargetHttpsProxies.
  20477. type AlphaTargetHttpsProxies interface {
  20478. Get(ctx context.Context, key *meta.Key) (*alpha.TargetHttpsProxy, error)
  20479. List(ctx context.Context, fl *filter.F) ([]*alpha.TargetHttpsProxy, error)
  20480. Insert(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpsProxy) error
  20481. Delete(ctx context.Context, key *meta.Key) error
  20482. SetSslCertificates(context.Context, *meta.Key, *alpha.TargetHttpsProxiesSetSslCertificatesRequest) error
  20483. SetUrlMap(context.Context, *meta.Key, *alpha.UrlMapReference) error
  20484. }
  20485. // NewMockAlphaTargetHttpsProxies returns a new mock for TargetHttpsProxies.
  20486. func NewMockAlphaTargetHttpsProxies(pr ProjectRouter, objs map[meta.Key]*MockTargetHttpsProxiesObj) *MockAlphaTargetHttpsProxies {
  20487. mock := &MockAlphaTargetHttpsProxies{
  20488. ProjectRouter: pr,
  20489. Objects: objs,
  20490. GetError: map[meta.Key]error{},
  20491. InsertError: map[meta.Key]error{},
  20492. DeleteError: map[meta.Key]error{},
  20493. }
  20494. return mock
  20495. }
  20496. // MockAlphaTargetHttpsProxies is the mock for TargetHttpsProxies.
  20497. type MockAlphaTargetHttpsProxies struct {
  20498. Lock sync.Mutex
  20499. ProjectRouter ProjectRouter
  20500. // Objects maintained by the mock.
  20501. Objects map[meta.Key]*MockTargetHttpsProxiesObj
  20502. // If an entry exists for the given key and operation, then the error
  20503. // will be returned instead of the operation.
  20504. GetError map[meta.Key]error
  20505. ListError *error
  20506. InsertError map[meta.Key]error
  20507. DeleteError map[meta.Key]error
  20508. // xxxHook allow you to intercept the standard processing of the mock in
  20509. // order to add your own logic. Return (true, _, _) to prevent the normal
  20510. // execution flow of the mock. Return (false, nil, nil) to continue with
  20511. // normal mock behavior/ after the hook function executes.
  20512. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaTargetHttpsProxies) (bool, *alpha.TargetHttpsProxy, error)
  20513. ListHook func(ctx context.Context, fl *filter.F, m *MockAlphaTargetHttpsProxies) (bool, []*alpha.TargetHttpsProxy, error)
  20514. InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpsProxy, m *MockAlphaTargetHttpsProxies) (bool, error)
  20515. DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaTargetHttpsProxies) (bool, error)
  20516. SetSslCertificatesHook func(context.Context, *meta.Key, *alpha.TargetHttpsProxiesSetSslCertificatesRequest, *MockAlphaTargetHttpsProxies) error
  20517. SetUrlMapHook func(context.Context, *meta.Key, *alpha.UrlMapReference, *MockAlphaTargetHttpsProxies) error
  20518. // X is extra state that can be used as part of the mock. Generated code
  20519. // will not use this field.
  20520. X interface{}
  20521. }
  20522. // Get returns the object from the mock.
  20523. func (m *MockAlphaTargetHttpsProxies) Get(ctx context.Context, key *meta.Key) (*alpha.TargetHttpsProxy, error) {
  20524. if m.GetHook != nil {
  20525. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  20526. klog.V(5).Infof("MockAlphaTargetHttpsProxies.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  20527. return obj, err
  20528. }
  20529. }
  20530. if !key.Valid() {
  20531. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  20532. }
  20533. m.Lock.Lock()
  20534. defer m.Lock.Unlock()
  20535. if err, ok := m.GetError[*key]; ok {
  20536. klog.V(5).Infof("MockAlphaTargetHttpsProxies.Get(%v, %s) = nil, %v", ctx, key, err)
  20537. return nil, err
  20538. }
  20539. if obj, ok := m.Objects[*key]; ok {
  20540. typedObj := obj.ToAlpha()
  20541. klog.V(5).Infof("MockAlphaTargetHttpsProxies.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  20542. return typedObj, nil
  20543. }
  20544. err := &googleapi.Error{
  20545. Code: http.StatusNotFound,
  20546. Message: fmt.Sprintf("MockAlphaTargetHttpsProxies %v not found", key),
  20547. }
  20548. klog.V(5).Infof("MockAlphaTargetHttpsProxies.Get(%v, %s) = nil, %v", ctx, key, err)
  20549. return nil, err
  20550. }
  20551. // List all of the objects in the mock.
  20552. func (m *MockAlphaTargetHttpsProxies) List(ctx context.Context, fl *filter.F) ([]*alpha.TargetHttpsProxy, error) {
  20553. if m.ListHook != nil {
  20554. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  20555. klog.V(5).Infof("MockAlphaTargetHttpsProxies.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  20556. return objs, err
  20557. }
  20558. }
  20559. m.Lock.Lock()
  20560. defer m.Lock.Unlock()
  20561. if m.ListError != nil {
  20562. err := *m.ListError
  20563. klog.V(5).Infof("MockAlphaTargetHttpsProxies.List(%v, %v) = nil, %v", ctx, fl, err)
  20564. return nil, *m.ListError
  20565. }
  20566. var objs []*alpha.TargetHttpsProxy
  20567. for _, obj := range m.Objects {
  20568. if !fl.Match(obj.ToAlpha()) {
  20569. continue
  20570. }
  20571. objs = append(objs, obj.ToAlpha())
  20572. }
  20573. klog.V(5).Infof("MockAlphaTargetHttpsProxies.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  20574. return objs, nil
  20575. }
  20576. // Insert is a mock for inserting/creating a new object.
  20577. func (m *MockAlphaTargetHttpsProxies) Insert(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpsProxy) error {
  20578. if m.InsertHook != nil {
  20579. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  20580. klog.V(5).Infof("MockAlphaTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  20581. return err
  20582. }
  20583. }
  20584. if !key.Valid() {
  20585. return fmt.Errorf("invalid GCE key (%+v)", key)
  20586. }
  20587. m.Lock.Lock()
  20588. defer m.Lock.Unlock()
  20589. if err, ok := m.InsertError[*key]; ok {
  20590. klog.V(5).Infof("MockAlphaTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  20591. return err
  20592. }
  20593. if _, ok := m.Objects[*key]; ok {
  20594. err := &googleapi.Error{
  20595. Code: http.StatusConflict,
  20596. Message: fmt.Sprintf("MockAlphaTargetHttpsProxies %v exists", key),
  20597. }
  20598. klog.V(5).Infof("MockAlphaTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  20599. return err
  20600. }
  20601. obj.Name = key.Name
  20602. projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "targetHttpsProxies")
  20603. obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "targetHttpsProxies", key)
  20604. m.Objects[*key] = &MockTargetHttpsProxiesObj{obj}
  20605. klog.V(5).Infof("MockAlphaTargetHttpsProxies.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  20606. return nil
  20607. }
  20608. // Delete is a mock for deleting the object.
  20609. func (m *MockAlphaTargetHttpsProxies) Delete(ctx context.Context, key *meta.Key) error {
  20610. if m.DeleteHook != nil {
  20611. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  20612. klog.V(5).Infof("MockAlphaTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  20613. return err
  20614. }
  20615. }
  20616. if !key.Valid() {
  20617. return fmt.Errorf("invalid GCE key (%+v)", key)
  20618. }
  20619. m.Lock.Lock()
  20620. defer m.Lock.Unlock()
  20621. if err, ok := m.DeleteError[*key]; ok {
  20622. klog.V(5).Infof("MockAlphaTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  20623. return err
  20624. }
  20625. if _, ok := m.Objects[*key]; !ok {
  20626. err := &googleapi.Error{
  20627. Code: http.StatusNotFound,
  20628. Message: fmt.Sprintf("MockAlphaTargetHttpsProxies %v not found", key),
  20629. }
  20630. klog.V(5).Infof("MockAlphaTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  20631. return err
  20632. }
  20633. delete(m.Objects, *key)
  20634. klog.V(5).Infof("MockAlphaTargetHttpsProxies.Delete(%v, %v) = nil", ctx, key)
  20635. return nil
  20636. }
  20637. // Obj wraps the object for use in the mock.
  20638. func (m *MockAlphaTargetHttpsProxies) Obj(o *alpha.TargetHttpsProxy) *MockTargetHttpsProxiesObj {
  20639. return &MockTargetHttpsProxiesObj{o}
  20640. }
  20641. // SetSslCertificates is a mock for the corresponding method.
  20642. func (m *MockAlphaTargetHttpsProxies) SetSslCertificates(ctx context.Context, key *meta.Key, arg0 *alpha.TargetHttpsProxiesSetSslCertificatesRequest) error {
  20643. if m.SetSslCertificatesHook != nil {
  20644. return m.SetSslCertificatesHook(ctx, key, arg0, m)
  20645. }
  20646. return nil
  20647. }
  20648. // SetUrlMap is a mock for the corresponding method.
  20649. func (m *MockAlphaTargetHttpsProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *alpha.UrlMapReference) error {
  20650. if m.SetUrlMapHook != nil {
  20651. return m.SetUrlMapHook(ctx, key, arg0, m)
  20652. }
  20653. return nil
  20654. }
  20655. // GCEAlphaTargetHttpsProxies is a simplifying adapter for the GCE TargetHttpsProxies.
  20656. type GCEAlphaTargetHttpsProxies struct {
  20657. s *Service
  20658. }
  20659. // Get the TargetHttpsProxy named by key.
  20660. func (g *GCEAlphaTargetHttpsProxies) Get(ctx context.Context, key *meta.Key) (*alpha.TargetHttpsProxy, error) {
  20661. klog.V(5).Infof("GCEAlphaTargetHttpsProxies.Get(%v, %v): called", ctx, key)
  20662. if !key.Valid() {
  20663. klog.V(2).Infof("GCEAlphaTargetHttpsProxies.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  20664. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  20665. }
  20666. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "TargetHttpsProxies")
  20667. rk := &RateLimitKey{
  20668. ProjectID: projectID,
  20669. Operation: "Get",
  20670. Version: meta.Version("alpha"),
  20671. Service: "TargetHttpsProxies",
  20672. }
  20673. klog.V(5).Infof("GCEAlphaTargetHttpsProxies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  20674. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  20675. klog.V(4).Infof("GCEAlphaTargetHttpsProxies.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  20676. return nil, err
  20677. }
  20678. call := g.s.Alpha.TargetHttpsProxies.Get(projectID, key.Name)
  20679. call.Context(ctx)
  20680. v, err := call.Do()
  20681. klog.V(4).Infof("GCEAlphaTargetHttpsProxies.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  20682. return v, err
  20683. }
  20684. // List all TargetHttpsProxy objects.
  20685. func (g *GCEAlphaTargetHttpsProxies) List(ctx context.Context, fl *filter.F) ([]*alpha.TargetHttpsProxy, error) {
  20686. klog.V(5).Infof("GCEAlphaTargetHttpsProxies.List(%v, %v) called", ctx, fl)
  20687. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "TargetHttpsProxies")
  20688. rk := &RateLimitKey{
  20689. ProjectID: projectID,
  20690. Operation: "List",
  20691. Version: meta.Version("alpha"),
  20692. Service: "TargetHttpsProxies",
  20693. }
  20694. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  20695. return nil, err
  20696. }
  20697. klog.V(5).Infof("GCEAlphaTargetHttpsProxies.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  20698. call := g.s.Alpha.TargetHttpsProxies.List(projectID)
  20699. if fl != filter.None {
  20700. call.Filter(fl.String())
  20701. }
  20702. var all []*alpha.TargetHttpsProxy
  20703. f := func(l *alpha.TargetHttpsProxyList) error {
  20704. klog.V(5).Infof("GCEAlphaTargetHttpsProxies.List(%v, ..., %v): page %+v", ctx, fl, l)
  20705. all = append(all, l.Items...)
  20706. return nil
  20707. }
  20708. if err := call.Pages(ctx, f); err != nil {
  20709. klog.V(4).Infof("GCEAlphaTargetHttpsProxies.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  20710. return nil, err
  20711. }
  20712. if klog.V(4) {
  20713. klog.V(4).Infof("GCEAlphaTargetHttpsProxies.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  20714. } else if klog.V(5) {
  20715. var asStr []string
  20716. for _, o := range all {
  20717. asStr = append(asStr, fmt.Sprintf("%+v", o))
  20718. }
  20719. klog.V(5).Infof("GCEAlphaTargetHttpsProxies.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  20720. }
  20721. return all, nil
  20722. }
  20723. // Insert TargetHttpsProxy with key of value obj.
  20724. func (g *GCEAlphaTargetHttpsProxies) Insert(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpsProxy) error {
  20725. klog.V(5).Infof("GCEAlphaTargetHttpsProxies.Insert(%v, %v, %+v): called", ctx, key, obj)
  20726. if !key.Valid() {
  20727. klog.V(2).Infof("GCEAlphaTargetHttpsProxies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  20728. return fmt.Errorf("invalid GCE key (%+v)", key)
  20729. }
  20730. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "TargetHttpsProxies")
  20731. rk := &RateLimitKey{
  20732. ProjectID: projectID,
  20733. Operation: "Insert",
  20734. Version: meta.Version("alpha"),
  20735. Service: "TargetHttpsProxies",
  20736. }
  20737. klog.V(5).Infof("GCEAlphaTargetHttpsProxies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  20738. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  20739. klog.V(4).Infof("GCEAlphaTargetHttpsProxies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  20740. return err
  20741. }
  20742. obj.Name = key.Name
  20743. call := g.s.Alpha.TargetHttpsProxies.Insert(projectID, obj)
  20744. call.Context(ctx)
  20745. op, err := call.Do()
  20746. if err != nil {
  20747. klog.V(4).Infof("GCEAlphaTargetHttpsProxies.Insert(%v, %v, ...) = %+v", ctx, key, err)
  20748. return err
  20749. }
  20750. err = g.s.WaitForCompletion(ctx, op)
  20751. klog.V(4).Infof("GCEAlphaTargetHttpsProxies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  20752. return err
  20753. }
  20754. // Delete the TargetHttpsProxy referenced by key.
  20755. func (g *GCEAlphaTargetHttpsProxies) Delete(ctx context.Context, key *meta.Key) error {
  20756. klog.V(5).Infof("GCEAlphaTargetHttpsProxies.Delete(%v, %v): called", ctx, key)
  20757. if !key.Valid() {
  20758. klog.V(2).Infof("GCEAlphaTargetHttpsProxies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  20759. return fmt.Errorf("invalid GCE key (%+v)", key)
  20760. }
  20761. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "TargetHttpsProxies")
  20762. rk := &RateLimitKey{
  20763. ProjectID: projectID,
  20764. Operation: "Delete",
  20765. Version: meta.Version("alpha"),
  20766. Service: "TargetHttpsProxies",
  20767. }
  20768. klog.V(5).Infof("GCEAlphaTargetHttpsProxies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  20769. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  20770. klog.V(4).Infof("GCEAlphaTargetHttpsProxies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  20771. return err
  20772. }
  20773. call := g.s.Alpha.TargetHttpsProxies.Delete(projectID, key.Name)
  20774. call.Context(ctx)
  20775. op, err := call.Do()
  20776. if err != nil {
  20777. klog.V(4).Infof("GCEAlphaTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  20778. return err
  20779. }
  20780. err = g.s.WaitForCompletion(ctx, op)
  20781. klog.V(4).Infof("GCEAlphaTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  20782. return err
  20783. }
  20784. // SetSslCertificates is a method on GCEAlphaTargetHttpsProxies.
  20785. func (g *GCEAlphaTargetHttpsProxies) SetSslCertificates(ctx context.Context, key *meta.Key, arg0 *alpha.TargetHttpsProxiesSetSslCertificatesRequest) error {
  20786. klog.V(5).Infof("GCEAlphaTargetHttpsProxies.SetSslCertificates(%v, %v, ...): called", ctx, key)
  20787. if !key.Valid() {
  20788. klog.V(2).Infof("GCEAlphaTargetHttpsProxies.SetSslCertificates(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  20789. return fmt.Errorf("invalid GCE key (%+v)", key)
  20790. }
  20791. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "TargetHttpsProxies")
  20792. rk := &RateLimitKey{
  20793. ProjectID: projectID,
  20794. Operation: "SetSslCertificates",
  20795. Version: meta.Version("alpha"),
  20796. Service: "TargetHttpsProxies",
  20797. }
  20798. klog.V(5).Infof("GCEAlphaTargetHttpsProxies.SetSslCertificates(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  20799. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  20800. klog.V(4).Infof("GCEAlphaTargetHttpsProxies.SetSslCertificates(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  20801. return err
  20802. }
  20803. call := g.s.Alpha.TargetHttpsProxies.SetSslCertificates(projectID, key.Name, arg0)
  20804. call.Context(ctx)
  20805. op, err := call.Do()
  20806. if err != nil {
  20807. klog.V(4).Infof("GCEAlphaTargetHttpsProxies.SetSslCertificates(%v, %v, ...) = %+v", ctx, key, err)
  20808. return err
  20809. }
  20810. err = g.s.WaitForCompletion(ctx, op)
  20811. klog.V(4).Infof("GCEAlphaTargetHttpsProxies.SetSslCertificates(%v, %v, ...) = %+v", ctx, key, err)
  20812. return err
  20813. }
  20814. // SetUrlMap is a method on GCEAlphaTargetHttpsProxies.
  20815. func (g *GCEAlphaTargetHttpsProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *alpha.UrlMapReference) error {
  20816. klog.V(5).Infof("GCEAlphaTargetHttpsProxies.SetUrlMap(%v, %v, ...): called", ctx, key)
  20817. if !key.Valid() {
  20818. klog.V(2).Infof("GCEAlphaTargetHttpsProxies.SetUrlMap(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  20819. return fmt.Errorf("invalid GCE key (%+v)", key)
  20820. }
  20821. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "TargetHttpsProxies")
  20822. rk := &RateLimitKey{
  20823. ProjectID: projectID,
  20824. Operation: "SetUrlMap",
  20825. Version: meta.Version("alpha"),
  20826. Service: "TargetHttpsProxies",
  20827. }
  20828. klog.V(5).Infof("GCEAlphaTargetHttpsProxies.SetUrlMap(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  20829. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  20830. klog.V(4).Infof("GCEAlphaTargetHttpsProxies.SetUrlMap(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  20831. return err
  20832. }
  20833. call := g.s.Alpha.TargetHttpsProxies.SetUrlMap(projectID, key.Name, arg0)
  20834. call.Context(ctx)
  20835. op, err := call.Do()
  20836. if err != nil {
  20837. klog.V(4).Infof("GCEAlphaTargetHttpsProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err)
  20838. return err
  20839. }
  20840. err = g.s.WaitForCompletion(ctx, op)
  20841. klog.V(4).Infof("GCEAlphaTargetHttpsProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err)
  20842. return err
  20843. }
  20844. // BetaTargetHttpsProxies is an interface that allows for mocking of TargetHttpsProxies.
  20845. type BetaTargetHttpsProxies interface {
  20846. Get(ctx context.Context, key *meta.Key) (*beta.TargetHttpsProxy, error)
  20847. List(ctx context.Context, fl *filter.F) ([]*beta.TargetHttpsProxy, error)
  20848. Insert(ctx context.Context, key *meta.Key, obj *beta.TargetHttpsProxy) error
  20849. Delete(ctx context.Context, key *meta.Key) error
  20850. SetSslCertificates(context.Context, *meta.Key, *beta.TargetHttpsProxiesSetSslCertificatesRequest) error
  20851. SetUrlMap(context.Context, *meta.Key, *beta.UrlMapReference) error
  20852. }
  20853. // NewMockBetaTargetHttpsProxies returns a new mock for TargetHttpsProxies.
  20854. func NewMockBetaTargetHttpsProxies(pr ProjectRouter, objs map[meta.Key]*MockTargetHttpsProxiesObj) *MockBetaTargetHttpsProxies {
  20855. mock := &MockBetaTargetHttpsProxies{
  20856. ProjectRouter: pr,
  20857. Objects: objs,
  20858. GetError: map[meta.Key]error{},
  20859. InsertError: map[meta.Key]error{},
  20860. DeleteError: map[meta.Key]error{},
  20861. }
  20862. return mock
  20863. }
  20864. // MockBetaTargetHttpsProxies is the mock for TargetHttpsProxies.
  20865. type MockBetaTargetHttpsProxies struct {
  20866. Lock sync.Mutex
  20867. ProjectRouter ProjectRouter
  20868. // Objects maintained by the mock.
  20869. Objects map[meta.Key]*MockTargetHttpsProxiesObj
  20870. // If an entry exists for the given key and operation, then the error
  20871. // will be returned instead of the operation.
  20872. GetError map[meta.Key]error
  20873. ListError *error
  20874. InsertError map[meta.Key]error
  20875. DeleteError map[meta.Key]error
  20876. // xxxHook allow you to intercept the standard processing of the mock in
  20877. // order to add your own logic. Return (true, _, _) to prevent the normal
  20878. // execution flow of the mock. Return (false, nil, nil) to continue with
  20879. // normal mock behavior/ after the hook function executes.
  20880. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaTargetHttpsProxies) (bool, *beta.TargetHttpsProxy, error)
  20881. ListHook func(ctx context.Context, fl *filter.F, m *MockBetaTargetHttpsProxies) (bool, []*beta.TargetHttpsProxy, error)
  20882. InsertHook func(ctx context.Context, key *meta.Key, obj *beta.TargetHttpsProxy, m *MockBetaTargetHttpsProxies) (bool, error)
  20883. DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaTargetHttpsProxies) (bool, error)
  20884. SetSslCertificatesHook func(context.Context, *meta.Key, *beta.TargetHttpsProxiesSetSslCertificatesRequest, *MockBetaTargetHttpsProxies) error
  20885. SetUrlMapHook func(context.Context, *meta.Key, *beta.UrlMapReference, *MockBetaTargetHttpsProxies) error
  20886. // X is extra state that can be used as part of the mock. Generated code
  20887. // will not use this field.
  20888. X interface{}
  20889. }
  20890. // Get returns the object from the mock.
  20891. func (m *MockBetaTargetHttpsProxies) Get(ctx context.Context, key *meta.Key) (*beta.TargetHttpsProxy, error) {
  20892. if m.GetHook != nil {
  20893. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  20894. klog.V(5).Infof("MockBetaTargetHttpsProxies.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  20895. return obj, err
  20896. }
  20897. }
  20898. if !key.Valid() {
  20899. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  20900. }
  20901. m.Lock.Lock()
  20902. defer m.Lock.Unlock()
  20903. if err, ok := m.GetError[*key]; ok {
  20904. klog.V(5).Infof("MockBetaTargetHttpsProxies.Get(%v, %s) = nil, %v", ctx, key, err)
  20905. return nil, err
  20906. }
  20907. if obj, ok := m.Objects[*key]; ok {
  20908. typedObj := obj.ToBeta()
  20909. klog.V(5).Infof("MockBetaTargetHttpsProxies.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  20910. return typedObj, nil
  20911. }
  20912. err := &googleapi.Error{
  20913. Code: http.StatusNotFound,
  20914. Message: fmt.Sprintf("MockBetaTargetHttpsProxies %v not found", key),
  20915. }
  20916. klog.V(5).Infof("MockBetaTargetHttpsProxies.Get(%v, %s) = nil, %v", ctx, key, err)
  20917. return nil, err
  20918. }
  20919. // List all of the objects in the mock.
  20920. func (m *MockBetaTargetHttpsProxies) List(ctx context.Context, fl *filter.F) ([]*beta.TargetHttpsProxy, error) {
  20921. if m.ListHook != nil {
  20922. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  20923. klog.V(5).Infof("MockBetaTargetHttpsProxies.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  20924. return objs, err
  20925. }
  20926. }
  20927. m.Lock.Lock()
  20928. defer m.Lock.Unlock()
  20929. if m.ListError != nil {
  20930. err := *m.ListError
  20931. klog.V(5).Infof("MockBetaTargetHttpsProxies.List(%v, %v) = nil, %v", ctx, fl, err)
  20932. return nil, *m.ListError
  20933. }
  20934. var objs []*beta.TargetHttpsProxy
  20935. for _, obj := range m.Objects {
  20936. if !fl.Match(obj.ToBeta()) {
  20937. continue
  20938. }
  20939. objs = append(objs, obj.ToBeta())
  20940. }
  20941. klog.V(5).Infof("MockBetaTargetHttpsProxies.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  20942. return objs, nil
  20943. }
  20944. // Insert is a mock for inserting/creating a new object.
  20945. func (m *MockBetaTargetHttpsProxies) Insert(ctx context.Context, key *meta.Key, obj *beta.TargetHttpsProxy) error {
  20946. if m.InsertHook != nil {
  20947. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  20948. klog.V(5).Infof("MockBetaTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  20949. return err
  20950. }
  20951. }
  20952. if !key.Valid() {
  20953. return fmt.Errorf("invalid GCE key (%+v)", key)
  20954. }
  20955. m.Lock.Lock()
  20956. defer m.Lock.Unlock()
  20957. if err, ok := m.InsertError[*key]; ok {
  20958. klog.V(5).Infof("MockBetaTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  20959. return err
  20960. }
  20961. if _, ok := m.Objects[*key]; ok {
  20962. err := &googleapi.Error{
  20963. Code: http.StatusConflict,
  20964. Message: fmt.Sprintf("MockBetaTargetHttpsProxies %v exists", key),
  20965. }
  20966. klog.V(5).Infof("MockBetaTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  20967. return err
  20968. }
  20969. obj.Name = key.Name
  20970. projectID := m.ProjectRouter.ProjectID(ctx, "beta", "targetHttpsProxies")
  20971. obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "targetHttpsProxies", key)
  20972. m.Objects[*key] = &MockTargetHttpsProxiesObj{obj}
  20973. klog.V(5).Infof("MockBetaTargetHttpsProxies.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  20974. return nil
  20975. }
  20976. // Delete is a mock for deleting the object.
  20977. func (m *MockBetaTargetHttpsProxies) Delete(ctx context.Context, key *meta.Key) error {
  20978. if m.DeleteHook != nil {
  20979. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  20980. klog.V(5).Infof("MockBetaTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  20981. return err
  20982. }
  20983. }
  20984. if !key.Valid() {
  20985. return fmt.Errorf("invalid GCE key (%+v)", key)
  20986. }
  20987. m.Lock.Lock()
  20988. defer m.Lock.Unlock()
  20989. if err, ok := m.DeleteError[*key]; ok {
  20990. klog.V(5).Infof("MockBetaTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  20991. return err
  20992. }
  20993. if _, ok := m.Objects[*key]; !ok {
  20994. err := &googleapi.Error{
  20995. Code: http.StatusNotFound,
  20996. Message: fmt.Sprintf("MockBetaTargetHttpsProxies %v not found", key),
  20997. }
  20998. klog.V(5).Infof("MockBetaTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  20999. return err
  21000. }
  21001. delete(m.Objects, *key)
  21002. klog.V(5).Infof("MockBetaTargetHttpsProxies.Delete(%v, %v) = nil", ctx, key)
  21003. return nil
  21004. }
  21005. // Obj wraps the object for use in the mock.
  21006. func (m *MockBetaTargetHttpsProxies) Obj(o *beta.TargetHttpsProxy) *MockTargetHttpsProxiesObj {
  21007. return &MockTargetHttpsProxiesObj{o}
  21008. }
  21009. // SetSslCertificates is a mock for the corresponding method.
  21010. func (m *MockBetaTargetHttpsProxies) SetSslCertificates(ctx context.Context, key *meta.Key, arg0 *beta.TargetHttpsProxiesSetSslCertificatesRequest) error {
  21011. if m.SetSslCertificatesHook != nil {
  21012. return m.SetSslCertificatesHook(ctx, key, arg0, m)
  21013. }
  21014. return nil
  21015. }
  21016. // SetUrlMap is a mock for the corresponding method.
  21017. func (m *MockBetaTargetHttpsProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *beta.UrlMapReference) error {
  21018. if m.SetUrlMapHook != nil {
  21019. return m.SetUrlMapHook(ctx, key, arg0, m)
  21020. }
  21021. return nil
  21022. }
  21023. // GCEBetaTargetHttpsProxies is a simplifying adapter for the GCE TargetHttpsProxies.
  21024. type GCEBetaTargetHttpsProxies struct {
  21025. s *Service
  21026. }
  21027. // Get the TargetHttpsProxy named by key.
  21028. func (g *GCEBetaTargetHttpsProxies) Get(ctx context.Context, key *meta.Key) (*beta.TargetHttpsProxy, error) {
  21029. klog.V(5).Infof("GCEBetaTargetHttpsProxies.Get(%v, %v): called", ctx, key)
  21030. if !key.Valid() {
  21031. klog.V(2).Infof("GCEBetaTargetHttpsProxies.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  21032. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  21033. }
  21034. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "TargetHttpsProxies")
  21035. rk := &RateLimitKey{
  21036. ProjectID: projectID,
  21037. Operation: "Get",
  21038. Version: meta.Version("beta"),
  21039. Service: "TargetHttpsProxies",
  21040. }
  21041. klog.V(5).Infof("GCEBetaTargetHttpsProxies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  21042. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  21043. klog.V(4).Infof("GCEBetaTargetHttpsProxies.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  21044. return nil, err
  21045. }
  21046. call := g.s.Beta.TargetHttpsProxies.Get(projectID, key.Name)
  21047. call.Context(ctx)
  21048. v, err := call.Do()
  21049. klog.V(4).Infof("GCEBetaTargetHttpsProxies.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  21050. return v, err
  21051. }
  21052. // List all TargetHttpsProxy objects.
  21053. func (g *GCEBetaTargetHttpsProxies) List(ctx context.Context, fl *filter.F) ([]*beta.TargetHttpsProxy, error) {
  21054. klog.V(5).Infof("GCEBetaTargetHttpsProxies.List(%v, %v) called", ctx, fl)
  21055. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "TargetHttpsProxies")
  21056. rk := &RateLimitKey{
  21057. ProjectID: projectID,
  21058. Operation: "List",
  21059. Version: meta.Version("beta"),
  21060. Service: "TargetHttpsProxies",
  21061. }
  21062. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  21063. return nil, err
  21064. }
  21065. klog.V(5).Infof("GCEBetaTargetHttpsProxies.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  21066. call := g.s.Beta.TargetHttpsProxies.List(projectID)
  21067. if fl != filter.None {
  21068. call.Filter(fl.String())
  21069. }
  21070. var all []*beta.TargetHttpsProxy
  21071. f := func(l *beta.TargetHttpsProxyList) error {
  21072. klog.V(5).Infof("GCEBetaTargetHttpsProxies.List(%v, ..., %v): page %+v", ctx, fl, l)
  21073. all = append(all, l.Items...)
  21074. return nil
  21075. }
  21076. if err := call.Pages(ctx, f); err != nil {
  21077. klog.V(4).Infof("GCEBetaTargetHttpsProxies.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  21078. return nil, err
  21079. }
  21080. if klog.V(4) {
  21081. klog.V(4).Infof("GCEBetaTargetHttpsProxies.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  21082. } else if klog.V(5) {
  21083. var asStr []string
  21084. for _, o := range all {
  21085. asStr = append(asStr, fmt.Sprintf("%+v", o))
  21086. }
  21087. klog.V(5).Infof("GCEBetaTargetHttpsProxies.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  21088. }
  21089. return all, nil
  21090. }
  21091. // Insert TargetHttpsProxy with key of value obj.
  21092. func (g *GCEBetaTargetHttpsProxies) Insert(ctx context.Context, key *meta.Key, obj *beta.TargetHttpsProxy) error {
  21093. klog.V(5).Infof("GCEBetaTargetHttpsProxies.Insert(%v, %v, %+v): called", ctx, key, obj)
  21094. if !key.Valid() {
  21095. klog.V(2).Infof("GCEBetaTargetHttpsProxies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  21096. return fmt.Errorf("invalid GCE key (%+v)", key)
  21097. }
  21098. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "TargetHttpsProxies")
  21099. rk := &RateLimitKey{
  21100. ProjectID: projectID,
  21101. Operation: "Insert",
  21102. Version: meta.Version("beta"),
  21103. Service: "TargetHttpsProxies",
  21104. }
  21105. klog.V(5).Infof("GCEBetaTargetHttpsProxies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  21106. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  21107. klog.V(4).Infof("GCEBetaTargetHttpsProxies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  21108. return err
  21109. }
  21110. obj.Name = key.Name
  21111. call := g.s.Beta.TargetHttpsProxies.Insert(projectID, obj)
  21112. call.Context(ctx)
  21113. op, err := call.Do()
  21114. if err != nil {
  21115. klog.V(4).Infof("GCEBetaTargetHttpsProxies.Insert(%v, %v, ...) = %+v", ctx, key, err)
  21116. return err
  21117. }
  21118. err = g.s.WaitForCompletion(ctx, op)
  21119. klog.V(4).Infof("GCEBetaTargetHttpsProxies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  21120. return err
  21121. }
  21122. // Delete the TargetHttpsProxy referenced by key.
  21123. func (g *GCEBetaTargetHttpsProxies) Delete(ctx context.Context, key *meta.Key) error {
  21124. klog.V(5).Infof("GCEBetaTargetHttpsProxies.Delete(%v, %v): called", ctx, key)
  21125. if !key.Valid() {
  21126. klog.V(2).Infof("GCEBetaTargetHttpsProxies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  21127. return fmt.Errorf("invalid GCE key (%+v)", key)
  21128. }
  21129. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "TargetHttpsProxies")
  21130. rk := &RateLimitKey{
  21131. ProjectID: projectID,
  21132. Operation: "Delete",
  21133. Version: meta.Version("beta"),
  21134. Service: "TargetHttpsProxies",
  21135. }
  21136. klog.V(5).Infof("GCEBetaTargetHttpsProxies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  21137. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  21138. klog.V(4).Infof("GCEBetaTargetHttpsProxies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  21139. return err
  21140. }
  21141. call := g.s.Beta.TargetHttpsProxies.Delete(projectID, key.Name)
  21142. call.Context(ctx)
  21143. op, err := call.Do()
  21144. if err != nil {
  21145. klog.V(4).Infof("GCEBetaTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  21146. return err
  21147. }
  21148. err = g.s.WaitForCompletion(ctx, op)
  21149. klog.V(4).Infof("GCEBetaTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  21150. return err
  21151. }
  21152. // SetSslCertificates is a method on GCEBetaTargetHttpsProxies.
  21153. func (g *GCEBetaTargetHttpsProxies) SetSslCertificates(ctx context.Context, key *meta.Key, arg0 *beta.TargetHttpsProxiesSetSslCertificatesRequest) error {
  21154. klog.V(5).Infof("GCEBetaTargetHttpsProxies.SetSslCertificates(%v, %v, ...): called", ctx, key)
  21155. if !key.Valid() {
  21156. klog.V(2).Infof("GCEBetaTargetHttpsProxies.SetSslCertificates(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  21157. return fmt.Errorf("invalid GCE key (%+v)", key)
  21158. }
  21159. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "TargetHttpsProxies")
  21160. rk := &RateLimitKey{
  21161. ProjectID: projectID,
  21162. Operation: "SetSslCertificates",
  21163. Version: meta.Version("beta"),
  21164. Service: "TargetHttpsProxies",
  21165. }
  21166. klog.V(5).Infof("GCEBetaTargetHttpsProxies.SetSslCertificates(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  21167. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  21168. klog.V(4).Infof("GCEBetaTargetHttpsProxies.SetSslCertificates(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  21169. return err
  21170. }
  21171. call := g.s.Beta.TargetHttpsProxies.SetSslCertificates(projectID, key.Name, arg0)
  21172. call.Context(ctx)
  21173. op, err := call.Do()
  21174. if err != nil {
  21175. klog.V(4).Infof("GCEBetaTargetHttpsProxies.SetSslCertificates(%v, %v, ...) = %+v", ctx, key, err)
  21176. return err
  21177. }
  21178. err = g.s.WaitForCompletion(ctx, op)
  21179. klog.V(4).Infof("GCEBetaTargetHttpsProxies.SetSslCertificates(%v, %v, ...) = %+v", ctx, key, err)
  21180. return err
  21181. }
  21182. // SetUrlMap is a method on GCEBetaTargetHttpsProxies.
  21183. func (g *GCEBetaTargetHttpsProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *beta.UrlMapReference) error {
  21184. klog.V(5).Infof("GCEBetaTargetHttpsProxies.SetUrlMap(%v, %v, ...): called", ctx, key)
  21185. if !key.Valid() {
  21186. klog.V(2).Infof("GCEBetaTargetHttpsProxies.SetUrlMap(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  21187. return fmt.Errorf("invalid GCE key (%+v)", key)
  21188. }
  21189. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "TargetHttpsProxies")
  21190. rk := &RateLimitKey{
  21191. ProjectID: projectID,
  21192. Operation: "SetUrlMap",
  21193. Version: meta.Version("beta"),
  21194. Service: "TargetHttpsProxies",
  21195. }
  21196. klog.V(5).Infof("GCEBetaTargetHttpsProxies.SetUrlMap(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  21197. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  21198. klog.V(4).Infof("GCEBetaTargetHttpsProxies.SetUrlMap(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  21199. return err
  21200. }
  21201. call := g.s.Beta.TargetHttpsProxies.SetUrlMap(projectID, key.Name, arg0)
  21202. call.Context(ctx)
  21203. op, err := call.Do()
  21204. if err != nil {
  21205. klog.V(4).Infof("GCEBetaTargetHttpsProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err)
  21206. return err
  21207. }
  21208. err = g.s.WaitForCompletion(ctx, op)
  21209. klog.V(4).Infof("GCEBetaTargetHttpsProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err)
  21210. return err
  21211. }
  21212. // AlphaRegionTargetHttpsProxies is an interface that allows for mocking of RegionTargetHttpsProxies.
  21213. type AlphaRegionTargetHttpsProxies interface {
  21214. Get(ctx context.Context, key *meta.Key) (*alpha.TargetHttpsProxy, error)
  21215. List(ctx context.Context, region string, fl *filter.F) ([]*alpha.TargetHttpsProxy, error)
  21216. Insert(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpsProxy) error
  21217. Delete(ctx context.Context, key *meta.Key) error
  21218. SetSslCertificates(context.Context, *meta.Key, *alpha.RegionTargetHttpsProxiesSetSslCertificatesRequest) error
  21219. SetUrlMap(context.Context, *meta.Key, *alpha.UrlMapReference) error
  21220. }
  21221. // NewMockAlphaRegionTargetHttpsProxies returns a new mock for RegionTargetHttpsProxies.
  21222. func NewMockAlphaRegionTargetHttpsProxies(pr ProjectRouter, objs map[meta.Key]*MockRegionTargetHttpsProxiesObj) *MockAlphaRegionTargetHttpsProxies {
  21223. mock := &MockAlphaRegionTargetHttpsProxies{
  21224. ProjectRouter: pr,
  21225. Objects: objs,
  21226. GetError: map[meta.Key]error{},
  21227. InsertError: map[meta.Key]error{},
  21228. DeleteError: map[meta.Key]error{},
  21229. }
  21230. return mock
  21231. }
  21232. // MockAlphaRegionTargetHttpsProxies is the mock for RegionTargetHttpsProxies.
  21233. type MockAlphaRegionTargetHttpsProxies struct {
  21234. Lock sync.Mutex
  21235. ProjectRouter ProjectRouter
  21236. // Objects maintained by the mock.
  21237. Objects map[meta.Key]*MockRegionTargetHttpsProxiesObj
  21238. // If an entry exists for the given key and operation, then the error
  21239. // will be returned instead of the operation.
  21240. GetError map[meta.Key]error
  21241. ListError *error
  21242. InsertError map[meta.Key]error
  21243. DeleteError map[meta.Key]error
  21244. // xxxHook allow you to intercept the standard processing of the mock in
  21245. // order to add your own logic. Return (true, _, _) to prevent the normal
  21246. // execution flow of the mock. Return (false, nil, nil) to continue with
  21247. // normal mock behavior/ after the hook function executes.
  21248. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaRegionTargetHttpsProxies) (bool, *alpha.TargetHttpsProxy, error)
  21249. ListHook func(ctx context.Context, region string, fl *filter.F, m *MockAlphaRegionTargetHttpsProxies) (bool, []*alpha.TargetHttpsProxy, error)
  21250. InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpsProxy, m *MockAlphaRegionTargetHttpsProxies) (bool, error)
  21251. DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaRegionTargetHttpsProxies) (bool, error)
  21252. SetSslCertificatesHook func(context.Context, *meta.Key, *alpha.RegionTargetHttpsProxiesSetSslCertificatesRequest, *MockAlphaRegionTargetHttpsProxies) error
  21253. SetUrlMapHook func(context.Context, *meta.Key, *alpha.UrlMapReference, *MockAlphaRegionTargetHttpsProxies) error
  21254. // X is extra state that can be used as part of the mock. Generated code
  21255. // will not use this field.
  21256. X interface{}
  21257. }
  21258. // Get returns the object from the mock.
  21259. func (m *MockAlphaRegionTargetHttpsProxies) Get(ctx context.Context, key *meta.Key) (*alpha.TargetHttpsProxy, error) {
  21260. if m.GetHook != nil {
  21261. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  21262. klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  21263. return obj, err
  21264. }
  21265. }
  21266. if !key.Valid() {
  21267. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  21268. }
  21269. m.Lock.Lock()
  21270. defer m.Lock.Unlock()
  21271. if err, ok := m.GetError[*key]; ok {
  21272. klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.Get(%v, %s) = nil, %v", ctx, key, err)
  21273. return nil, err
  21274. }
  21275. if obj, ok := m.Objects[*key]; ok {
  21276. typedObj := obj.ToAlpha()
  21277. klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  21278. return typedObj, nil
  21279. }
  21280. err := &googleapi.Error{
  21281. Code: http.StatusNotFound,
  21282. Message: fmt.Sprintf("MockAlphaRegionTargetHttpsProxies %v not found", key),
  21283. }
  21284. klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.Get(%v, %s) = nil, %v", ctx, key, err)
  21285. return nil, err
  21286. }
  21287. // List all of the objects in the mock in the given region.
  21288. func (m *MockAlphaRegionTargetHttpsProxies) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.TargetHttpsProxy, error) {
  21289. if m.ListHook != nil {
  21290. if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept {
  21291. klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err)
  21292. return objs, err
  21293. }
  21294. }
  21295. m.Lock.Lock()
  21296. defer m.Lock.Unlock()
  21297. if m.ListError != nil {
  21298. err := *m.ListError
  21299. klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.List(%v, %q, %v) = nil, %v", ctx, region, fl, err)
  21300. return nil, *m.ListError
  21301. }
  21302. var objs []*alpha.TargetHttpsProxy
  21303. for key, obj := range m.Objects {
  21304. if key.Region != region {
  21305. continue
  21306. }
  21307. if !fl.Match(obj.ToAlpha()) {
  21308. continue
  21309. }
  21310. objs = append(objs, obj.ToAlpha())
  21311. }
  21312. klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs))
  21313. return objs, nil
  21314. }
  21315. // Insert is a mock for inserting/creating a new object.
  21316. func (m *MockAlphaRegionTargetHttpsProxies) Insert(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpsProxy) error {
  21317. if m.InsertHook != nil {
  21318. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  21319. klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  21320. return err
  21321. }
  21322. }
  21323. if !key.Valid() {
  21324. return fmt.Errorf("invalid GCE key (%+v)", key)
  21325. }
  21326. m.Lock.Lock()
  21327. defer m.Lock.Unlock()
  21328. if err, ok := m.InsertError[*key]; ok {
  21329. klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  21330. return err
  21331. }
  21332. if _, ok := m.Objects[*key]; ok {
  21333. err := &googleapi.Error{
  21334. Code: http.StatusConflict,
  21335. Message: fmt.Sprintf("MockAlphaRegionTargetHttpsProxies %v exists", key),
  21336. }
  21337. klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  21338. return err
  21339. }
  21340. obj.Name = key.Name
  21341. projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "targetHttpsProxies")
  21342. obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "targetHttpsProxies", key)
  21343. m.Objects[*key] = &MockRegionTargetHttpsProxiesObj{obj}
  21344. klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  21345. return nil
  21346. }
  21347. // Delete is a mock for deleting the object.
  21348. func (m *MockAlphaRegionTargetHttpsProxies) Delete(ctx context.Context, key *meta.Key) error {
  21349. if m.DeleteHook != nil {
  21350. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  21351. klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  21352. return err
  21353. }
  21354. }
  21355. if !key.Valid() {
  21356. return fmt.Errorf("invalid GCE key (%+v)", key)
  21357. }
  21358. m.Lock.Lock()
  21359. defer m.Lock.Unlock()
  21360. if err, ok := m.DeleteError[*key]; ok {
  21361. klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  21362. return err
  21363. }
  21364. if _, ok := m.Objects[*key]; !ok {
  21365. err := &googleapi.Error{
  21366. Code: http.StatusNotFound,
  21367. Message: fmt.Sprintf("MockAlphaRegionTargetHttpsProxies %v not found", key),
  21368. }
  21369. klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  21370. return err
  21371. }
  21372. delete(m.Objects, *key)
  21373. klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.Delete(%v, %v) = nil", ctx, key)
  21374. return nil
  21375. }
  21376. // Obj wraps the object for use in the mock.
  21377. func (m *MockAlphaRegionTargetHttpsProxies) Obj(o *alpha.TargetHttpsProxy) *MockRegionTargetHttpsProxiesObj {
  21378. return &MockRegionTargetHttpsProxiesObj{o}
  21379. }
  21380. // SetSslCertificates is a mock for the corresponding method.
  21381. func (m *MockAlphaRegionTargetHttpsProxies) SetSslCertificates(ctx context.Context, key *meta.Key, arg0 *alpha.RegionTargetHttpsProxiesSetSslCertificatesRequest) error {
  21382. if m.SetSslCertificatesHook != nil {
  21383. return m.SetSslCertificatesHook(ctx, key, arg0, m)
  21384. }
  21385. return nil
  21386. }
  21387. // SetUrlMap is a mock for the corresponding method.
  21388. func (m *MockAlphaRegionTargetHttpsProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *alpha.UrlMapReference) error {
  21389. if m.SetUrlMapHook != nil {
  21390. return m.SetUrlMapHook(ctx, key, arg0, m)
  21391. }
  21392. return nil
  21393. }
  21394. // GCEAlphaRegionTargetHttpsProxies is a simplifying adapter for the GCE RegionTargetHttpsProxies.
  21395. type GCEAlphaRegionTargetHttpsProxies struct {
  21396. s *Service
  21397. }
  21398. // Get the TargetHttpsProxy named by key.
  21399. func (g *GCEAlphaRegionTargetHttpsProxies) Get(ctx context.Context, key *meta.Key) (*alpha.TargetHttpsProxy, error) {
  21400. klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.Get(%v, %v): called", ctx, key)
  21401. if !key.Valid() {
  21402. klog.V(2).Infof("GCEAlphaRegionTargetHttpsProxies.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  21403. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  21404. }
  21405. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionTargetHttpsProxies")
  21406. rk := &RateLimitKey{
  21407. ProjectID: projectID,
  21408. Operation: "Get",
  21409. Version: meta.Version("alpha"),
  21410. Service: "RegionTargetHttpsProxies",
  21411. }
  21412. klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  21413. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  21414. klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  21415. return nil, err
  21416. }
  21417. call := g.s.Alpha.RegionTargetHttpsProxies.Get(projectID, key.Region, key.Name)
  21418. call.Context(ctx)
  21419. v, err := call.Do()
  21420. klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  21421. return v, err
  21422. }
  21423. // List all TargetHttpsProxy objects.
  21424. func (g *GCEAlphaRegionTargetHttpsProxies) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.TargetHttpsProxy, error) {
  21425. klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.List(%v, %v, %v) called", ctx, region, fl)
  21426. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionTargetHttpsProxies")
  21427. rk := &RateLimitKey{
  21428. ProjectID: projectID,
  21429. Operation: "List",
  21430. Version: meta.Version("alpha"),
  21431. Service: "RegionTargetHttpsProxies",
  21432. }
  21433. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  21434. return nil, err
  21435. }
  21436. klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk)
  21437. call := g.s.Alpha.RegionTargetHttpsProxies.List(projectID, region)
  21438. if fl != filter.None {
  21439. call.Filter(fl.String())
  21440. }
  21441. var all []*alpha.TargetHttpsProxy
  21442. f := func(l *alpha.TargetHttpsProxyList) error {
  21443. klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.List(%v, ..., %v): page %+v", ctx, fl, l)
  21444. all = append(all, l.Items...)
  21445. return nil
  21446. }
  21447. if err := call.Pages(ctx, f); err != nil {
  21448. klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  21449. return nil, err
  21450. }
  21451. if klog.V(4) {
  21452. klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  21453. } else if klog.V(5) {
  21454. var asStr []string
  21455. for _, o := range all {
  21456. asStr = append(asStr, fmt.Sprintf("%+v", o))
  21457. }
  21458. klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  21459. }
  21460. return all, nil
  21461. }
  21462. // Insert TargetHttpsProxy with key of value obj.
  21463. func (g *GCEAlphaRegionTargetHttpsProxies) Insert(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpsProxy) error {
  21464. klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.Insert(%v, %v, %+v): called", ctx, key, obj)
  21465. if !key.Valid() {
  21466. klog.V(2).Infof("GCEAlphaRegionTargetHttpsProxies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  21467. return fmt.Errorf("invalid GCE key (%+v)", key)
  21468. }
  21469. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionTargetHttpsProxies")
  21470. rk := &RateLimitKey{
  21471. ProjectID: projectID,
  21472. Operation: "Insert",
  21473. Version: meta.Version("alpha"),
  21474. Service: "RegionTargetHttpsProxies",
  21475. }
  21476. klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  21477. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  21478. klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  21479. return err
  21480. }
  21481. obj.Name = key.Name
  21482. call := g.s.Alpha.RegionTargetHttpsProxies.Insert(projectID, key.Region, obj)
  21483. call.Context(ctx)
  21484. op, err := call.Do()
  21485. if err != nil {
  21486. klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.Insert(%v, %v, ...) = %+v", ctx, key, err)
  21487. return err
  21488. }
  21489. err = g.s.WaitForCompletion(ctx, op)
  21490. klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  21491. return err
  21492. }
  21493. // Delete the TargetHttpsProxy referenced by key.
  21494. func (g *GCEAlphaRegionTargetHttpsProxies) Delete(ctx context.Context, key *meta.Key) error {
  21495. klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.Delete(%v, %v): called", ctx, key)
  21496. if !key.Valid() {
  21497. klog.V(2).Infof("GCEAlphaRegionTargetHttpsProxies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  21498. return fmt.Errorf("invalid GCE key (%+v)", key)
  21499. }
  21500. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionTargetHttpsProxies")
  21501. rk := &RateLimitKey{
  21502. ProjectID: projectID,
  21503. Operation: "Delete",
  21504. Version: meta.Version("alpha"),
  21505. Service: "RegionTargetHttpsProxies",
  21506. }
  21507. klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  21508. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  21509. klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  21510. return err
  21511. }
  21512. call := g.s.Alpha.RegionTargetHttpsProxies.Delete(projectID, key.Region, key.Name)
  21513. call.Context(ctx)
  21514. op, err := call.Do()
  21515. if err != nil {
  21516. klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  21517. return err
  21518. }
  21519. err = g.s.WaitForCompletion(ctx, op)
  21520. klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  21521. return err
  21522. }
  21523. // SetSslCertificates is a method on GCEAlphaRegionTargetHttpsProxies.
  21524. func (g *GCEAlphaRegionTargetHttpsProxies) SetSslCertificates(ctx context.Context, key *meta.Key, arg0 *alpha.RegionTargetHttpsProxiesSetSslCertificatesRequest) error {
  21525. klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...): called", ctx, key)
  21526. if !key.Valid() {
  21527. klog.V(2).Infof("GCEAlphaRegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  21528. return fmt.Errorf("invalid GCE key (%+v)", key)
  21529. }
  21530. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionTargetHttpsProxies")
  21531. rk := &RateLimitKey{
  21532. ProjectID: projectID,
  21533. Operation: "SetSslCertificates",
  21534. Version: meta.Version("alpha"),
  21535. Service: "RegionTargetHttpsProxies",
  21536. }
  21537. klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  21538. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  21539. klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  21540. return err
  21541. }
  21542. call := g.s.Alpha.RegionTargetHttpsProxies.SetSslCertificates(projectID, key.Region, key.Name, arg0)
  21543. call.Context(ctx)
  21544. op, err := call.Do()
  21545. if err != nil {
  21546. klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...) = %+v", ctx, key, err)
  21547. return err
  21548. }
  21549. err = g.s.WaitForCompletion(ctx, op)
  21550. klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...) = %+v", ctx, key, err)
  21551. return err
  21552. }
  21553. // SetUrlMap is a method on GCEAlphaRegionTargetHttpsProxies.
  21554. func (g *GCEAlphaRegionTargetHttpsProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *alpha.UrlMapReference) error {
  21555. klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.SetUrlMap(%v, %v, ...): called", ctx, key)
  21556. if !key.Valid() {
  21557. klog.V(2).Infof("GCEAlphaRegionTargetHttpsProxies.SetUrlMap(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  21558. return fmt.Errorf("invalid GCE key (%+v)", key)
  21559. }
  21560. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionTargetHttpsProxies")
  21561. rk := &RateLimitKey{
  21562. ProjectID: projectID,
  21563. Operation: "SetUrlMap",
  21564. Version: meta.Version("alpha"),
  21565. Service: "RegionTargetHttpsProxies",
  21566. }
  21567. klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.SetUrlMap(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  21568. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  21569. klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.SetUrlMap(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  21570. return err
  21571. }
  21572. call := g.s.Alpha.RegionTargetHttpsProxies.SetUrlMap(projectID, key.Region, key.Name, arg0)
  21573. call.Context(ctx)
  21574. op, err := call.Do()
  21575. if err != nil {
  21576. klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err)
  21577. return err
  21578. }
  21579. err = g.s.WaitForCompletion(ctx, op)
  21580. klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err)
  21581. return err
  21582. }
  21583. // BetaRegionTargetHttpsProxies is an interface that allows for mocking of RegionTargetHttpsProxies.
  21584. type BetaRegionTargetHttpsProxies interface {
  21585. Get(ctx context.Context, key *meta.Key) (*beta.TargetHttpsProxy, error)
  21586. List(ctx context.Context, region string, fl *filter.F) ([]*beta.TargetHttpsProxy, error)
  21587. Insert(ctx context.Context, key *meta.Key, obj *beta.TargetHttpsProxy) error
  21588. Delete(ctx context.Context, key *meta.Key) error
  21589. SetSslCertificates(context.Context, *meta.Key, *beta.RegionTargetHttpsProxiesSetSslCertificatesRequest) error
  21590. SetUrlMap(context.Context, *meta.Key, *beta.UrlMapReference) error
  21591. }
  21592. // NewMockBetaRegionTargetHttpsProxies returns a new mock for RegionTargetHttpsProxies.
  21593. func NewMockBetaRegionTargetHttpsProxies(pr ProjectRouter, objs map[meta.Key]*MockRegionTargetHttpsProxiesObj) *MockBetaRegionTargetHttpsProxies {
  21594. mock := &MockBetaRegionTargetHttpsProxies{
  21595. ProjectRouter: pr,
  21596. Objects: objs,
  21597. GetError: map[meta.Key]error{},
  21598. InsertError: map[meta.Key]error{},
  21599. DeleteError: map[meta.Key]error{},
  21600. }
  21601. return mock
  21602. }
  21603. // MockBetaRegionTargetHttpsProxies is the mock for RegionTargetHttpsProxies.
  21604. type MockBetaRegionTargetHttpsProxies struct {
  21605. Lock sync.Mutex
  21606. ProjectRouter ProjectRouter
  21607. // Objects maintained by the mock.
  21608. Objects map[meta.Key]*MockRegionTargetHttpsProxiesObj
  21609. // If an entry exists for the given key and operation, then the error
  21610. // will be returned instead of the operation.
  21611. GetError map[meta.Key]error
  21612. ListError *error
  21613. InsertError map[meta.Key]error
  21614. DeleteError map[meta.Key]error
  21615. // xxxHook allow you to intercept the standard processing of the mock in
  21616. // order to add your own logic. Return (true, _, _) to prevent the normal
  21617. // execution flow of the mock. Return (false, nil, nil) to continue with
  21618. // normal mock behavior/ after the hook function executes.
  21619. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaRegionTargetHttpsProxies) (bool, *beta.TargetHttpsProxy, error)
  21620. ListHook func(ctx context.Context, region string, fl *filter.F, m *MockBetaRegionTargetHttpsProxies) (bool, []*beta.TargetHttpsProxy, error)
  21621. InsertHook func(ctx context.Context, key *meta.Key, obj *beta.TargetHttpsProxy, m *MockBetaRegionTargetHttpsProxies) (bool, error)
  21622. DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaRegionTargetHttpsProxies) (bool, error)
  21623. SetSslCertificatesHook func(context.Context, *meta.Key, *beta.RegionTargetHttpsProxiesSetSslCertificatesRequest, *MockBetaRegionTargetHttpsProxies) error
  21624. SetUrlMapHook func(context.Context, *meta.Key, *beta.UrlMapReference, *MockBetaRegionTargetHttpsProxies) error
  21625. // X is extra state that can be used as part of the mock. Generated code
  21626. // will not use this field.
  21627. X interface{}
  21628. }
  21629. // Get returns the object from the mock.
  21630. func (m *MockBetaRegionTargetHttpsProxies) Get(ctx context.Context, key *meta.Key) (*beta.TargetHttpsProxy, error) {
  21631. if m.GetHook != nil {
  21632. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  21633. klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  21634. return obj, err
  21635. }
  21636. }
  21637. if !key.Valid() {
  21638. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  21639. }
  21640. m.Lock.Lock()
  21641. defer m.Lock.Unlock()
  21642. if err, ok := m.GetError[*key]; ok {
  21643. klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.Get(%v, %s) = nil, %v", ctx, key, err)
  21644. return nil, err
  21645. }
  21646. if obj, ok := m.Objects[*key]; ok {
  21647. typedObj := obj.ToBeta()
  21648. klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  21649. return typedObj, nil
  21650. }
  21651. err := &googleapi.Error{
  21652. Code: http.StatusNotFound,
  21653. Message: fmt.Sprintf("MockBetaRegionTargetHttpsProxies %v not found", key),
  21654. }
  21655. klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.Get(%v, %s) = nil, %v", ctx, key, err)
  21656. return nil, err
  21657. }
  21658. // List all of the objects in the mock in the given region.
  21659. func (m *MockBetaRegionTargetHttpsProxies) List(ctx context.Context, region string, fl *filter.F) ([]*beta.TargetHttpsProxy, error) {
  21660. if m.ListHook != nil {
  21661. if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept {
  21662. klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err)
  21663. return objs, err
  21664. }
  21665. }
  21666. m.Lock.Lock()
  21667. defer m.Lock.Unlock()
  21668. if m.ListError != nil {
  21669. err := *m.ListError
  21670. klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.List(%v, %q, %v) = nil, %v", ctx, region, fl, err)
  21671. return nil, *m.ListError
  21672. }
  21673. var objs []*beta.TargetHttpsProxy
  21674. for key, obj := range m.Objects {
  21675. if key.Region != region {
  21676. continue
  21677. }
  21678. if !fl.Match(obj.ToBeta()) {
  21679. continue
  21680. }
  21681. objs = append(objs, obj.ToBeta())
  21682. }
  21683. klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs))
  21684. return objs, nil
  21685. }
  21686. // Insert is a mock for inserting/creating a new object.
  21687. func (m *MockBetaRegionTargetHttpsProxies) Insert(ctx context.Context, key *meta.Key, obj *beta.TargetHttpsProxy) error {
  21688. if m.InsertHook != nil {
  21689. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  21690. klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  21691. return err
  21692. }
  21693. }
  21694. if !key.Valid() {
  21695. return fmt.Errorf("invalid GCE key (%+v)", key)
  21696. }
  21697. m.Lock.Lock()
  21698. defer m.Lock.Unlock()
  21699. if err, ok := m.InsertError[*key]; ok {
  21700. klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  21701. return err
  21702. }
  21703. if _, ok := m.Objects[*key]; ok {
  21704. err := &googleapi.Error{
  21705. Code: http.StatusConflict,
  21706. Message: fmt.Sprintf("MockBetaRegionTargetHttpsProxies %v exists", key),
  21707. }
  21708. klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  21709. return err
  21710. }
  21711. obj.Name = key.Name
  21712. projectID := m.ProjectRouter.ProjectID(ctx, "beta", "targetHttpsProxies")
  21713. obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "targetHttpsProxies", key)
  21714. m.Objects[*key] = &MockRegionTargetHttpsProxiesObj{obj}
  21715. klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  21716. return nil
  21717. }
  21718. // Delete is a mock for deleting the object.
  21719. func (m *MockBetaRegionTargetHttpsProxies) Delete(ctx context.Context, key *meta.Key) error {
  21720. if m.DeleteHook != nil {
  21721. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  21722. klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  21723. return err
  21724. }
  21725. }
  21726. if !key.Valid() {
  21727. return fmt.Errorf("invalid GCE key (%+v)", key)
  21728. }
  21729. m.Lock.Lock()
  21730. defer m.Lock.Unlock()
  21731. if err, ok := m.DeleteError[*key]; ok {
  21732. klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  21733. return err
  21734. }
  21735. if _, ok := m.Objects[*key]; !ok {
  21736. err := &googleapi.Error{
  21737. Code: http.StatusNotFound,
  21738. Message: fmt.Sprintf("MockBetaRegionTargetHttpsProxies %v not found", key),
  21739. }
  21740. klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  21741. return err
  21742. }
  21743. delete(m.Objects, *key)
  21744. klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.Delete(%v, %v) = nil", ctx, key)
  21745. return nil
  21746. }
  21747. // Obj wraps the object for use in the mock.
  21748. func (m *MockBetaRegionTargetHttpsProxies) Obj(o *beta.TargetHttpsProxy) *MockRegionTargetHttpsProxiesObj {
  21749. return &MockRegionTargetHttpsProxiesObj{o}
  21750. }
  21751. // SetSslCertificates is a mock for the corresponding method.
  21752. func (m *MockBetaRegionTargetHttpsProxies) SetSslCertificates(ctx context.Context, key *meta.Key, arg0 *beta.RegionTargetHttpsProxiesSetSslCertificatesRequest) error {
  21753. if m.SetSslCertificatesHook != nil {
  21754. return m.SetSslCertificatesHook(ctx, key, arg0, m)
  21755. }
  21756. return nil
  21757. }
  21758. // SetUrlMap is a mock for the corresponding method.
  21759. func (m *MockBetaRegionTargetHttpsProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *beta.UrlMapReference) error {
  21760. if m.SetUrlMapHook != nil {
  21761. return m.SetUrlMapHook(ctx, key, arg0, m)
  21762. }
  21763. return nil
  21764. }
  21765. // GCEBetaRegionTargetHttpsProxies is a simplifying adapter for the GCE RegionTargetHttpsProxies.
  21766. type GCEBetaRegionTargetHttpsProxies struct {
  21767. s *Service
  21768. }
  21769. // Get the TargetHttpsProxy named by key.
  21770. func (g *GCEBetaRegionTargetHttpsProxies) Get(ctx context.Context, key *meta.Key) (*beta.TargetHttpsProxy, error) {
  21771. klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.Get(%v, %v): called", ctx, key)
  21772. if !key.Valid() {
  21773. klog.V(2).Infof("GCEBetaRegionTargetHttpsProxies.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  21774. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  21775. }
  21776. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionTargetHttpsProxies")
  21777. rk := &RateLimitKey{
  21778. ProjectID: projectID,
  21779. Operation: "Get",
  21780. Version: meta.Version("beta"),
  21781. Service: "RegionTargetHttpsProxies",
  21782. }
  21783. klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  21784. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  21785. klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  21786. return nil, err
  21787. }
  21788. call := g.s.Beta.RegionTargetHttpsProxies.Get(projectID, key.Region, key.Name)
  21789. call.Context(ctx)
  21790. v, err := call.Do()
  21791. klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  21792. return v, err
  21793. }
  21794. // List all TargetHttpsProxy objects.
  21795. func (g *GCEBetaRegionTargetHttpsProxies) List(ctx context.Context, region string, fl *filter.F) ([]*beta.TargetHttpsProxy, error) {
  21796. klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.List(%v, %v, %v) called", ctx, region, fl)
  21797. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionTargetHttpsProxies")
  21798. rk := &RateLimitKey{
  21799. ProjectID: projectID,
  21800. Operation: "List",
  21801. Version: meta.Version("beta"),
  21802. Service: "RegionTargetHttpsProxies",
  21803. }
  21804. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  21805. return nil, err
  21806. }
  21807. klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk)
  21808. call := g.s.Beta.RegionTargetHttpsProxies.List(projectID, region)
  21809. if fl != filter.None {
  21810. call.Filter(fl.String())
  21811. }
  21812. var all []*beta.TargetHttpsProxy
  21813. f := func(l *beta.TargetHttpsProxyList) error {
  21814. klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.List(%v, ..., %v): page %+v", ctx, fl, l)
  21815. all = append(all, l.Items...)
  21816. return nil
  21817. }
  21818. if err := call.Pages(ctx, f); err != nil {
  21819. klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  21820. return nil, err
  21821. }
  21822. if klog.V(4) {
  21823. klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  21824. } else if klog.V(5) {
  21825. var asStr []string
  21826. for _, o := range all {
  21827. asStr = append(asStr, fmt.Sprintf("%+v", o))
  21828. }
  21829. klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  21830. }
  21831. return all, nil
  21832. }
  21833. // Insert TargetHttpsProxy with key of value obj.
  21834. func (g *GCEBetaRegionTargetHttpsProxies) Insert(ctx context.Context, key *meta.Key, obj *beta.TargetHttpsProxy) error {
  21835. klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.Insert(%v, %v, %+v): called", ctx, key, obj)
  21836. if !key.Valid() {
  21837. klog.V(2).Infof("GCEBetaRegionTargetHttpsProxies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  21838. return fmt.Errorf("invalid GCE key (%+v)", key)
  21839. }
  21840. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionTargetHttpsProxies")
  21841. rk := &RateLimitKey{
  21842. ProjectID: projectID,
  21843. Operation: "Insert",
  21844. Version: meta.Version("beta"),
  21845. Service: "RegionTargetHttpsProxies",
  21846. }
  21847. klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  21848. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  21849. klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  21850. return err
  21851. }
  21852. obj.Name = key.Name
  21853. call := g.s.Beta.RegionTargetHttpsProxies.Insert(projectID, key.Region, obj)
  21854. call.Context(ctx)
  21855. op, err := call.Do()
  21856. if err != nil {
  21857. klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.Insert(%v, %v, ...) = %+v", ctx, key, err)
  21858. return err
  21859. }
  21860. err = g.s.WaitForCompletion(ctx, op)
  21861. klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  21862. return err
  21863. }
  21864. // Delete the TargetHttpsProxy referenced by key.
  21865. func (g *GCEBetaRegionTargetHttpsProxies) Delete(ctx context.Context, key *meta.Key) error {
  21866. klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.Delete(%v, %v): called", ctx, key)
  21867. if !key.Valid() {
  21868. klog.V(2).Infof("GCEBetaRegionTargetHttpsProxies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  21869. return fmt.Errorf("invalid GCE key (%+v)", key)
  21870. }
  21871. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionTargetHttpsProxies")
  21872. rk := &RateLimitKey{
  21873. ProjectID: projectID,
  21874. Operation: "Delete",
  21875. Version: meta.Version("beta"),
  21876. Service: "RegionTargetHttpsProxies",
  21877. }
  21878. klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  21879. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  21880. klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  21881. return err
  21882. }
  21883. call := g.s.Beta.RegionTargetHttpsProxies.Delete(projectID, key.Region, key.Name)
  21884. call.Context(ctx)
  21885. op, err := call.Do()
  21886. if err != nil {
  21887. klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  21888. return err
  21889. }
  21890. err = g.s.WaitForCompletion(ctx, op)
  21891. klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err)
  21892. return err
  21893. }
  21894. // SetSslCertificates is a method on GCEBetaRegionTargetHttpsProxies.
  21895. func (g *GCEBetaRegionTargetHttpsProxies) SetSslCertificates(ctx context.Context, key *meta.Key, arg0 *beta.RegionTargetHttpsProxiesSetSslCertificatesRequest) error {
  21896. klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...): called", ctx, key)
  21897. if !key.Valid() {
  21898. klog.V(2).Infof("GCEBetaRegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  21899. return fmt.Errorf("invalid GCE key (%+v)", key)
  21900. }
  21901. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionTargetHttpsProxies")
  21902. rk := &RateLimitKey{
  21903. ProjectID: projectID,
  21904. Operation: "SetSslCertificates",
  21905. Version: meta.Version("beta"),
  21906. Service: "RegionTargetHttpsProxies",
  21907. }
  21908. klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  21909. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  21910. klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  21911. return err
  21912. }
  21913. call := g.s.Beta.RegionTargetHttpsProxies.SetSslCertificates(projectID, key.Region, key.Name, arg0)
  21914. call.Context(ctx)
  21915. op, err := call.Do()
  21916. if err != nil {
  21917. klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...) = %+v", ctx, key, err)
  21918. return err
  21919. }
  21920. err = g.s.WaitForCompletion(ctx, op)
  21921. klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...) = %+v", ctx, key, err)
  21922. return err
  21923. }
  21924. // SetUrlMap is a method on GCEBetaRegionTargetHttpsProxies.
  21925. func (g *GCEBetaRegionTargetHttpsProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *beta.UrlMapReference) error {
  21926. klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.SetUrlMap(%v, %v, ...): called", ctx, key)
  21927. if !key.Valid() {
  21928. klog.V(2).Infof("GCEBetaRegionTargetHttpsProxies.SetUrlMap(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  21929. return fmt.Errorf("invalid GCE key (%+v)", key)
  21930. }
  21931. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionTargetHttpsProxies")
  21932. rk := &RateLimitKey{
  21933. ProjectID: projectID,
  21934. Operation: "SetUrlMap",
  21935. Version: meta.Version("beta"),
  21936. Service: "RegionTargetHttpsProxies",
  21937. }
  21938. klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.SetUrlMap(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  21939. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  21940. klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.SetUrlMap(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  21941. return err
  21942. }
  21943. call := g.s.Beta.RegionTargetHttpsProxies.SetUrlMap(projectID, key.Region, key.Name, arg0)
  21944. call.Context(ctx)
  21945. op, err := call.Do()
  21946. if err != nil {
  21947. klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err)
  21948. return err
  21949. }
  21950. err = g.s.WaitForCompletion(ctx, op)
  21951. klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err)
  21952. return err
  21953. }
  21954. // TargetPools is an interface that allows for mocking of TargetPools.
  21955. type TargetPools interface {
  21956. Get(ctx context.Context, key *meta.Key) (*ga.TargetPool, error)
  21957. List(ctx context.Context, region string, fl *filter.F) ([]*ga.TargetPool, error)
  21958. Insert(ctx context.Context, key *meta.Key, obj *ga.TargetPool) error
  21959. Delete(ctx context.Context, key *meta.Key) error
  21960. AddInstance(context.Context, *meta.Key, *ga.TargetPoolsAddInstanceRequest) error
  21961. RemoveInstance(context.Context, *meta.Key, *ga.TargetPoolsRemoveInstanceRequest) error
  21962. }
  21963. // NewMockTargetPools returns a new mock for TargetPools.
  21964. func NewMockTargetPools(pr ProjectRouter, objs map[meta.Key]*MockTargetPoolsObj) *MockTargetPools {
  21965. mock := &MockTargetPools{
  21966. ProjectRouter: pr,
  21967. Objects: objs,
  21968. GetError: map[meta.Key]error{},
  21969. InsertError: map[meta.Key]error{},
  21970. DeleteError: map[meta.Key]error{},
  21971. }
  21972. return mock
  21973. }
  21974. // MockTargetPools is the mock for TargetPools.
  21975. type MockTargetPools struct {
  21976. Lock sync.Mutex
  21977. ProjectRouter ProjectRouter
  21978. // Objects maintained by the mock.
  21979. Objects map[meta.Key]*MockTargetPoolsObj
  21980. // If an entry exists for the given key and operation, then the error
  21981. // will be returned instead of the operation.
  21982. GetError map[meta.Key]error
  21983. ListError *error
  21984. InsertError map[meta.Key]error
  21985. DeleteError map[meta.Key]error
  21986. // xxxHook allow you to intercept the standard processing of the mock in
  21987. // order to add your own logic. Return (true, _, _) to prevent the normal
  21988. // execution flow of the mock. Return (false, nil, nil) to continue with
  21989. // normal mock behavior/ after the hook function executes.
  21990. GetHook func(ctx context.Context, key *meta.Key, m *MockTargetPools) (bool, *ga.TargetPool, error)
  21991. ListHook func(ctx context.Context, region string, fl *filter.F, m *MockTargetPools) (bool, []*ga.TargetPool, error)
  21992. InsertHook func(ctx context.Context, key *meta.Key, obj *ga.TargetPool, m *MockTargetPools) (bool, error)
  21993. DeleteHook func(ctx context.Context, key *meta.Key, m *MockTargetPools) (bool, error)
  21994. AddInstanceHook func(context.Context, *meta.Key, *ga.TargetPoolsAddInstanceRequest, *MockTargetPools) error
  21995. RemoveInstanceHook func(context.Context, *meta.Key, *ga.TargetPoolsRemoveInstanceRequest, *MockTargetPools) error
  21996. // X is extra state that can be used as part of the mock. Generated code
  21997. // will not use this field.
  21998. X interface{}
  21999. }
  22000. // Get returns the object from the mock.
  22001. func (m *MockTargetPools) Get(ctx context.Context, key *meta.Key) (*ga.TargetPool, error) {
  22002. if m.GetHook != nil {
  22003. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  22004. klog.V(5).Infof("MockTargetPools.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  22005. return obj, err
  22006. }
  22007. }
  22008. if !key.Valid() {
  22009. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  22010. }
  22011. m.Lock.Lock()
  22012. defer m.Lock.Unlock()
  22013. if err, ok := m.GetError[*key]; ok {
  22014. klog.V(5).Infof("MockTargetPools.Get(%v, %s) = nil, %v", ctx, key, err)
  22015. return nil, err
  22016. }
  22017. if obj, ok := m.Objects[*key]; ok {
  22018. typedObj := obj.ToGA()
  22019. klog.V(5).Infof("MockTargetPools.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  22020. return typedObj, nil
  22021. }
  22022. err := &googleapi.Error{
  22023. Code: http.StatusNotFound,
  22024. Message: fmt.Sprintf("MockTargetPools %v not found", key),
  22025. }
  22026. klog.V(5).Infof("MockTargetPools.Get(%v, %s) = nil, %v", ctx, key, err)
  22027. return nil, err
  22028. }
  22029. // List all of the objects in the mock in the given region.
  22030. func (m *MockTargetPools) List(ctx context.Context, region string, fl *filter.F) ([]*ga.TargetPool, error) {
  22031. if m.ListHook != nil {
  22032. if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept {
  22033. klog.V(5).Infof("MockTargetPools.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err)
  22034. return objs, err
  22035. }
  22036. }
  22037. m.Lock.Lock()
  22038. defer m.Lock.Unlock()
  22039. if m.ListError != nil {
  22040. err := *m.ListError
  22041. klog.V(5).Infof("MockTargetPools.List(%v, %q, %v) = nil, %v", ctx, region, fl, err)
  22042. return nil, *m.ListError
  22043. }
  22044. var objs []*ga.TargetPool
  22045. for key, obj := range m.Objects {
  22046. if key.Region != region {
  22047. continue
  22048. }
  22049. if !fl.Match(obj.ToGA()) {
  22050. continue
  22051. }
  22052. objs = append(objs, obj.ToGA())
  22053. }
  22054. klog.V(5).Infof("MockTargetPools.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs))
  22055. return objs, nil
  22056. }
  22057. // Insert is a mock for inserting/creating a new object.
  22058. func (m *MockTargetPools) Insert(ctx context.Context, key *meta.Key, obj *ga.TargetPool) error {
  22059. if m.InsertHook != nil {
  22060. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  22061. klog.V(5).Infof("MockTargetPools.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  22062. return err
  22063. }
  22064. }
  22065. if !key.Valid() {
  22066. return fmt.Errorf("invalid GCE key (%+v)", key)
  22067. }
  22068. m.Lock.Lock()
  22069. defer m.Lock.Unlock()
  22070. if err, ok := m.InsertError[*key]; ok {
  22071. klog.V(5).Infof("MockTargetPools.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  22072. return err
  22073. }
  22074. if _, ok := m.Objects[*key]; ok {
  22075. err := &googleapi.Error{
  22076. Code: http.StatusConflict,
  22077. Message: fmt.Sprintf("MockTargetPools %v exists", key),
  22078. }
  22079. klog.V(5).Infof("MockTargetPools.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  22080. return err
  22081. }
  22082. obj.Name = key.Name
  22083. projectID := m.ProjectRouter.ProjectID(ctx, "ga", "targetPools")
  22084. obj.SelfLink = SelfLink(meta.VersionGA, projectID, "targetPools", key)
  22085. m.Objects[*key] = &MockTargetPoolsObj{obj}
  22086. klog.V(5).Infof("MockTargetPools.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  22087. return nil
  22088. }
  22089. // Delete is a mock for deleting the object.
  22090. func (m *MockTargetPools) Delete(ctx context.Context, key *meta.Key) error {
  22091. if m.DeleteHook != nil {
  22092. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  22093. klog.V(5).Infof("MockTargetPools.Delete(%v, %v) = %v", ctx, key, err)
  22094. return err
  22095. }
  22096. }
  22097. if !key.Valid() {
  22098. return fmt.Errorf("invalid GCE key (%+v)", key)
  22099. }
  22100. m.Lock.Lock()
  22101. defer m.Lock.Unlock()
  22102. if err, ok := m.DeleteError[*key]; ok {
  22103. klog.V(5).Infof("MockTargetPools.Delete(%v, %v) = %v", ctx, key, err)
  22104. return err
  22105. }
  22106. if _, ok := m.Objects[*key]; !ok {
  22107. err := &googleapi.Error{
  22108. Code: http.StatusNotFound,
  22109. Message: fmt.Sprintf("MockTargetPools %v not found", key),
  22110. }
  22111. klog.V(5).Infof("MockTargetPools.Delete(%v, %v) = %v", ctx, key, err)
  22112. return err
  22113. }
  22114. delete(m.Objects, *key)
  22115. klog.V(5).Infof("MockTargetPools.Delete(%v, %v) = nil", ctx, key)
  22116. return nil
  22117. }
  22118. // Obj wraps the object for use in the mock.
  22119. func (m *MockTargetPools) Obj(o *ga.TargetPool) *MockTargetPoolsObj {
  22120. return &MockTargetPoolsObj{o}
  22121. }
  22122. // AddInstance is a mock for the corresponding method.
  22123. func (m *MockTargetPools) AddInstance(ctx context.Context, key *meta.Key, arg0 *ga.TargetPoolsAddInstanceRequest) error {
  22124. if m.AddInstanceHook != nil {
  22125. return m.AddInstanceHook(ctx, key, arg0, m)
  22126. }
  22127. return nil
  22128. }
  22129. // RemoveInstance is a mock for the corresponding method.
  22130. func (m *MockTargetPools) RemoveInstance(ctx context.Context, key *meta.Key, arg0 *ga.TargetPoolsRemoveInstanceRequest) error {
  22131. if m.RemoveInstanceHook != nil {
  22132. return m.RemoveInstanceHook(ctx, key, arg0, m)
  22133. }
  22134. return nil
  22135. }
  22136. // GCETargetPools is a simplifying adapter for the GCE TargetPools.
  22137. type GCETargetPools struct {
  22138. s *Service
  22139. }
  22140. // Get the TargetPool named by key.
  22141. func (g *GCETargetPools) Get(ctx context.Context, key *meta.Key) (*ga.TargetPool, error) {
  22142. klog.V(5).Infof("GCETargetPools.Get(%v, %v): called", ctx, key)
  22143. if !key.Valid() {
  22144. klog.V(2).Infof("GCETargetPools.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  22145. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  22146. }
  22147. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetPools")
  22148. rk := &RateLimitKey{
  22149. ProjectID: projectID,
  22150. Operation: "Get",
  22151. Version: meta.Version("ga"),
  22152. Service: "TargetPools",
  22153. }
  22154. klog.V(5).Infof("GCETargetPools.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  22155. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  22156. klog.V(4).Infof("GCETargetPools.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  22157. return nil, err
  22158. }
  22159. call := g.s.GA.TargetPools.Get(projectID, key.Region, key.Name)
  22160. call.Context(ctx)
  22161. v, err := call.Do()
  22162. klog.V(4).Infof("GCETargetPools.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  22163. return v, err
  22164. }
  22165. // List all TargetPool objects.
  22166. func (g *GCETargetPools) List(ctx context.Context, region string, fl *filter.F) ([]*ga.TargetPool, error) {
  22167. klog.V(5).Infof("GCETargetPools.List(%v, %v, %v) called", ctx, region, fl)
  22168. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetPools")
  22169. rk := &RateLimitKey{
  22170. ProjectID: projectID,
  22171. Operation: "List",
  22172. Version: meta.Version("ga"),
  22173. Service: "TargetPools",
  22174. }
  22175. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  22176. return nil, err
  22177. }
  22178. klog.V(5).Infof("GCETargetPools.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk)
  22179. call := g.s.GA.TargetPools.List(projectID, region)
  22180. if fl != filter.None {
  22181. call.Filter(fl.String())
  22182. }
  22183. var all []*ga.TargetPool
  22184. f := func(l *ga.TargetPoolList) error {
  22185. klog.V(5).Infof("GCETargetPools.List(%v, ..., %v): page %+v", ctx, fl, l)
  22186. all = append(all, l.Items...)
  22187. return nil
  22188. }
  22189. if err := call.Pages(ctx, f); err != nil {
  22190. klog.V(4).Infof("GCETargetPools.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  22191. return nil, err
  22192. }
  22193. if klog.V(4) {
  22194. klog.V(4).Infof("GCETargetPools.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  22195. } else if klog.V(5) {
  22196. var asStr []string
  22197. for _, o := range all {
  22198. asStr = append(asStr, fmt.Sprintf("%+v", o))
  22199. }
  22200. klog.V(5).Infof("GCETargetPools.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  22201. }
  22202. return all, nil
  22203. }
  22204. // Insert TargetPool with key of value obj.
  22205. func (g *GCETargetPools) Insert(ctx context.Context, key *meta.Key, obj *ga.TargetPool) error {
  22206. klog.V(5).Infof("GCETargetPools.Insert(%v, %v, %+v): called", ctx, key, obj)
  22207. if !key.Valid() {
  22208. klog.V(2).Infof("GCETargetPools.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  22209. return fmt.Errorf("invalid GCE key (%+v)", key)
  22210. }
  22211. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetPools")
  22212. rk := &RateLimitKey{
  22213. ProjectID: projectID,
  22214. Operation: "Insert",
  22215. Version: meta.Version("ga"),
  22216. Service: "TargetPools",
  22217. }
  22218. klog.V(5).Infof("GCETargetPools.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  22219. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  22220. klog.V(4).Infof("GCETargetPools.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  22221. return err
  22222. }
  22223. obj.Name = key.Name
  22224. call := g.s.GA.TargetPools.Insert(projectID, key.Region, obj)
  22225. call.Context(ctx)
  22226. op, err := call.Do()
  22227. if err != nil {
  22228. klog.V(4).Infof("GCETargetPools.Insert(%v, %v, ...) = %+v", ctx, key, err)
  22229. return err
  22230. }
  22231. err = g.s.WaitForCompletion(ctx, op)
  22232. klog.V(4).Infof("GCETargetPools.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  22233. return err
  22234. }
  22235. // Delete the TargetPool referenced by key.
  22236. func (g *GCETargetPools) Delete(ctx context.Context, key *meta.Key) error {
  22237. klog.V(5).Infof("GCETargetPools.Delete(%v, %v): called", ctx, key)
  22238. if !key.Valid() {
  22239. klog.V(2).Infof("GCETargetPools.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  22240. return fmt.Errorf("invalid GCE key (%+v)", key)
  22241. }
  22242. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetPools")
  22243. rk := &RateLimitKey{
  22244. ProjectID: projectID,
  22245. Operation: "Delete",
  22246. Version: meta.Version("ga"),
  22247. Service: "TargetPools",
  22248. }
  22249. klog.V(5).Infof("GCETargetPools.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  22250. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  22251. klog.V(4).Infof("GCETargetPools.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  22252. return err
  22253. }
  22254. call := g.s.GA.TargetPools.Delete(projectID, key.Region, key.Name)
  22255. call.Context(ctx)
  22256. op, err := call.Do()
  22257. if err != nil {
  22258. klog.V(4).Infof("GCETargetPools.Delete(%v, %v) = %v", ctx, key, err)
  22259. return err
  22260. }
  22261. err = g.s.WaitForCompletion(ctx, op)
  22262. klog.V(4).Infof("GCETargetPools.Delete(%v, %v) = %v", ctx, key, err)
  22263. return err
  22264. }
  22265. // AddInstance is a method on GCETargetPools.
  22266. func (g *GCETargetPools) AddInstance(ctx context.Context, key *meta.Key, arg0 *ga.TargetPoolsAddInstanceRequest) error {
  22267. klog.V(5).Infof("GCETargetPools.AddInstance(%v, %v, ...): called", ctx, key)
  22268. if !key.Valid() {
  22269. klog.V(2).Infof("GCETargetPools.AddInstance(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  22270. return fmt.Errorf("invalid GCE key (%+v)", key)
  22271. }
  22272. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetPools")
  22273. rk := &RateLimitKey{
  22274. ProjectID: projectID,
  22275. Operation: "AddInstance",
  22276. Version: meta.Version("ga"),
  22277. Service: "TargetPools",
  22278. }
  22279. klog.V(5).Infof("GCETargetPools.AddInstance(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  22280. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  22281. klog.V(4).Infof("GCETargetPools.AddInstance(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  22282. return err
  22283. }
  22284. call := g.s.GA.TargetPools.AddInstance(projectID, key.Region, key.Name, arg0)
  22285. call.Context(ctx)
  22286. op, err := call.Do()
  22287. if err != nil {
  22288. klog.V(4).Infof("GCETargetPools.AddInstance(%v, %v, ...) = %+v", ctx, key, err)
  22289. return err
  22290. }
  22291. err = g.s.WaitForCompletion(ctx, op)
  22292. klog.V(4).Infof("GCETargetPools.AddInstance(%v, %v, ...) = %+v", ctx, key, err)
  22293. return err
  22294. }
  22295. // RemoveInstance is a method on GCETargetPools.
  22296. func (g *GCETargetPools) RemoveInstance(ctx context.Context, key *meta.Key, arg0 *ga.TargetPoolsRemoveInstanceRequest) error {
  22297. klog.V(5).Infof("GCETargetPools.RemoveInstance(%v, %v, ...): called", ctx, key)
  22298. if !key.Valid() {
  22299. klog.V(2).Infof("GCETargetPools.RemoveInstance(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  22300. return fmt.Errorf("invalid GCE key (%+v)", key)
  22301. }
  22302. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetPools")
  22303. rk := &RateLimitKey{
  22304. ProjectID: projectID,
  22305. Operation: "RemoveInstance",
  22306. Version: meta.Version("ga"),
  22307. Service: "TargetPools",
  22308. }
  22309. klog.V(5).Infof("GCETargetPools.RemoveInstance(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  22310. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  22311. klog.V(4).Infof("GCETargetPools.RemoveInstance(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  22312. return err
  22313. }
  22314. call := g.s.GA.TargetPools.RemoveInstance(projectID, key.Region, key.Name, arg0)
  22315. call.Context(ctx)
  22316. op, err := call.Do()
  22317. if err != nil {
  22318. klog.V(4).Infof("GCETargetPools.RemoveInstance(%v, %v, ...) = %+v", ctx, key, err)
  22319. return err
  22320. }
  22321. err = g.s.WaitForCompletion(ctx, op)
  22322. klog.V(4).Infof("GCETargetPools.RemoveInstance(%v, %v, ...) = %+v", ctx, key, err)
  22323. return err
  22324. }
  22325. // AlphaUrlMaps is an interface that allows for mocking of UrlMaps.
  22326. type AlphaUrlMaps interface {
  22327. Get(ctx context.Context, key *meta.Key) (*alpha.UrlMap, error)
  22328. List(ctx context.Context, fl *filter.F) ([]*alpha.UrlMap, error)
  22329. Insert(ctx context.Context, key *meta.Key, obj *alpha.UrlMap) error
  22330. Delete(ctx context.Context, key *meta.Key) error
  22331. Update(context.Context, *meta.Key, *alpha.UrlMap) error
  22332. }
  22333. // NewMockAlphaUrlMaps returns a new mock for UrlMaps.
  22334. func NewMockAlphaUrlMaps(pr ProjectRouter, objs map[meta.Key]*MockUrlMapsObj) *MockAlphaUrlMaps {
  22335. mock := &MockAlphaUrlMaps{
  22336. ProjectRouter: pr,
  22337. Objects: objs,
  22338. GetError: map[meta.Key]error{},
  22339. InsertError: map[meta.Key]error{},
  22340. DeleteError: map[meta.Key]error{},
  22341. }
  22342. return mock
  22343. }
  22344. // MockAlphaUrlMaps is the mock for UrlMaps.
  22345. type MockAlphaUrlMaps struct {
  22346. Lock sync.Mutex
  22347. ProjectRouter ProjectRouter
  22348. // Objects maintained by the mock.
  22349. Objects map[meta.Key]*MockUrlMapsObj
  22350. // If an entry exists for the given key and operation, then the error
  22351. // will be returned instead of the operation.
  22352. GetError map[meta.Key]error
  22353. ListError *error
  22354. InsertError map[meta.Key]error
  22355. DeleteError map[meta.Key]error
  22356. // xxxHook allow you to intercept the standard processing of the mock in
  22357. // order to add your own logic. Return (true, _, _) to prevent the normal
  22358. // execution flow of the mock. Return (false, nil, nil) to continue with
  22359. // normal mock behavior/ after the hook function executes.
  22360. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaUrlMaps) (bool, *alpha.UrlMap, error)
  22361. ListHook func(ctx context.Context, fl *filter.F, m *MockAlphaUrlMaps) (bool, []*alpha.UrlMap, error)
  22362. InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.UrlMap, m *MockAlphaUrlMaps) (bool, error)
  22363. DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaUrlMaps) (bool, error)
  22364. UpdateHook func(context.Context, *meta.Key, *alpha.UrlMap, *MockAlphaUrlMaps) error
  22365. // X is extra state that can be used as part of the mock. Generated code
  22366. // will not use this field.
  22367. X interface{}
  22368. }
  22369. // Get returns the object from the mock.
  22370. func (m *MockAlphaUrlMaps) Get(ctx context.Context, key *meta.Key) (*alpha.UrlMap, error) {
  22371. if m.GetHook != nil {
  22372. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  22373. klog.V(5).Infof("MockAlphaUrlMaps.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  22374. return obj, err
  22375. }
  22376. }
  22377. if !key.Valid() {
  22378. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  22379. }
  22380. m.Lock.Lock()
  22381. defer m.Lock.Unlock()
  22382. if err, ok := m.GetError[*key]; ok {
  22383. klog.V(5).Infof("MockAlphaUrlMaps.Get(%v, %s) = nil, %v", ctx, key, err)
  22384. return nil, err
  22385. }
  22386. if obj, ok := m.Objects[*key]; ok {
  22387. typedObj := obj.ToAlpha()
  22388. klog.V(5).Infof("MockAlphaUrlMaps.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  22389. return typedObj, nil
  22390. }
  22391. err := &googleapi.Error{
  22392. Code: http.StatusNotFound,
  22393. Message: fmt.Sprintf("MockAlphaUrlMaps %v not found", key),
  22394. }
  22395. klog.V(5).Infof("MockAlphaUrlMaps.Get(%v, %s) = nil, %v", ctx, key, err)
  22396. return nil, err
  22397. }
  22398. // List all of the objects in the mock.
  22399. func (m *MockAlphaUrlMaps) List(ctx context.Context, fl *filter.F) ([]*alpha.UrlMap, error) {
  22400. if m.ListHook != nil {
  22401. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  22402. klog.V(5).Infof("MockAlphaUrlMaps.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  22403. return objs, err
  22404. }
  22405. }
  22406. m.Lock.Lock()
  22407. defer m.Lock.Unlock()
  22408. if m.ListError != nil {
  22409. err := *m.ListError
  22410. klog.V(5).Infof("MockAlphaUrlMaps.List(%v, %v) = nil, %v", ctx, fl, err)
  22411. return nil, *m.ListError
  22412. }
  22413. var objs []*alpha.UrlMap
  22414. for _, obj := range m.Objects {
  22415. if !fl.Match(obj.ToAlpha()) {
  22416. continue
  22417. }
  22418. objs = append(objs, obj.ToAlpha())
  22419. }
  22420. klog.V(5).Infof("MockAlphaUrlMaps.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  22421. return objs, nil
  22422. }
  22423. // Insert is a mock for inserting/creating a new object.
  22424. func (m *MockAlphaUrlMaps) Insert(ctx context.Context, key *meta.Key, obj *alpha.UrlMap) error {
  22425. if m.InsertHook != nil {
  22426. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  22427. klog.V(5).Infof("MockAlphaUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  22428. return err
  22429. }
  22430. }
  22431. if !key.Valid() {
  22432. return fmt.Errorf("invalid GCE key (%+v)", key)
  22433. }
  22434. m.Lock.Lock()
  22435. defer m.Lock.Unlock()
  22436. if err, ok := m.InsertError[*key]; ok {
  22437. klog.V(5).Infof("MockAlphaUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  22438. return err
  22439. }
  22440. if _, ok := m.Objects[*key]; ok {
  22441. err := &googleapi.Error{
  22442. Code: http.StatusConflict,
  22443. Message: fmt.Sprintf("MockAlphaUrlMaps %v exists", key),
  22444. }
  22445. klog.V(5).Infof("MockAlphaUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  22446. return err
  22447. }
  22448. obj.Name = key.Name
  22449. projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "urlMaps")
  22450. obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "urlMaps", key)
  22451. m.Objects[*key] = &MockUrlMapsObj{obj}
  22452. klog.V(5).Infof("MockAlphaUrlMaps.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  22453. return nil
  22454. }
  22455. // Delete is a mock for deleting the object.
  22456. func (m *MockAlphaUrlMaps) Delete(ctx context.Context, key *meta.Key) error {
  22457. if m.DeleteHook != nil {
  22458. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  22459. klog.V(5).Infof("MockAlphaUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  22460. return err
  22461. }
  22462. }
  22463. if !key.Valid() {
  22464. return fmt.Errorf("invalid GCE key (%+v)", key)
  22465. }
  22466. m.Lock.Lock()
  22467. defer m.Lock.Unlock()
  22468. if err, ok := m.DeleteError[*key]; ok {
  22469. klog.V(5).Infof("MockAlphaUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  22470. return err
  22471. }
  22472. if _, ok := m.Objects[*key]; !ok {
  22473. err := &googleapi.Error{
  22474. Code: http.StatusNotFound,
  22475. Message: fmt.Sprintf("MockAlphaUrlMaps %v not found", key),
  22476. }
  22477. klog.V(5).Infof("MockAlphaUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  22478. return err
  22479. }
  22480. delete(m.Objects, *key)
  22481. klog.V(5).Infof("MockAlphaUrlMaps.Delete(%v, %v) = nil", ctx, key)
  22482. return nil
  22483. }
  22484. // Obj wraps the object for use in the mock.
  22485. func (m *MockAlphaUrlMaps) Obj(o *alpha.UrlMap) *MockUrlMapsObj {
  22486. return &MockUrlMapsObj{o}
  22487. }
  22488. // Update is a mock for the corresponding method.
  22489. func (m *MockAlphaUrlMaps) Update(ctx context.Context, key *meta.Key, arg0 *alpha.UrlMap) error {
  22490. if m.UpdateHook != nil {
  22491. return m.UpdateHook(ctx, key, arg0, m)
  22492. }
  22493. return nil
  22494. }
  22495. // GCEAlphaUrlMaps is a simplifying adapter for the GCE UrlMaps.
  22496. type GCEAlphaUrlMaps struct {
  22497. s *Service
  22498. }
  22499. // Get the UrlMap named by key.
  22500. func (g *GCEAlphaUrlMaps) Get(ctx context.Context, key *meta.Key) (*alpha.UrlMap, error) {
  22501. klog.V(5).Infof("GCEAlphaUrlMaps.Get(%v, %v): called", ctx, key)
  22502. if !key.Valid() {
  22503. klog.V(2).Infof("GCEAlphaUrlMaps.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  22504. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  22505. }
  22506. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "UrlMaps")
  22507. rk := &RateLimitKey{
  22508. ProjectID: projectID,
  22509. Operation: "Get",
  22510. Version: meta.Version("alpha"),
  22511. Service: "UrlMaps",
  22512. }
  22513. klog.V(5).Infof("GCEAlphaUrlMaps.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  22514. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  22515. klog.V(4).Infof("GCEAlphaUrlMaps.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  22516. return nil, err
  22517. }
  22518. call := g.s.Alpha.UrlMaps.Get(projectID, key.Name)
  22519. call.Context(ctx)
  22520. v, err := call.Do()
  22521. klog.V(4).Infof("GCEAlphaUrlMaps.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  22522. return v, err
  22523. }
  22524. // List all UrlMap objects.
  22525. func (g *GCEAlphaUrlMaps) List(ctx context.Context, fl *filter.F) ([]*alpha.UrlMap, error) {
  22526. klog.V(5).Infof("GCEAlphaUrlMaps.List(%v, %v) called", ctx, fl)
  22527. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "UrlMaps")
  22528. rk := &RateLimitKey{
  22529. ProjectID: projectID,
  22530. Operation: "List",
  22531. Version: meta.Version("alpha"),
  22532. Service: "UrlMaps",
  22533. }
  22534. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  22535. return nil, err
  22536. }
  22537. klog.V(5).Infof("GCEAlphaUrlMaps.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  22538. call := g.s.Alpha.UrlMaps.List(projectID)
  22539. if fl != filter.None {
  22540. call.Filter(fl.String())
  22541. }
  22542. var all []*alpha.UrlMap
  22543. f := func(l *alpha.UrlMapList) error {
  22544. klog.V(5).Infof("GCEAlphaUrlMaps.List(%v, ..., %v): page %+v", ctx, fl, l)
  22545. all = append(all, l.Items...)
  22546. return nil
  22547. }
  22548. if err := call.Pages(ctx, f); err != nil {
  22549. klog.V(4).Infof("GCEAlphaUrlMaps.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  22550. return nil, err
  22551. }
  22552. if klog.V(4) {
  22553. klog.V(4).Infof("GCEAlphaUrlMaps.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  22554. } else if klog.V(5) {
  22555. var asStr []string
  22556. for _, o := range all {
  22557. asStr = append(asStr, fmt.Sprintf("%+v", o))
  22558. }
  22559. klog.V(5).Infof("GCEAlphaUrlMaps.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  22560. }
  22561. return all, nil
  22562. }
  22563. // Insert UrlMap with key of value obj.
  22564. func (g *GCEAlphaUrlMaps) Insert(ctx context.Context, key *meta.Key, obj *alpha.UrlMap) error {
  22565. klog.V(5).Infof("GCEAlphaUrlMaps.Insert(%v, %v, %+v): called", ctx, key, obj)
  22566. if !key.Valid() {
  22567. klog.V(2).Infof("GCEAlphaUrlMaps.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  22568. return fmt.Errorf("invalid GCE key (%+v)", key)
  22569. }
  22570. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "UrlMaps")
  22571. rk := &RateLimitKey{
  22572. ProjectID: projectID,
  22573. Operation: "Insert",
  22574. Version: meta.Version("alpha"),
  22575. Service: "UrlMaps",
  22576. }
  22577. klog.V(5).Infof("GCEAlphaUrlMaps.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  22578. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  22579. klog.V(4).Infof("GCEAlphaUrlMaps.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  22580. return err
  22581. }
  22582. obj.Name = key.Name
  22583. call := g.s.Alpha.UrlMaps.Insert(projectID, obj)
  22584. call.Context(ctx)
  22585. op, err := call.Do()
  22586. if err != nil {
  22587. klog.V(4).Infof("GCEAlphaUrlMaps.Insert(%v, %v, ...) = %+v", ctx, key, err)
  22588. return err
  22589. }
  22590. err = g.s.WaitForCompletion(ctx, op)
  22591. klog.V(4).Infof("GCEAlphaUrlMaps.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  22592. return err
  22593. }
  22594. // Delete the UrlMap referenced by key.
  22595. func (g *GCEAlphaUrlMaps) Delete(ctx context.Context, key *meta.Key) error {
  22596. klog.V(5).Infof("GCEAlphaUrlMaps.Delete(%v, %v): called", ctx, key)
  22597. if !key.Valid() {
  22598. klog.V(2).Infof("GCEAlphaUrlMaps.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  22599. return fmt.Errorf("invalid GCE key (%+v)", key)
  22600. }
  22601. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "UrlMaps")
  22602. rk := &RateLimitKey{
  22603. ProjectID: projectID,
  22604. Operation: "Delete",
  22605. Version: meta.Version("alpha"),
  22606. Service: "UrlMaps",
  22607. }
  22608. klog.V(5).Infof("GCEAlphaUrlMaps.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  22609. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  22610. klog.V(4).Infof("GCEAlphaUrlMaps.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  22611. return err
  22612. }
  22613. call := g.s.Alpha.UrlMaps.Delete(projectID, key.Name)
  22614. call.Context(ctx)
  22615. op, err := call.Do()
  22616. if err != nil {
  22617. klog.V(4).Infof("GCEAlphaUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  22618. return err
  22619. }
  22620. err = g.s.WaitForCompletion(ctx, op)
  22621. klog.V(4).Infof("GCEAlphaUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  22622. return err
  22623. }
  22624. // Update is a method on GCEAlphaUrlMaps.
  22625. func (g *GCEAlphaUrlMaps) Update(ctx context.Context, key *meta.Key, arg0 *alpha.UrlMap) error {
  22626. klog.V(5).Infof("GCEAlphaUrlMaps.Update(%v, %v, ...): called", ctx, key)
  22627. if !key.Valid() {
  22628. klog.V(2).Infof("GCEAlphaUrlMaps.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  22629. return fmt.Errorf("invalid GCE key (%+v)", key)
  22630. }
  22631. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "UrlMaps")
  22632. rk := &RateLimitKey{
  22633. ProjectID: projectID,
  22634. Operation: "Update",
  22635. Version: meta.Version("alpha"),
  22636. Service: "UrlMaps",
  22637. }
  22638. klog.V(5).Infof("GCEAlphaUrlMaps.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  22639. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  22640. klog.V(4).Infof("GCEAlphaUrlMaps.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  22641. return err
  22642. }
  22643. call := g.s.Alpha.UrlMaps.Update(projectID, key.Name, arg0)
  22644. call.Context(ctx)
  22645. op, err := call.Do()
  22646. if err != nil {
  22647. klog.V(4).Infof("GCEAlphaUrlMaps.Update(%v, %v, ...) = %+v", ctx, key, err)
  22648. return err
  22649. }
  22650. err = g.s.WaitForCompletion(ctx, op)
  22651. klog.V(4).Infof("GCEAlphaUrlMaps.Update(%v, %v, ...) = %+v", ctx, key, err)
  22652. return err
  22653. }
  22654. // BetaUrlMaps is an interface that allows for mocking of UrlMaps.
  22655. type BetaUrlMaps interface {
  22656. Get(ctx context.Context, key *meta.Key) (*beta.UrlMap, error)
  22657. List(ctx context.Context, fl *filter.F) ([]*beta.UrlMap, error)
  22658. Insert(ctx context.Context, key *meta.Key, obj *beta.UrlMap) error
  22659. Delete(ctx context.Context, key *meta.Key) error
  22660. Update(context.Context, *meta.Key, *beta.UrlMap) error
  22661. }
  22662. // NewMockBetaUrlMaps returns a new mock for UrlMaps.
  22663. func NewMockBetaUrlMaps(pr ProjectRouter, objs map[meta.Key]*MockUrlMapsObj) *MockBetaUrlMaps {
  22664. mock := &MockBetaUrlMaps{
  22665. ProjectRouter: pr,
  22666. Objects: objs,
  22667. GetError: map[meta.Key]error{},
  22668. InsertError: map[meta.Key]error{},
  22669. DeleteError: map[meta.Key]error{},
  22670. }
  22671. return mock
  22672. }
  22673. // MockBetaUrlMaps is the mock for UrlMaps.
  22674. type MockBetaUrlMaps struct {
  22675. Lock sync.Mutex
  22676. ProjectRouter ProjectRouter
  22677. // Objects maintained by the mock.
  22678. Objects map[meta.Key]*MockUrlMapsObj
  22679. // If an entry exists for the given key and operation, then the error
  22680. // will be returned instead of the operation.
  22681. GetError map[meta.Key]error
  22682. ListError *error
  22683. InsertError map[meta.Key]error
  22684. DeleteError map[meta.Key]error
  22685. // xxxHook allow you to intercept the standard processing of the mock in
  22686. // order to add your own logic. Return (true, _, _) to prevent the normal
  22687. // execution flow of the mock. Return (false, nil, nil) to continue with
  22688. // normal mock behavior/ after the hook function executes.
  22689. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaUrlMaps) (bool, *beta.UrlMap, error)
  22690. ListHook func(ctx context.Context, fl *filter.F, m *MockBetaUrlMaps) (bool, []*beta.UrlMap, error)
  22691. InsertHook func(ctx context.Context, key *meta.Key, obj *beta.UrlMap, m *MockBetaUrlMaps) (bool, error)
  22692. DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaUrlMaps) (bool, error)
  22693. UpdateHook func(context.Context, *meta.Key, *beta.UrlMap, *MockBetaUrlMaps) error
  22694. // X is extra state that can be used as part of the mock. Generated code
  22695. // will not use this field.
  22696. X interface{}
  22697. }
  22698. // Get returns the object from the mock.
  22699. func (m *MockBetaUrlMaps) Get(ctx context.Context, key *meta.Key) (*beta.UrlMap, error) {
  22700. if m.GetHook != nil {
  22701. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  22702. klog.V(5).Infof("MockBetaUrlMaps.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  22703. return obj, err
  22704. }
  22705. }
  22706. if !key.Valid() {
  22707. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  22708. }
  22709. m.Lock.Lock()
  22710. defer m.Lock.Unlock()
  22711. if err, ok := m.GetError[*key]; ok {
  22712. klog.V(5).Infof("MockBetaUrlMaps.Get(%v, %s) = nil, %v", ctx, key, err)
  22713. return nil, err
  22714. }
  22715. if obj, ok := m.Objects[*key]; ok {
  22716. typedObj := obj.ToBeta()
  22717. klog.V(5).Infof("MockBetaUrlMaps.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  22718. return typedObj, nil
  22719. }
  22720. err := &googleapi.Error{
  22721. Code: http.StatusNotFound,
  22722. Message: fmt.Sprintf("MockBetaUrlMaps %v not found", key),
  22723. }
  22724. klog.V(5).Infof("MockBetaUrlMaps.Get(%v, %s) = nil, %v", ctx, key, err)
  22725. return nil, err
  22726. }
  22727. // List all of the objects in the mock.
  22728. func (m *MockBetaUrlMaps) List(ctx context.Context, fl *filter.F) ([]*beta.UrlMap, error) {
  22729. if m.ListHook != nil {
  22730. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  22731. klog.V(5).Infof("MockBetaUrlMaps.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  22732. return objs, err
  22733. }
  22734. }
  22735. m.Lock.Lock()
  22736. defer m.Lock.Unlock()
  22737. if m.ListError != nil {
  22738. err := *m.ListError
  22739. klog.V(5).Infof("MockBetaUrlMaps.List(%v, %v) = nil, %v", ctx, fl, err)
  22740. return nil, *m.ListError
  22741. }
  22742. var objs []*beta.UrlMap
  22743. for _, obj := range m.Objects {
  22744. if !fl.Match(obj.ToBeta()) {
  22745. continue
  22746. }
  22747. objs = append(objs, obj.ToBeta())
  22748. }
  22749. klog.V(5).Infof("MockBetaUrlMaps.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  22750. return objs, nil
  22751. }
  22752. // Insert is a mock for inserting/creating a new object.
  22753. func (m *MockBetaUrlMaps) Insert(ctx context.Context, key *meta.Key, obj *beta.UrlMap) error {
  22754. if m.InsertHook != nil {
  22755. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  22756. klog.V(5).Infof("MockBetaUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  22757. return err
  22758. }
  22759. }
  22760. if !key.Valid() {
  22761. return fmt.Errorf("invalid GCE key (%+v)", key)
  22762. }
  22763. m.Lock.Lock()
  22764. defer m.Lock.Unlock()
  22765. if err, ok := m.InsertError[*key]; ok {
  22766. klog.V(5).Infof("MockBetaUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  22767. return err
  22768. }
  22769. if _, ok := m.Objects[*key]; ok {
  22770. err := &googleapi.Error{
  22771. Code: http.StatusConflict,
  22772. Message: fmt.Sprintf("MockBetaUrlMaps %v exists", key),
  22773. }
  22774. klog.V(5).Infof("MockBetaUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  22775. return err
  22776. }
  22777. obj.Name = key.Name
  22778. projectID := m.ProjectRouter.ProjectID(ctx, "beta", "urlMaps")
  22779. obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "urlMaps", key)
  22780. m.Objects[*key] = &MockUrlMapsObj{obj}
  22781. klog.V(5).Infof("MockBetaUrlMaps.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  22782. return nil
  22783. }
  22784. // Delete is a mock for deleting the object.
  22785. func (m *MockBetaUrlMaps) Delete(ctx context.Context, key *meta.Key) error {
  22786. if m.DeleteHook != nil {
  22787. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  22788. klog.V(5).Infof("MockBetaUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  22789. return err
  22790. }
  22791. }
  22792. if !key.Valid() {
  22793. return fmt.Errorf("invalid GCE key (%+v)", key)
  22794. }
  22795. m.Lock.Lock()
  22796. defer m.Lock.Unlock()
  22797. if err, ok := m.DeleteError[*key]; ok {
  22798. klog.V(5).Infof("MockBetaUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  22799. return err
  22800. }
  22801. if _, ok := m.Objects[*key]; !ok {
  22802. err := &googleapi.Error{
  22803. Code: http.StatusNotFound,
  22804. Message: fmt.Sprintf("MockBetaUrlMaps %v not found", key),
  22805. }
  22806. klog.V(5).Infof("MockBetaUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  22807. return err
  22808. }
  22809. delete(m.Objects, *key)
  22810. klog.V(5).Infof("MockBetaUrlMaps.Delete(%v, %v) = nil", ctx, key)
  22811. return nil
  22812. }
  22813. // Obj wraps the object for use in the mock.
  22814. func (m *MockBetaUrlMaps) Obj(o *beta.UrlMap) *MockUrlMapsObj {
  22815. return &MockUrlMapsObj{o}
  22816. }
  22817. // Update is a mock for the corresponding method.
  22818. func (m *MockBetaUrlMaps) Update(ctx context.Context, key *meta.Key, arg0 *beta.UrlMap) error {
  22819. if m.UpdateHook != nil {
  22820. return m.UpdateHook(ctx, key, arg0, m)
  22821. }
  22822. return nil
  22823. }
  22824. // GCEBetaUrlMaps is a simplifying adapter for the GCE UrlMaps.
  22825. type GCEBetaUrlMaps struct {
  22826. s *Service
  22827. }
  22828. // Get the UrlMap named by key.
  22829. func (g *GCEBetaUrlMaps) Get(ctx context.Context, key *meta.Key) (*beta.UrlMap, error) {
  22830. klog.V(5).Infof("GCEBetaUrlMaps.Get(%v, %v): called", ctx, key)
  22831. if !key.Valid() {
  22832. klog.V(2).Infof("GCEBetaUrlMaps.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  22833. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  22834. }
  22835. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "UrlMaps")
  22836. rk := &RateLimitKey{
  22837. ProjectID: projectID,
  22838. Operation: "Get",
  22839. Version: meta.Version("beta"),
  22840. Service: "UrlMaps",
  22841. }
  22842. klog.V(5).Infof("GCEBetaUrlMaps.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  22843. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  22844. klog.V(4).Infof("GCEBetaUrlMaps.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  22845. return nil, err
  22846. }
  22847. call := g.s.Beta.UrlMaps.Get(projectID, key.Name)
  22848. call.Context(ctx)
  22849. v, err := call.Do()
  22850. klog.V(4).Infof("GCEBetaUrlMaps.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  22851. return v, err
  22852. }
  22853. // List all UrlMap objects.
  22854. func (g *GCEBetaUrlMaps) List(ctx context.Context, fl *filter.F) ([]*beta.UrlMap, error) {
  22855. klog.V(5).Infof("GCEBetaUrlMaps.List(%v, %v) called", ctx, fl)
  22856. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "UrlMaps")
  22857. rk := &RateLimitKey{
  22858. ProjectID: projectID,
  22859. Operation: "List",
  22860. Version: meta.Version("beta"),
  22861. Service: "UrlMaps",
  22862. }
  22863. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  22864. return nil, err
  22865. }
  22866. klog.V(5).Infof("GCEBetaUrlMaps.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  22867. call := g.s.Beta.UrlMaps.List(projectID)
  22868. if fl != filter.None {
  22869. call.Filter(fl.String())
  22870. }
  22871. var all []*beta.UrlMap
  22872. f := func(l *beta.UrlMapList) error {
  22873. klog.V(5).Infof("GCEBetaUrlMaps.List(%v, ..., %v): page %+v", ctx, fl, l)
  22874. all = append(all, l.Items...)
  22875. return nil
  22876. }
  22877. if err := call.Pages(ctx, f); err != nil {
  22878. klog.V(4).Infof("GCEBetaUrlMaps.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  22879. return nil, err
  22880. }
  22881. if klog.V(4) {
  22882. klog.V(4).Infof("GCEBetaUrlMaps.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  22883. } else if klog.V(5) {
  22884. var asStr []string
  22885. for _, o := range all {
  22886. asStr = append(asStr, fmt.Sprintf("%+v", o))
  22887. }
  22888. klog.V(5).Infof("GCEBetaUrlMaps.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  22889. }
  22890. return all, nil
  22891. }
  22892. // Insert UrlMap with key of value obj.
  22893. func (g *GCEBetaUrlMaps) Insert(ctx context.Context, key *meta.Key, obj *beta.UrlMap) error {
  22894. klog.V(5).Infof("GCEBetaUrlMaps.Insert(%v, %v, %+v): called", ctx, key, obj)
  22895. if !key.Valid() {
  22896. klog.V(2).Infof("GCEBetaUrlMaps.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  22897. return fmt.Errorf("invalid GCE key (%+v)", key)
  22898. }
  22899. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "UrlMaps")
  22900. rk := &RateLimitKey{
  22901. ProjectID: projectID,
  22902. Operation: "Insert",
  22903. Version: meta.Version("beta"),
  22904. Service: "UrlMaps",
  22905. }
  22906. klog.V(5).Infof("GCEBetaUrlMaps.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  22907. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  22908. klog.V(4).Infof("GCEBetaUrlMaps.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  22909. return err
  22910. }
  22911. obj.Name = key.Name
  22912. call := g.s.Beta.UrlMaps.Insert(projectID, obj)
  22913. call.Context(ctx)
  22914. op, err := call.Do()
  22915. if err != nil {
  22916. klog.V(4).Infof("GCEBetaUrlMaps.Insert(%v, %v, ...) = %+v", ctx, key, err)
  22917. return err
  22918. }
  22919. err = g.s.WaitForCompletion(ctx, op)
  22920. klog.V(4).Infof("GCEBetaUrlMaps.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  22921. return err
  22922. }
  22923. // Delete the UrlMap referenced by key.
  22924. func (g *GCEBetaUrlMaps) Delete(ctx context.Context, key *meta.Key) error {
  22925. klog.V(5).Infof("GCEBetaUrlMaps.Delete(%v, %v): called", ctx, key)
  22926. if !key.Valid() {
  22927. klog.V(2).Infof("GCEBetaUrlMaps.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  22928. return fmt.Errorf("invalid GCE key (%+v)", key)
  22929. }
  22930. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "UrlMaps")
  22931. rk := &RateLimitKey{
  22932. ProjectID: projectID,
  22933. Operation: "Delete",
  22934. Version: meta.Version("beta"),
  22935. Service: "UrlMaps",
  22936. }
  22937. klog.V(5).Infof("GCEBetaUrlMaps.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  22938. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  22939. klog.V(4).Infof("GCEBetaUrlMaps.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  22940. return err
  22941. }
  22942. call := g.s.Beta.UrlMaps.Delete(projectID, key.Name)
  22943. call.Context(ctx)
  22944. op, err := call.Do()
  22945. if err != nil {
  22946. klog.V(4).Infof("GCEBetaUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  22947. return err
  22948. }
  22949. err = g.s.WaitForCompletion(ctx, op)
  22950. klog.V(4).Infof("GCEBetaUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  22951. return err
  22952. }
  22953. // Update is a method on GCEBetaUrlMaps.
  22954. func (g *GCEBetaUrlMaps) Update(ctx context.Context, key *meta.Key, arg0 *beta.UrlMap) error {
  22955. klog.V(5).Infof("GCEBetaUrlMaps.Update(%v, %v, ...): called", ctx, key)
  22956. if !key.Valid() {
  22957. klog.V(2).Infof("GCEBetaUrlMaps.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  22958. return fmt.Errorf("invalid GCE key (%+v)", key)
  22959. }
  22960. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "UrlMaps")
  22961. rk := &RateLimitKey{
  22962. ProjectID: projectID,
  22963. Operation: "Update",
  22964. Version: meta.Version("beta"),
  22965. Service: "UrlMaps",
  22966. }
  22967. klog.V(5).Infof("GCEBetaUrlMaps.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  22968. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  22969. klog.V(4).Infof("GCEBetaUrlMaps.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  22970. return err
  22971. }
  22972. call := g.s.Beta.UrlMaps.Update(projectID, key.Name, arg0)
  22973. call.Context(ctx)
  22974. op, err := call.Do()
  22975. if err != nil {
  22976. klog.V(4).Infof("GCEBetaUrlMaps.Update(%v, %v, ...) = %+v", ctx, key, err)
  22977. return err
  22978. }
  22979. err = g.s.WaitForCompletion(ctx, op)
  22980. klog.V(4).Infof("GCEBetaUrlMaps.Update(%v, %v, ...) = %+v", ctx, key, err)
  22981. return err
  22982. }
  22983. // UrlMaps is an interface that allows for mocking of UrlMaps.
  22984. type UrlMaps interface {
  22985. Get(ctx context.Context, key *meta.Key) (*ga.UrlMap, error)
  22986. List(ctx context.Context, fl *filter.F) ([]*ga.UrlMap, error)
  22987. Insert(ctx context.Context, key *meta.Key, obj *ga.UrlMap) error
  22988. Delete(ctx context.Context, key *meta.Key) error
  22989. Update(context.Context, *meta.Key, *ga.UrlMap) error
  22990. }
  22991. // NewMockUrlMaps returns a new mock for UrlMaps.
  22992. func NewMockUrlMaps(pr ProjectRouter, objs map[meta.Key]*MockUrlMapsObj) *MockUrlMaps {
  22993. mock := &MockUrlMaps{
  22994. ProjectRouter: pr,
  22995. Objects: objs,
  22996. GetError: map[meta.Key]error{},
  22997. InsertError: map[meta.Key]error{},
  22998. DeleteError: map[meta.Key]error{},
  22999. }
  23000. return mock
  23001. }
  23002. // MockUrlMaps is the mock for UrlMaps.
  23003. type MockUrlMaps struct {
  23004. Lock sync.Mutex
  23005. ProjectRouter ProjectRouter
  23006. // Objects maintained by the mock.
  23007. Objects map[meta.Key]*MockUrlMapsObj
  23008. // If an entry exists for the given key and operation, then the error
  23009. // will be returned instead of the operation.
  23010. GetError map[meta.Key]error
  23011. ListError *error
  23012. InsertError map[meta.Key]error
  23013. DeleteError map[meta.Key]error
  23014. // xxxHook allow you to intercept the standard processing of the mock in
  23015. // order to add your own logic. Return (true, _, _) to prevent the normal
  23016. // execution flow of the mock. Return (false, nil, nil) to continue with
  23017. // normal mock behavior/ after the hook function executes.
  23018. GetHook func(ctx context.Context, key *meta.Key, m *MockUrlMaps) (bool, *ga.UrlMap, error)
  23019. ListHook func(ctx context.Context, fl *filter.F, m *MockUrlMaps) (bool, []*ga.UrlMap, error)
  23020. InsertHook func(ctx context.Context, key *meta.Key, obj *ga.UrlMap, m *MockUrlMaps) (bool, error)
  23021. DeleteHook func(ctx context.Context, key *meta.Key, m *MockUrlMaps) (bool, error)
  23022. UpdateHook func(context.Context, *meta.Key, *ga.UrlMap, *MockUrlMaps) error
  23023. // X is extra state that can be used as part of the mock. Generated code
  23024. // will not use this field.
  23025. X interface{}
  23026. }
  23027. // Get returns the object from the mock.
  23028. func (m *MockUrlMaps) Get(ctx context.Context, key *meta.Key) (*ga.UrlMap, error) {
  23029. if m.GetHook != nil {
  23030. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  23031. klog.V(5).Infof("MockUrlMaps.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  23032. return obj, err
  23033. }
  23034. }
  23035. if !key.Valid() {
  23036. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  23037. }
  23038. m.Lock.Lock()
  23039. defer m.Lock.Unlock()
  23040. if err, ok := m.GetError[*key]; ok {
  23041. klog.V(5).Infof("MockUrlMaps.Get(%v, %s) = nil, %v", ctx, key, err)
  23042. return nil, err
  23043. }
  23044. if obj, ok := m.Objects[*key]; ok {
  23045. typedObj := obj.ToGA()
  23046. klog.V(5).Infof("MockUrlMaps.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  23047. return typedObj, nil
  23048. }
  23049. err := &googleapi.Error{
  23050. Code: http.StatusNotFound,
  23051. Message: fmt.Sprintf("MockUrlMaps %v not found", key),
  23052. }
  23053. klog.V(5).Infof("MockUrlMaps.Get(%v, %s) = nil, %v", ctx, key, err)
  23054. return nil, err
  23055. }
  23056. // List all of the objects in the mock.
  23057. func (m *MockUrlMaps) List(ctx context.Context, fl *filter.F) ([]*ga.UrlMap, error) {
  23058. if m.ListHook != nil {
  23059. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  23060. klog.V(5).Infof("MockUrlMaps.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  23061. return objs, err
  23062. }
  23063. }
  23064. m.Lock.Lock()
  23065. defer m.Lock.Unlock()
  23066. if m.ListError != nil {
  23067. err := *m.ListError
  23068. klog.V(5).Infof("MockUrlMaps.List(%v, %v) = nil, %v", ctx, fl, err)
  23069. return nil, *m.ListError
  23070. }
  23071. var objs []*ga.UrlMap
  23072. for _, obj := range m.Objects {
  23073. if !fl.Match(obj.ToGA()) {
  23074. continue
  23075. }
  23076. objs = append(objs, obj.ToGA())
  23077. }
  23078. klog.V(5).Infof("MockUrlMaps.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  23079. return objs, nil
  23080. }
  23081. // Insert is a mock for inserting/creating a new object.
  23082. func (m *MockUrlMaps) Insert(ctx context.Context, key *meta.Key, obj *ga.UrlMap) error {
  23083. if m.InsertHook != nil {
  23084. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  23085. klog.V(5).Infof("MockUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  23086. return err
  23087. }
  23088. }
  23089. if !key.Valid() {
  23090. return fmt.Errorf("invalid GCE key (%+v)", key)
  23091. }
  23092. m.Lock.Lock()
  23093. defer m.Lock.Unlock()
  23094. if err, ok := m.InsertError[*key]; ok {
  23095. klog.V(5).Infof("MockUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  23096. return err
  23097. }
  23098. if _, ok := m.Objects[*key]; ok {
  23099. err := &googleapi.Error{
  23100. Code: http.StatusConflict,
  23101. Message: fmt.Sprintf("MockUrlMaps %v exists", key),
  23102. }
  23103. klog.V(5).Infof("MockUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  23104. return err
  23105. }
  23106. obj.Name = key.Name
  23107. projectID := m.ProjectRouter.ProjectID(ctx, "ga", "urlMaps")
  23108. obj.SelfLink = SelfLink(meta.VersionGA, projectID, "urlMaps", key)
  23109. m.Objects[*key] = &MockUrlMapsObj{obj}
  23110. klog.V(5).Infof("MockUrlMaps.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  23111. return nil
  23112. }
  23113. // Delete is a mock for deleting the object.
  23114. func (m *MockUrlMaps) Delete(ctx context.Context, key *meta.Key) error {
  23115. if m.DeleteHook != nil {
  23116. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  23117. klog.V(5).Infof("MockUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  23118. return err
  23119. }
  23120. }
  23121. if !key.Valid() {
  23122. return fmt.Errorf("invalid GCE key (%+v)", key)
  23123. }
  23124. m.Lock.Lock()
  23125. defer m.Lock.Unlock()
  23126. if err, ok := m.DeleteError[*key]; ok {
  23127. klog.V(5).Infof("MockUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  23128. return err
  23129. }
  23130. if _, ok := m.Objects[*key]; !ok {
  23131. err := &googleapi.Error{
  23132. Code: http.StatusNotFound,
  23133. Message: fmt.Sprintf("MockUrlMaps %v not found", key),
  23134. }
  23135. klog.V(5).Infof("MockUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  23136. return err
  23137. }
  23138. delete(m.Objects, *key)
  23139. klog.V(5).Infof("MockUrlMaps.Delete(%v, %v) = nil", ctx, key)
  23140. return nil
  23141. }
  23142. // Obj wraps the object for use in the mock.
  23143. func (m *MockUrlMaps) Obj(o *ga.UrlMap) *MockUrlMapsObj {
  23144. return &MockUrlMapsObj{o}
  23145. }
  23146. // Update is a mock for the corresponding method.
  23147. func (m *MockUrlMaps) Update(ctx context.Context, key *meta.Key, arg0 *ga.UrlMap) error {
  23148. if m.UpdateHook != nil {
  23149. return m.UpdateHook(ctx, key, arg0, m)
  23150. }
  23151. return nil
  23152. }
  23153. // GCEUrlMaps is a simplifying adapter for the GCE UrlMaps.
  23154. type GCEUrlMaps struct {
  23155. s *Service
  23156. }
  23157. // Get the UrlMap named by key.
  23158. func (g *GCEUrlMaps) Get(ctx context.Context, key *meta.Key) (*ga.UrlMap, error) {
  23159. klog.V(5).Infof("GCEUrlMaps.Get(%v, %v): called", ctx, key)
  23160. if !key.Valid() {
  23161. klog.V(2).Infof("GCEUrlMaps.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  23162. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  23163. }
  23164. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "UrlMaps")
  23165. rk := &RateLimitKey{
  23166. ProjectID: projectID,
  23167. Operation: "Get",
  23168. Version: meta.Version("ga"),
  23169. Service: "UrlMaps",
  23170. }
  23171. klog.V(5).Infof("GCEUrlMaps.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  23172. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  23173. klog.V(4).Infof("GCEUrlMaps.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  23174. return nil, err
  23175. }
  23176. call := g.s.GA.UrlMaps.Get(projectID, key.Name)
  23177. call.Context(ctx)
  23178. v, err := call.Do()
  23179. klog.V(4).Infof("GCEUrlMaps.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  23180. return v, err
  23181. }
  23182. // List all UrlMap objects.
  23183. func (g *GCEUrlMaps) List(ctx context.Context, fl *filter.F) ([]*ga.UrlMap, error) {
  23184. klog.V(5).Infof("GCEUrlMaps.List(%v, %v) called", ctx, fl)
  23185. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "UrlMaps")
  23186. rk := &RateLimitKey{
  23187. ProjectID: projectID,
  23188. Operation: "List",
  23189. Version: meta.Version("ga"),
  23190. Service: "UrlMaps",
  23191. }
  23192. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  23193. return nil, err
  23194. }
  23195. klog.V(5).Infof("GCEUrlMaps.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  23196. call := g.s.GA.UrlMaps.List(projectID)
  23197. if fl != filter.None {
  23198. call.Filter(fl.String())
  23199. }
  23200. var all []*ga.UrlMap
  23201. f := func(l *ga.UrlMapList) error {
  23202. klog.V(5).Infof("GCEUrlMaps.List(%v, ..., %v): page %+v", ctx, fl, l)
  23203. all = append(all, l.Items...)
  23204. return nil
  23205. }
  23206. if err := call.Pages(ctx, f); err != nil {
  23207. klog.V(4).Infof("GCEUrlMaps.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  23208. return nil, err
  23209. }
  23210. if klog.V(4) {
  23211. klog.V(4).Infof("GCEUrlMaps.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  23212. } else if klog.V(5) {
  23213. var asStr []string
  23214. for _, o := range all {
  23215. asStr = append(asStr, fmt.Sprintf("%+v", o))
  23216. }
  23217. klog.V(5).Infof("GCEUrlMaps.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  23218. }
  23219. return all, nil
  23220. }
  23221. // Insert UrlMap with key of value obj.
  23222. func (g *GCEUrlMaps) Insert(ctx context.Context, key *meta.Key, obj *ga.UrlMap) error {
  23223. klog.V(5).Infof("GCEUrlMaps.Insert(%v, %v, %+v): called", ctx, key, obj)
  23224. if !key.Valid() {
  23225. klog.V(2).Infof("GCEUrlMaps.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  23226. return fmt.Errorf("invalid GCE key (%+v)", key)
  23227. }
  23228. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "UrlMaps")
  23229. rk := &RateLimitKey{
  23230. ProjectID: projectID,
  23231. Operation: "Insert",
  23232. Version: meta.Version("ga"),
  23233. Service: "UrlMaps",
  23234. }
  23235. klog.V(5).Infof("GCEUrlMaps.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  23236. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  23237. klog.V(4).Infof("GCEUrlMaps.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  23238. return err
  23239. }
  23240. obj.Name = key.Name
  23241. call := g.s.GA.UrlMaps.Insert(projectID, obj)
  23242. call.Context(ctx)
  23243. op, err := call.Do()
  23244. if err != nil {
  23245. klog.V(4).Infof("GCEUrlMaps.Insert(%v, %v, ...) = %+v", ctx, key, err)
  23246. return err
  23247. }
  23248. err = g.s.WaitForCompletion(ctx, op)
  23249. klog.V(4).Infof("GCEUrlMaps.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  23250. return err
  23251. }
  23252. // Delete the UrlMap referenced by key.
  23253. func (g *GCEUrlMaps) Delete(ctx context.Context, key *meta.Key) error {
  23254. klog.V(5).Infof("GCEUrlMaps.Delete(%v, %v): called", ctx, key)
  23255. if !key.Valid() {
  23256. klog.V(2).Infof("GCEUrlMaps.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  23257. return fmt.Errorf("invalid GCE key (%+v)", key)
  23258. }
  23259. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "UrlMaps")
  23260. rk := &RateLimitKey{
  23261. ProjectID: projectID,
  23262. Operation: "Delete",
  23263. Version: meta.Version("ga"),
  23264. Service: "UrlMaps",
  23265. }
  23266. klog.V(5).Infof("GCEUrlMaps.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  23267. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  23268. klog.V(4).Infof("GCEUrlMaps.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  23269. return err
  23270. }
  23271. call := g.s.GA.UrlMaps.Delete(projectID, key.Name)
  23272. call.Context(ctx)
  23273. op, err := call.Do()
  23274. if err != nil {
  23275. klog.V(4).Infof("GCEUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  23276. return err
  23277. }
  23278. err = g.s.WaitForCompletion(ctx, op)
  23279. klog.V(4).Infof("GCEUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  23280. return err
  23281. }
  23282. // Update is a method on GCEUrlMaps.
  23283. func (g *GCEUrlMaps) Update(ctx context.Context, key *meta.Key, arg0 *ga.UrlMap) error {
  23284. klog.V(5).Infof("GCEUrlMaps.Update(%v, %v, ...): called", ctx, key)
  23285. if !key.Valid() {
  23286. klog.V(2).Infof("GCEUrlMaps.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  23287. return fmt.Errorf("invalid GCE key (%+v)", key)
  23288. }
  23289. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "UrlMaps")
  23290. rk := &RateLimitKey{
  23291. ProjectID: projectID,
  23292. Operation: "Update",
  23293. Version: meta.Version("ga"),
  23294. Service: "UrlMaps",
  23295. }
  23296. klog.V(5).Infof("GCEUrlMaps.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  23297. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  23298. klog.V(4).Infof("GCEUrlMaps.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  23299. return err
  23300. }
  23301. call := g.s.GA.UrlMaps.Update(projectID, key.Name, arg0)
  23302. call.Context(ctx)
  23303. op, err := call.Do()
  23304. if err != nil {
  23305. klog.V(4).Infof("GCEUrlMaps.Update(%v, %v, ...) = %+v", ctx, key, err)
  23306. return err
  23307. }
  23308. err = g.s.WaitForCompletion(ctx, op)
  23309. klog.V(4).Infof("GCEUrlMaps.Update(%v, %v, ...) = %+v", ctx, key, err)
  23310. return err
  23311. }
  23312. // AlphaRegionUrlMaps is an interface that allows for mocking of RegionUrlMaps.
  23313. type AlphaRegionUrlMaps interface {
  23314. Get(ctx context.Context, key *meta.Key) (*alpha.UrlMap, error)
  23315. List(ctx context.Context, region string, fl *filter.F) ([]*alpha.UrlMap, error)
  23316. Insert(ctx context.Context, key *meta.Key, obj *alpha.UrlMap) error
  23317. Delete(ctx context.Context, key *meta.Key) error
  23318. Update(context.Context, *meta.Key, *alpha.UrlMap) error
  23319. }
  23320. // NewMockAlphaRegionUrlMaps returns a new mock for RegionUrlMaps.
  23321. func NewMockAlphaRegionUrlMaps(pr ProjectRouter, objs map[meta.Key]*MockRegionUrlMapsObj) *MockAlphaRegionUrlMaps {
  23322. mock := &MockAlphaRegionUrlMaps{
  23323. ProjectRouter: pr,
  23324. Objects: objs,
  23325. GetError: map[meta.Key]error{},
  23326. InsertError: map[meta.Key]error{},
  23327. DeleteError: map[meta.Key]error{},
  23328. }
  23329. return mock
  23330. }
  23331. // MockAlphaRegionUrlMaps is the mock for RegionUrlMaps.
  23332. type MockAlphaRegionUrlMaps struct {
  23333. Lock sync.Mutex
  23334. ProjectRouter ProjectRouter
  23335. // Objects maintained by the mock.
  23336. Objects map[meta.Key]*MockRegionUrlMapsObj
  23337. // If an entry exists for the given key and operation, then the error
  23338. // will be returned instead of the operation.
  23339. GetError map[meta.Key]error
  23340. ListError *error
  23341. InsertError map[meta.Key]error
  23342. DeleteError map[meta.Key]error
  23343. // xxxHook allow you to intercept the standard processing of the mock in
  23344. // order to add your own logic. Return (true, _, _) to prevent the normal
  23345. // execution flow of the mock. Return (false, nil, nil) to continue with
  23346. // normal mock behavior/ after the hook function executes.
  23347. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaRegionUrlMaps) (bool, *alpha.UrlMap, error)
  23348. ListHook func(ctx context.Context, region string, fl *filter.F, m *MockAlphaRegionUrlMaps) (bool, []*alpha.UrlMap, error)
  23349. InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.UrlMap, m *MockAlphaRegionUrlMaps) (bool, error)
  23350. DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaRegionUrlMaps) (bool, error)
  23351. UpdateHook func(context.Context, *meta.Key, *alpha.UrlMap, *MockAlphaRegionUrlMaps) error
  23352. // X is extra state that can be used as part of the mock. Generated code
  23353. // will not use this field.
  23354. X interface{}
  23355. }
  23356. // Get returns the object from the mock.
  23357. func (m *MockAlphaRegionUrlMaps) Get(ctx context.Context, key *meta.Key) (*alpha.UrlMap, error) {
  23358. if m.GetHook != nil {
  23359. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  23360. klog.V(5).Infof("MockAlphaRegionUrlMaps.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  23361. return obj, err
  23362. }
  23363. }
  23364. if !key.Valid() {
  23365. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  23366. }
  23367. m.Lock.Lock()
  23368. defer m.Lock.Unlock()
  23369. if err, ok := m.GetError[*key]; ok {
  23370. klog.V(5).Infof("MockAlphaRegionUrlMaps.Get(%v, %s) = nil, %v", ctx, key, err)
  23371. return nil, err
  23372. }
  23373. if obj, ok := m.Objects[*key]; ok {
  23374. typedObj := obj.ToAlpha()
  23375. klog.V(5).Infof("MockAlphaRegionUrlMaps.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  23376. return typedObj, nil
  23377. }
  23378. err := &googleapi.Error{
  23379. Code: http.StatusNotFound,
  23380. Message: fmt.Sprintf("MockAlphaRegionUrlMaps %v not found", key),
  23381. }
  23382. klog.V(5).Infof("MockAlphaRegionUrlMaps.Get(%v, %s) = nil, %v", ctx, key, err)
  23383. return nil, err
  23384. }
  23385. // List all of the objects in the mock in the given region.
  23386. func (m *MockAlphaRegionUrlMaps) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.UrlMap, error) {
  23387. if m.ListHook != nil {
  23388. if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept {
  23389. klog.V(5).Infof("MockAlphaRegionUrlMaps.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err)
  23390. return objs, err
  23391. }
  23392. }
  23393. m.Lock.Lock()
  23394. defer m.Lock.Unlock()
  23395. if m.ListError != nil {
  23396. err := *m.ListError
  23397. klog.V(5).Infof("MockAlphaRegionUrlMaps.List(%v, %q, %v) = nil, %v", ctx, region, fl, err)
  23398. return nil, *m.ListError
  23399. }
  23400. var objs []*alpha.UrlMap
  23401. for key, obj := range m.Objects {
  23402. if key.Region != region {
  23403. continue
  23404. }
  23405. if !fl.Match(obj.ToAlpha()) {
  23406. continue
  23407. }
  23408. objs = append(objs, obj.ToAlpha())
  23409. }
  23410. klog.V(5).Infof("MockAlphaRegionUrlMaps.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs))
  23411. return objs, nil
  23412. }
  23413. // Insert is a mock for inserting/creating a new object.
  23414. func (m *MockAlphaRegionUrlMaps) Insert(ctx context.Context, key *meta.Key, obj *alpha.UrlMap) error {
  23415. if m.InsertHook != nil {
  23416. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  23417. klog.V(5).Infof("MockAlphaRegionUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  23418. return err
  23419. }
  23420. }
  23421. if !key.Valid() {
  23422. return fmt.Errorf("invalid GCE key (%+v)", key)
  23423. }
  23424. m.Lock.Lock()
  23425. defer m.Lock.Unlock()
  23426. if err, ok := m.InsertError[*key]; ok {
  23427. klog.V(5).Infof("MockAlphaRegionUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  23428. return err
  23429. }
  23430. if _, ok := m.Objects[*key]; ok {
  23431. err := &googleapi.Error{
  23432. Code: http.StatusConflict,
  23433. Message: fmt.Sprintf("MockAlphaRegionUrlMaps %v exists", key),
  23434. }
  23435. klog.V(5).Infof("MockAlphaRegionUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  23436. return err
  23437. }
  23438. obj.Name = key.Name
  23439. projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "urlMaps")
  23440. obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "urlMaps", key)
  23441. m.Objects[*key] = &MockRegionUrlMapsObj{obj}
  23442. klog.V(5).Infof("MockAlphaRegionUrlMaps.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  23443. return nil
  23444. }
  23445. // Delete is a mock for deleting the object.
  23446. func (m *MockAlphaRegionUrlMaps) Delete(ctx context.Context, key *meta.Key) error {
  23447. if m.DeleteHook != nil {
  23448. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  23449. klog.V(5).Infof("MockAlphaRegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  23450. return err
  23451. }
  23452. }
  23453. if !key.Valid() {
  23454. return fmt.Errorf("invalid GCE key (%+v)", key)
  23455. }
  23456. m.Lock.Lock()
  23457. defer m.Lock.Unlock()
  23458. if err, ok := m.DeleteError[*key]; ok {
  23459. klog.V(5).Infof("MockAlphaRegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  23460. return err
  23461. }
  23462. if _, ok := m.Objects[*key]; !ok {
  23463. err := &googleapi.Error{
  23464. Code: http.StatusNotFound,
  23465. Message: fmt.Sprintf("MockAlphaRegionUrlMaps %v not found", key),
  23466. }
  23467. klog.V(5).Infof("MockAlphaRegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  23468. return err
  23469. }
  23470. delete(m.Objects, *key)
  23471. klog.V(5).Infof("MockAlphaRegionUrlMaps.Delete(%v, %v) = nil", ctx, key)
  23472. return nil
  23473. }
  23474. // Obj wraps the object for use in the mock.
  23475. func (m *MockAlphaRegionUrlMaps) Obj(o *alpha.UrlMap) *MockRegionUrlMapsObj {
  23476. return &MockRegionUrlMapsObj{o}
  23477. }
  23478. // Update is a mock for the corresponding method.
  23479. func (m *MockAlphaRegionUrlMaps) Update(ctx context.Context, key *meta.Key, arg0 *alpha.UrlMap) error {
  23480. if m.UpdateHook != nil {
  23481. return m.UpdateHook(ctx, key, arg0, m)
  23482. }
  23483. return nil
  23484. }
  23485. // GCEAlphaRegionUrlMaps is a simplifying adapter for the GCE RegionUrlMaps.
  23486. type GCEAlphaRegionUrlMaps struct {
  23487. s *Service
  23488. }
  23489. // Get the UrlMap named by key.
  23490. func (g *GCEAlphaRegionUrlMaps) Get(ctx context.Context, key *meta.Key) (*alpha.UrlMap, error) {
  23491. klog.V(5).Infof("GCEAlphaRegionUrlMaps.Get(%v, %v): called", ctx, key)
  23492. if !key.Valid() {
  23493. klog.V(2).Infof("GCEAlphaRegionUrlMaps.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  23494. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  23495. }
  23496. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionUrlMaps")
  23497. rk := &RateLimitKey{
  23498. ProjectID: projectID,
  23499. Operation: "Get",
  23500. Version: meta.Version("alpha"),
  23501. Service: "RegionUrlMaps",
  23502. }
  23503. klog.V(5).Infof("GCEAlphaRegionUrlMaps.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  23504. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  23505. klog.V(4).Infof("GCEAlphaRegionUrlMaps.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  23506. return nil, err
  23507. }
  23508. call := g.s.Alpha.RegionUrlMaps.Get(projectID, key.Region, key.Name)
  23509. call.Context(ctx)
  23510. v, err := call.Do()
  23511. klog.V(4).Infof("GCEAlphaRegionUrlMaps.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  23512. return v, err
  23513. }
  23514. // List all UrlMap objects.
  23515. func (g *GCEAlphaRegionUrlMaps) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.UrlMap, error) {
  23516. klog.V(5).Infof("GCEAlphaRegionUrlMaps.List(%v, %v, %v) called", ctx, region, fl)
  23517. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionUrlMaps")
  23518. rk := &RateLimitKey{
  23519. ProjectID: projectID,
  23520. Operation: "List",
  23521. Version: meta.Version("alpha"),
  23522. Service: "RegionUrlMaps",
  23523. }
  23524. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  23525. return nil, err
  23526. }
  23527. klog.V(5).Infof("GCEAlphaRegionUrlMaps.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk)
  23528. call := g.s.Alpha.RegionUrlMaps.List(projectID, region)
  23529. if fl != filter.None {
  23530. call.Filter(fl.String())
  23531. }
  23532. var all []*alpha.UrlMap
  23533. f := func(l *alpha.UrlMapList) error {
  23534. klog.V(5).Infof("GCEAlphaRegionUrlMaps.List(%v, ..., %v): page %+v", ctx, fl, l)
  23535. all = append(all, l.Items...)
  23536. return nil
  23537. }
  23538. if err := call.Pages(ctx, f); err != nil {
  23539. klog.V(4).Infof("GCEAlphaRegionUrlMaps.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  23540. return nil, err
  23541. }
  23542. if klog.V(4) {
  23543. klog.V(4).Infof("GCEAlphaRegionUrlMaps.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  23544. } else if klog.V(5) {
  23545. var asStr []string
  23546. for _, o := range all {
  23547. asStr = append(asStr, fmt.Sprintf("%+v", o))
  23548. }
  23549. klog.V(5).Infof("GCEAlphaRegionUrlMaps.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  23550. }
  23551. return all, nil
  23552. }
  23553. // Insert UrlMap with key of value obj.
  23554. func (g *GCEAlphaRegionUrlMaps) Insert(ctx context.Context, key *meta.Key, obj *alpha.UrlMap) error {
  23555. klog.V(5).Infof("GCEAlphaRegionUrlMaps.Insert(%v, %v, %+v): called", ctx, key, obj)
  23556. if !key.Valid() {
  23557. klog.V(2).Infof("GCEAlphaRegionUrlMaps.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  23558. return fmt.Errorf("invalid GCE key (%+v)", key)
  23559. }
  23560. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionUrlMaps")
  23561. rk := &RateLimitKey{
  23562. ProjectID: projectID,
  23563. Operation: "Insert",
  23564. Version: meta.Version("alpha"),
  23565. Service: "RegionUrlMaps",
  23566. }
  23567. klog.V(5).Infof("GCEAlphaRegionUrlMaps.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  23568. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  23569. klog.V(4).Infof("GCEAlphaRegionUrlMaps.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  23570. return err
  23571. }
  23572. obj.Name = key.Name
  23573. call := g.s.Alpha.RegionUrlMaps.Insert(projectID, key.Region, obj)
  23574. call.Context(ctx)
  23575. op, err := call.Do()
  23576. if err != nil {
  23577. klog.V(4).Infof("GCEAlphaRegionUrlMaps.Insert(%v, %v, ...) = %+v", ctx, key, err)
  23578. return err
  23579. }
  23580. err = g.s.WaitForCompletion(ctx, op)
  23581. klog.V(4).Infof("GCEAlphaRegionUrlMaps.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  23582. return err
  23583. }
  23584. // Delete the UrlMap referenced by key.
  23585. func (g *GCEAlphaRegionUrlMaps) Delete(ctx context.Context, key *meta.Key) error {
  23586. klog.V(5).Infof("GCEAlphaRegionUrlMaps.Delete(%v, %v): called", ctx, key)
  23587. if !key.Valid() {
  23588. klog.V(2).Infof("GCEAlphaRegionUrlMaps.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  23589. return fmt.Errorf("invalid GCE key (%+v)", key)
  23590. }
  23591. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionUrlMaps")
  23592. rk := &RateLimitKey{
  23593. ProjectID: projectID,
  23594. Operation: "Delete",
  23595. Version: meta.Version("alpha"),
  23596. Service: "RegionUrlMaps",
  23597. }
  23598. klog.V(5).Infof("GCEAlphaRegionUrlMaps.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  23599. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  23600. klog.V(4).Infof("GCEAlphaRegionUrlMaps.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  23601. return err
  23602. }
  23603. call := g.s.Alpha.RegionUrlMaps.Delete(projectID, key.Region, key.Name)
  23604. call.Context(ctx)
  23605. op, err := call.Do()
  23606. if err != nil {
  23607. klog.V(4).Infof("GCEAlphaRegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  23608. return err
  23609. }
  23610. err = g.s.WaitForCompletion(ctx, op)
  23611. klog.V(4).Infof("GCEAlphaRegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  23612. return err
  23613. }
  23614. // Update is a method on GCEAlphaRegionUrlMaps.
  23615. func (g *GCEAlphaRegionUrlMaps) Update(ctx context.Context, key *meta.Key, arg0 *alpha.UrlMap) error {
  23616. klog.V(5).Infof("GCEAlphaRegionUrlMaps.Update(%v, %v, ...): called", ctx, key)
  23617. if !key.Valid() {
  23618. klog.V(2).Infof("GCEAlphaRegionUrlMaps.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  23619. return fmt.Errorf("invalid GCE key (%+v)", key)
  23620. }
  23621. projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionUrlMaps")
  23622. rk := &RateLimitKey{
  23623. ProjectID: projectID,
  23624. Operation: "Update",
  23625. Version: meta.Version("alpha"),
  23626. Service: "RegionUrlMaps",
  23627. }
  23628. klog.V(5).Infof("GCEAlphaRegionUrlMaps.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  23629. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  23630. klog.V(4).Infof("GCEAlphaRegionUrlMaps.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  23631. return err
  23632. }
  23633. call := g.s.Alpha.RegionUrlMaps.Update(projectID, key.Region, key.Name, arg0)
  23634. call.Context(ctx)
  23635. op, err := call.Do()
  23636. if err != nil {
  23637. klog.V(4).Infof("GCEAlphaRegionUrlMaps.Update(%v, %v, ...) = %+v", ctx, key, err)
  23638. return err
  23639. }
  23640. err = g.s.WaitForCompletion(ctx, op)
  23641. klog.V(4).Infof("GCEAlphaRegionUrlMaps.Update(%v, %v, ...) = %+v", ctx, key, err)
  23642. return err
  23643. }
  23644. // BetaRegionUrlMaps is an interface that allows for mocking of RegionUrlMaps.
  23645. type BetaRegionUrlMaps interface {
  23646. Get(ctx context.Context, key *meta.Key) (*beta.UrlMap, error)
  23647. List(ctx context.Context, region string, fl *filter.F) ([]*beta.UrlMap, error)
  23648. Insert(ctx context.Context, key *meta.Key, obj *beta.UrlMap) error
  23649. Delete(ctx context.Context, key *meta.Key) error
  23650. Update(context.Context, *meta.Key, *beta.UrlMap) error
  23651. }
  23652. // NewMockBetaRegionUrlMaps returns a new mock for RegionUrlMaps.
  23653. func NewMockBetaRegionUrlMaps(pr ProjectRouter, objs map[meta.Key]*MockRegionUrlMapsObj) *MockBetaRegionUrlMaps {
  23654. mock := &MockBetaRegionUrlMaps{
  23655. ProjectRouter: pr,
  23656. Objects: objs,
  23657. GetError: map[meta.Key]error{},
  23658. InsertError: map[meta.Key]error{},
  23659. DeleteError: map[meta.Key]error{},
  23660. }
  23661. return mock
  23662. }
  23663. // MockBetaRegionUrlMaps is the mock for RegionUrlMaps.
  23664. type MockBetaRegionUrlMaps struct {
  23665. Lock sync.Mutex
  23666. ProjectRouter ProjectRouter
  23667. // Objects maintained by the mock.
  23668. Objects map[meta.Key]*MockRegionUrlMapsObj
  23669. // If an entry exists for the given key and operation, then the error
  23670. // will be returned instead of the operation.
  23671. GetError map[meta.Key]error
  23672. ListError *error
  23673. InsertError map[meta.Key]error
  23674. DeleteError map[meta.Key]error
  23675. // xxxHook allow you to intercept the standard processing of the mock in
  23676. // order to add your own logic. Return (true, _, _) to prevent the normal
  23677. // execution flow of the mock. Return (false, nil, nil) to continue with
  23678. // normal mock behavior/ after the hook function executes.
  23679. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaRegionUrlMaps) (bool, *beta.UrlMap, error)
  23680. ListHook func(ctx context.Context, region string, fl *filter.F, m *MockBetaRegionUrlMaps) (bool, []*beta.UrlMap, error)
  23681. InsertHook func(ctx context.Context, key *meta.Key, obj *beta.UrlMap, m *MockBetaRegionUrlMaps) (bool, error)
  23682. DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaRegionUrlMaps) (bool, error)
  23683. UpdateHook func(context.Context, *meta.Key, *beta.UrlMap, *MockBetaRegionUrlMaps) error
  23684. // X is extra state that can be used as part of the mock. Generated code
  23685. // will not use this field.
  23686. X interface{}
  23687. }
  23688. // Get returns the object from the mock.
  23689. func (m *MockBetaRegionUrlMaps) Get(ctx context.Context, key *meta.Key) (*beta.UrlMap, error) {
  23690. if m.GetHook != nil {
  23691. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  23692. klog.V(5).Infof("MockBetaRegionUrlMaps.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  23693. return obj, err
  23694. }
  23695. }
  23696. if !key.Valid() {
  23697. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  23698. }
  23699. m.Lock.Lock()
  23700. defer m.Lock.Unlock()
  23701. if err, ok := m.GetError[*key]; ok {
  23702. klog.V(5).Infof("MockBetaRegionUrlMaps.Get(%v, %s) = nil, %v", ctx, key, err)
  23703. return nil, err
  23704. }
  23705. if obj, ok := m.Objects[*key]; ok {
  23706. typedObj := obj.ToBeta()
  23707. klog.V(5).Infof("MockBetaRegionUrlMaps.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  23708. return typedObj, nil
  23709. }
  23710. err := &googleapi.Error{
  23711. Code: http.StatusNotFound,
  23712. Message: fmt.Sprintf("MockBetaRegionUrlMaps %v not found", key),
  23713. }
  23714. klog.V(5).Infof("MockBetaRegionUrlMaps.Get(%v, %s) = nil, %v", ctx, key, err)
  23715. return nil, err
  23716. }
  23717. // List all of the objects in the mock in the given region.
  23718. func (m *MockBetaRegionUrlMaps) List(ctx context.Context, region string, fl *filter.F) ([]*beta.UrlMap, error) {
  23719. if m.ListHook != nil {
  23720. if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept {
  23721. klog.V(5).Infof("MockBetaRegionUrlMaps.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err)
  23722. return objs, err
  23723. }
  23724. }
  23725. m.Lock.Lock()
  23726. defer m.Lock.Unlock()
  23727. if m.ListError != nil {
  23728. err := *m.ListError
  23729. klog.V(5).Infof("MockBetaRegionUrlMaps.List(%v, %q, %v) = nil, %v", ctx, region, fl, err)
  23730. return nil, *m.ListError
  23731. }
  23732. var objs []*beta.UrlMap
  23733. for key, obj := range m.Objects {
  23734. if key.Region != region {
  23735. continue
  23736. }
  23737. if !fl.Match(obj.ToBeta()) {
  23738. continue
  23739. }
  23740. objs = append(objs, obj.ToBeta())
  23741. }
  23742. klog.V(5).Infof("MockBetaRegionUrlMaps.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs))
  23743. return objs, nil
  23744. }
  23745. // Insert is a mock for inserting/creating a new object.
  23746. func (m *MockBetaRegionUrlMaps) Insert(ctx context.Context, key *meta.Key, obj *beta.UrlMap) error {
  23747. if m.InsertHook != nil {
  23748. if intercept, err := m.InsertHook(ctx, key, obj, m); intercept {
  23749. klog.V(5).Infof("MockBetaRegionUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  23750. return err
  23751. }
  23752. }
  23753. if !key.Valid() {
  23754. return fmt.Errorf("invalid GCE key (%+v)", key)
  23755. }
  23756. m.Lock.Lock()
  23757. defer m.Lock.Unlock()
  23758. if err, ok := m.InsertError[*key]; ok {
  23759. klog.V(5).Infof("MockBetaRegionUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  23760. return err
  23761. }
  23762. if _, ok := m.Objects[*key]; ok {
  23763. err := &googleapi.Error{
  23764. Code: http.StatusConflict,
  23765. Message: fmt.Sprintf("MockBetaRegionUrlMaps %v exists", key),
  23766. }
  23767. klog.V(5).Infof("MockBetaRegionUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err)
  23768. return err
  23769. }
  23770. obj.Name = key.Name
  23771. projectID := m.ProjectRouter.ProjectID(ctx, "beta", "urlMaps")
  23772. obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "urlMaps", key)
  23773. m.Objects[*key] = &MockRegionUrlMapsObj{obj}
  23774. klog.V(5).Infof("MockBetaRegionUrlMaps.Insert(%v, %v, %+v) = nil", ctx, key, obj)
  23775. return nil
  23776. }
  23777. // Delete is a mock for deleting the object.
  23778. func (m *MockBetaRegionUrlMaps) Delete(ctx context.Context, key *meta.Key) error {
  23779. if m.DeleteHook != nil {
  23780. if intercept, err := m.DeleteHook(ctx, key, m); intercept {
  23781. klog.V(5).Infof("MockBetaRegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  23782. return err
  23783. }
  23784. }
  23785. if !key.Valid() {
  23786. return fmt.Errorf("invalid GCE key (%+v)", key)
  23787. }
  23788. m.Lock.Lock()
  23789. defer m.Lock.Unlock()
  23790. if err, ok := m.DeleteError[*key]; ok {
  23791. klog.V(5).Infof("MockBetaRegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  23792. return err
  23793. }
  23794. if _, ok := m.Objects[*key]; !ok {
  23795. err := &googleapi.Error{
  23796. Code: http.StatusNotFound,
  23797. Message: fmt.Sprintf("MockBetaRegionUrlMaps %v not found", key),
  23798. }
  23799. klog.V(5).Infof("MockBetaRegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  23800. return err
  23801. }
  23802. delete(m.Objects, *key)
  23803. klog.V(5).Infof("MockBetaRegionUrlMaps.Delete(%v, %v) = nil", ctx, key)
  23804. return nil
  23805. }
  23806. // Obj wraps the object for use in the mock.
  23807. func (m *MockBetaRegionUrlMaps) Obj(o *beta.UrlMap) *MockRegionUrlMapsObj {
  23808. return &MockRegionUrlMapsObj{o}
  23809. }
  23810. // Update is a mock for the corresponding method.
  23811. func (m *MockBetaRegionUrlMaps) Update(ctx context.Context, key *meta.Key, arg0 *beta.UrlMap) error {
  23812. if m.UpdateHook != nil {
  23813. return m.UpdateHook(ctx, key, arg0, m)
  23814. }
  23815. return nil
  23816. }
  23817. // GCEBetaRegionUrlMaps is a simplifying adapter for the GCE RegionUrlMaps.
  23818. type GCEBetaRegionUrlMaps struct {
  23819. s *Service
  23820. }
  23821. // Get the UrlMap named by key.
  23822. func (g *GCEBetaRegionUrlMaps) Get(ctx context.Context, key *meta.Key) (*beta.UrlMap, error) {
  23823. klog.V(5).Infof("GCEBetaRegionUrlMaps.Get(%v, %v): called", ctx, key)
  23824. if !key.Valid() {
  23825. klog.V(2).Infof("GCEBetaRegionUrlMaps.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  23826. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  23827. }
  23828. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionUrlMaps")
  23829. rk := &RateLimitKey{
  23830. ProjectID: projectID,
  23831. Operation: "Get",
  23832. Version: meta.Version("beta"),
  23833. Service: "RegionUrlMaps",
  23834. }
  23835. klog.V(5).Infof("GCEBetaRegionUrlMaps.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  23836. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  23837. klog.V(4).Infof("GCEBetaRegionUrlMaps.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  23838. return nil, err
  23839. }
  23840. call := g.s.Beta.RegionUrlMaps.Get(projectID, key.Region, key.Name)
  23841. call.Context(ctx)
  23842. v, err := call.Do()
  23843. klog.V(4).Infof("GCEBetaRegionUrlMaps.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  23844. return v, err
  23845. }
  23846. // List all UrlMap objects.
  23847. func (g *GCEBetaRegionUrlMaps) List(ctx context.Context, region string, fl *filter.F) ([]*beta.UrlMap, error) {
  23848. klog.V(5).Infof("GCEBetaRegionUrlMaps.List(%v, %v, %v) called", ctx, region, fl)
  23849. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionUrlMaps")
  23850. rk := &RateLimitKey{
  23851. ProjectID: projectID,
  23852. Operation: "List",
  23853. Version: meta.Version("beta"),
  23854. Service: "RegionUrlMaps",
  23855. }
  23856. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  23857. return nil, err
  23858. }
  23859. klog.V(5).Infof("GCEBetaRegionUrlMaps.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk)
  23860. call := g.s.Beta.RegionUrlMaps.List(projectID, region)
  23861. if fl != filter.None {
  23862. call.Filter(fl.String())
  23863. }
  23864. var all []*beta.UrlMap
  23865. f := func(l *beta.UrlMapList) error {
  23866. klog.V(5).Infof("GCEBetaRegionUrlMaps.List(%v, ..., %v): page %+v", ctx, fl, l)
  23867. all = append(all, l.Items...)
  23868. return nil
  23869. }
  23870. if err := call.Pages(ctx, f); err != nil {
  23871. klog.V(4).Infof("GCEBetaRegionUrlMaps.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  23872. return nil, err
  23873. }
  23874. if klog.V(4) {
  23875. klog.V(4).Infof("GCEBetaRegionUrlMaps.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  23876. } else if klog.V(5) {
  23877. var asStr []string
  23878. for _, o := range all {
  23879. asStr = append(asStr, fmt.Sprintf("%+v", o))
  23880. }
  23881. klog.V(5).Infof("GCEBetaRegionUrlMaps.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  23882. }
  23883. return all, nil
  23884. }
  23885. // Insert UrlMap with key of value obj.
  23886. func (g *GCEBetaRegionUrlMaps) Insert(ctx context.Context, key *meta.Key, obj *beta.UrlMap) error {
  23887. klog.V(5).Infof("GCEBetaRegionUrlMaps.Insert(%v, %v, %+v): called", ctx, key, obj)
  23888. if !key.Valid() {
  23889. klog.V(2).Infof("GCEBetaRegionUrlMaps.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  23890. return fmt.Errorf("invalid GCE key (%+v)", key)
  23891. }
  23892. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionUrlMaps")
  23893. rk := &RateLimitKey{
  23894. ProjectID: projectID,
  23895. Operation: "Insert",
  23896. Version: meta.Version("beta"),
  23897. Service: "RegionUrlMaps",
  23898. }
  23899. klog.V(5).Infof("GCEBetaRegionUrlMaps.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  23900. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  23901. klog.V(4).Infof("GCEBetaRegionUrlMaps.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  23902. return err
  23903. }
  23904. obj.Name = key.Name
  23905. call := g.s.Beta.RegionUrlMaps.Insert(projectID, key.Region, obj)
  23906. call.Context(ctx)
  23907. op, err := call.Do()
  23908. if err != nil {
  23909. klog.V(4).Infof("GCEBetaRegionUrlMaps.Insert(%v, %v, ...) = %+v", ctx, key, err)
  23910. return err
  23911. }
  23912. err = g.s.WaitForCompletion(ctx, op)
  23913. klog.V(4).Infof("GCEBetaRegionUrlMaps.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err)
  23914. return err
  23915. }
  23916. // Delete the UrlMap referenced by key.
  23917. func (g *GCEBetaRegionUrlMaps) Delete(ctx context.Context, key *meta.Key) error {
  23918. klog.V(5).Infof("GCEBetaRegionUrlMaps.Delete(%v, %v): called", ctx, key)
  23919. if !key.Valid() {
  23920. klog.V(2).Infof("GCEBetaRegionUrlMaps.Delete(%v, %v): key is invalid (%#v)", ctx, key, key)
  23921. return fmt.Errorf("invalid GCE key (%+v)", key)
  23922. }
  23923. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionUrlMaps")
  23924. rk := &RateLimitKey{
  23925. ProjectID: projectID,
  23926. Operation: "Delete",
  23927. Version: meta.Version("beta"),
  23928. Service: "RegionUrlMaps",
  23929. }
  23930. klog.V(5).Infof("GCEBetaRegionUrlMaps.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  23931. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  23932. klog.V(4).Infof("GCEBetaRegionUrlMaps.Delete(%v, %v): RateLimiter error: %v", ctx, key, err)
  23933. return err
  23934. }
  23935. call := g.s.Beta.RegionUrlMaps.Delete(projectID, key.Region, key.Name)
  23936. call.Context(ctx)
  23937. op, err := call.Do()
  23938. if err != nil {
  23939. klog.V(4).Infof("GCEBetaRegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  23940. return err
  23941. }
  23942. err = g.s.WaitForCompletion(ctx, op)
  23943. klog.V(4).Infof("GCEBetaRegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err)
  23944. return err
  23945. }
  23946. // Update is a method on GCEBetaRegionUrlMaps.
  23947. func (g *GCEBetaRegionUrlMaps) Update(ctx context.Context, key *meta.Key, arg0 *beta.UrlMap) error {
  23948. klog.V(5).Infof("GCEBetaRegionUrlMaps.Update(%v, %v, ...): called", ctx, key)
  23949. if !key.Valid() {
  23950. klog.V(2).Infof("GCEBetaRegionUrlMaps.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key)
  23951. return fmt.Errorf("invalid GCE key (%+v)", key)
  23952. }
  23953. projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionUrlMaps")
  23954. rk := &RateLimitKey{
  23955. ProjectID: projectID,
  23956. Operation: "Update",
  23957. Version: meta.Version("beta"),
  23958. Service: "RegionUrlMaps",
  23959. }
  23960. klog.V(5).Infof("GCEBetaRegionUrlMaps.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  23961. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  23962. klog.V(4).Infof("GCEBetaRegionUrlMaps.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err)
  23963. return err
  23964. }
  23965. call := g.s.Beta.RegionUrlMaps.Update(projectID, key.Region, key.Name, arg0)
  23966. call.Context(ctx)
  23967. op, err := call.Do()
  23968. if err != nil {
  23969. klog.V(4).Infof("GCEBetaRegionUrlMaps.Update(%v, %v, ...) = %+v", ctx, key, err)
  23970. return err
  23971. }
  23972. err = g.s.WaitForCompletion(ctx, op)
  23973. klog.V(4).Infof("GCEBetaRegionUrlMaps.Update(%v, %v, ...) = %+v", ctx, key, err)
  23974. return err
  23975. }
  23976. // Zones is an interface that allows for mocking of Zones.
  23977. type Zones interface {
  23978. Get(ctx context.Context, key *meta.Key) (*ga.Zone, error)
  23979. List(ctx context.Context, fl *filter.F) ([]*ga.Zone, error)
  23980. }
  23981. // NewMockZones returns a new mock for Zones.
  23982. func NewMockZones(pr ProjectRouter, objs map[meta.Key]*MockZonesObj) *MockZones {
  23983. mock := &MockZones{
  23984. ProjectRouter: pr,
  23985. Objects: objs,
  23986. GetError: map[meta.Key]error{},
  23987. }
  23988. return mock
  23989. }
  23990. // MockZones is the mock for Zones.
  23991. type MockZones struct {
  23992. Lock sync.Mutex
  23993. ProjectRouter ProjectRouter
  23994. // Objects maintained by the mock.
  23995. Objects map[meta.Key]*MockZonesObj
  23996. // If an entry exists for the given key and operation, then the error
  23997. // will be returned instead of the operation.
  23998. GetError map[meta.Key]error
  23999. ListError *error
  24000. // xxxHook allow you to intercept the standard processing of the mock in
  24001. // order to add your own logic. Return (true, _, _) to prevent the normal
  24002. // execution flow of the mock. Return (false, nil, nil) to continue with
  24003. // normal mock behavior/ after the hook function executes.
  24004. GetHook func(ctx context.Context, key *meta.Key, m *MockZones) (bool, *ga.Zone, error)
  24005. ListHook func(ctx context.Context, fl *filter.F, m *MockZones) (bool, []*ga.Zone, error)
  24006. // X is extra state that can be used as part of the mock. Generated code
  24007. // will not use this field.
  24008. X interface{}
  24009. }
  24010. // Get returns the object from the mock.
  24011. func (m *MockZones) Get(ctx context.Context, key *meta.Key) (*ga.Zone, error) {
  24012. if m.GetHook != nil {
  24013. if intercept, obj, err := m.GetHook(ctx, key, m); intercept {
  24014. klog.V(5).Infof("MockZones.Get(%v, %s) = %+v, %v", ctx, key, obj, err)
  24015. return obj, err
  24016. }
  24017. }
  24018. if !key.Valid() {
  24019. return nil, fmt.Errorf("invalid GCE key (%+v)", key)
  24020. }
  24021. m.Lock.Lock()
  24022. defer m.Lock.Unlock()
  24023. if err, ok := m.GetError[*key]; ok {
  24024. klog.V(5).Infof("MockZones.Get(%v, %s) = nil, %v", ctx, key, err)
  24025. return nil, err
  24026. }
  24027. if obj, ok := m.Objects[*key]; ok {
  24028. typedObj := obj.ToGA()
  24029. klog.V(5).Infof("MockZones.Get(%v, %s) = %+v, nil", ctx, key, typedObj)
  24030. return typedObj, nil
  24031. }
  24032. err := &googleapi.Error{
  24033. Code: http.StatusNotFound,
  24034. Message: fmt.Sprintf("MockZones %v not found", key),
  24035. }
  24036. klog.V(5).Infof("MockZones.Get(%v, %s) = nil, %v", ctx, key, err)
  24037. return nil, err
  24038. }
  24039. // List all of the objects in the mock.
  24040. func (m *MockZones) List(ctx context.Context, fl *filter.F) ([]*ga.Zone, error) {
  24041. if m.ListHook != nil {
  24042. if intercept, objs, err := m.ListHook(ctx, fl, m); intercept {
  24043. klog.V(5).Infof("MockZones.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err)
  24044. return objs, err
  24045. }
  24046. }
  24047. m.Lock.Lock()
  24048. defer m.Lock.Unlock()
  24049. if m.ListError != nil {
  24050. err := *m.ListError
  24051. klog.V(5).Infof("MockZones.List(%v, %v) = nil, %v", ctx, fl, err)
  24052. return nil, *m.ListError
  24053. }
  24054. var objs []*ga.Zone
  24055. for _, obj := range m.Objects {
  24056. if !fl.Match(obj.ToGA()) {
  24057. continue
  24058. }
  24059. objs = append(objs, obj.ToGA())
  24060. }
  24061. klog.V(5).Infof("MockZones.List(%v, %v) = [%v items], nil", ctx, fl, len(objs))
  24062. return objs, nil
  24063. }
  24064. // Obj wraps the object for use in the mock.
  24065. func (m *MockZones) Obj(o *ga.Zone) *MockZonesObj {
  24066. return &MockZonesObj{o}
  24067. }
  24068. // GCEZones is a simplifying adapter for the GCE Zones.
  24069. type GCEZones struct {
  24070. s *Service
  24071. }
  24072. // Get the Zone named by key.
  24073. func (g *GCEZones) Get(ctx context.Context, key *meta.Key) (*ga.Zone, error) {
  24074. klog.V(5).Infof("GCEZones.Get(%v, %v): called", ctx, key)
  24075. if !key.Valid() {
  24076. klog.V(2).Infof("GCEZones.Get(%v, %v): key is invalid (%#v)", ctx, key, key)
  24077. return nil, fmt.Errorf("invalid GCE key (%#v)", key)
  24078. }
  24079. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Zones")
  24080. rk := &RateLimitKey{
  24081. ProjectID: projectID,
  24082. Operation: "Get",
  24083. Version: meta.Version("ga"),
  24084. Service: "Zones",
  24085. }
  24086. klog.V(5).Infof("GCEZones.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk)
  24087. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  24088. klog.V(4).Infof("GCEZones.Get(%v, %v): RateLimiter error: %v", ctx, key, err)
  24089. return nil, err
  24090. }
  24091. call := g.s.GA.Zones.Get(projectID, key.Name)
  24092. call.Context(ctx)
  24093. v, err := call.Do()
  24094. klog.V(4).Infof("GCEZones.Get(%v, %v) = %+v, %v", ctx, key, v, err)
  24095. return v, err
  24096. }
  24097. // List all Zone objects.
  24098. func (g *GCEZones) List(ctx context.Context, fl *filter.F) ([]*ga.Zone, error) {
  24099. klog.V(5).Infof("GCEZones.List(%v, %v) called", ctx, fl)
  24100. projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Zones")
  24101. rk := &RateLimitKey{
  24102. ProjectID: projectID,
  24103. Operation: "List",
  24104. Version: meta.Version("ga"),
  24105. Service: "Zones",
  24106. }
  24107. if err := g.s.RateLimiter.Accept(ctx, rk); err != nil {
  24108. return nil, err
  24109. }
  24110. klog.V(5).Infof("GCEZones.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk)
  24111. call := g.s.GA.Zones.List(projectID)
  24112. if fl != filter.None {
  24113. call.Filter(fl.String())
  24114. }
  24115. var all []*ga.Zone
  24116. f := func(l *ga.ZoneList) error {
  24117. klog.V(5).Infof("GCEZones.List(%v, ..., %v): page %+v", ctx, fl, l)
  24118. all = append(all, l.Items...)
  24119. return nil
  24120. }
  24121. if err := call.Pages(ctx, f); err != nil {
  24122. klog.V(4).Infof("GCEZones.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err)
  24123. return nil, err
  24124. }
  24125. if klog.V(4) {
  24126. klog.V(4).Infof("GCEZones.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil)
  24127. } else if klog.V(5) {
  24128. var asStr []string
  24129. for _, o := range all {
  24130. asStr = append(asStr, fmt.Sprintf("%+v", o))
  24131. }
  24132. klog.V(5).Infof("GCEZones.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil)
  24133. }
  24134. return all, nil
  24135. }
  24136. // NewAddressesResourceID creates a ResourceID for the Addresses resource.
  24137. func NewAddressesResourceID(project, region, name string) *ResourceID {
  24138. key := meta.RegionalKey(name, region)
  24139. return &ResourceID{project, "addresses", key}
  24140. }
  24141. // NewBackendServicesResourceID creates a ResourceID for the BackendServices resource.
  24142. func NewBackendServicesResourceID(project, name string) *ResourceID {
  24143. key := meta.GlobalKey(name)
  24144. return &ResourceID{project, "backendServices", key}
  24145. }
  24146. // NewDisksResourceID creates a ResourceID for the Disks resource.
  24147. func NewDisksResourceID(project, zone, name string) *ResourceID {
  24148. key := meta.ZonalKey(name, zone)
  24149. return &ResourceID{project, "disks", key}
  24150. }
  24151. // NewFirewallsResourceID creates a ResourceID for the Firewalls resource.
  24152. func NewFirewallsResourceID(project, name string) *ResourceID {
  24153. key := meta.GlobalKey(name)
  24154. return &ResourceID{project, "firewalls", key}
  24155. }
  24156. // NewForwardingRulesResourceID creates a ResourceID for the ForwardingRules resource.
  24157. func NewForwardingRulesResourceID(project, region, name string) *ResourceID {
  24158. key := meta.RegionalKey(name, region)
  24159. return &ResourceID{project, "forwardingRules", key}
  24160. }
  24161. // NewGlobalAddressesResourceID creates a ResourceID for the GlobalAddresses resource.
  24162. func NewGlobalAddressesResourceID(project, name string) *ResourceID {
  24163. key := meta.GlobalKey(name)
  24164. return &ResourceID{project, "addresses", key}
  24165. }
  24166. // NewGlobalForwardingRulesResourceID creates a ResourceID for the GlobalForwardingRules resource.
  24167. func NewGlobalForwardingRulesResourceID(project, name string) *ResourceID {
  24168. key := meta.GlobalKey(name)
  24169. return &ResourceID{project, "forwardingRules", key}
  24170. }
  24171. // NewHealthChecksResourceID creates a ResourceID for the HealthChecks resource.
  24172. func NewHealthChecksResourceID(project, name string) *ResourceID {
  24173. key := meta.GlobalKey(name)
  24174. return &ResourceID{project, "healthChecks", key}
  24175. }
  24176. // NewHttpHealthChecksResourceID creates a ResourceID for the HttpHealthChecks resource.
  24177. func NewHttpHealthChecksResourceID(project, name string) *ResourceID {
  24178. key := meta.GlobalKey(name)
  24179. return &ResourceID{project, "httpHealthChecks", key}
  24180. }
  24181. // NewHttpsHealthChecksResourceID creates a ResourceID for the HttpsHealthChecks resource.
  24182. func NewHttpsHealthChecksResourceID(project, name string) *ResourceID {
  24183. key := meta.GlobalKey(name)
  24184. return &ResourceID{project, "httpsHealthChecks", key}
  24185. }
  24186. // NewInstanceGroupsResourceID creates a ResourceID for the InstanceGroups resource.
  24187. func NewInstanceGroupsResourceID(project, zone, name string) *ResourceID {
  24188. key := meta.ZonalKey(name, zone)
  24189. return &ResourceID{project, "instanceGroups", key}
  24190. }
  24191. // NewInstancesResourceID creates a ResourceID for the Instances resource.
  24192. func NewInstancesResourceID(project, zone, name string) *ResourceID {
  24193. key := meta.ZonalKey(name, zone)
  24194. return &ResourceID{project, "instances", key}
  24195. }
  24196. // NewNetworkEndpointGroupsResourceID creates a ResourceID for the NetworkEndpointGroups resource.
  24197. func NewNetworkEndpointGroupsResourceID(project, zone, name string) *ResourceID {
  24198. key := meta.ZonalKey(name, zone)
  24199. return &ResourceID{project, "networkEndpointGroups", key}
  24200. }
  24201. // NewNetworksResourceID creates a ResourceID for the Networks resource.
  24202. func NewNetworksResourceID(project, name string) *ResourceID {
  24203. key := meta.GlobalKey(name)
  24204. return &ResourceID{project, "networks", key}
  24205. }
  24206. // NewProjectsResourceID creates a ResourceID for the Projects resource.
  24207. func NewProjectsResourceID(project string) *ResourceID {
  24208. var key *meta.Key
  24209. return &ResourceID{project, "projects", key}
  24210. }
  24211. // NewRegionBackendServicesResourceID creates a ResourceID for the RegionBackendServices resource.
  24212. func NewRegionBackendServicesResourceID(project, region, name string) *ResourceID {
  24213. key := meta.RegionalKey(name, region)
  24214. return &ResourceID{project, "backendServices", key}
  24215. }
  24216. // NewRegionDisksResourceID creates a ResourceID for the RegionDisks resource.
  24217. func NewRegionDisksResourceID(project, region, name string) *ResourceID {
  24218. key := meta.RegionalKey(name, region)
  24219. return &ResourceID{project, "disks", key}
  24220. }
  24221. // NewRegionHealthChecksResourceID creates a ResourceID for the RegionHealthChecks resource.
  24222. func NewRegionHealthChecksResourceID(project, region, name string) *ResourceID {
  24223. key := meta.RegionalKey(name, region)
  24224. return &ResourceID{project, "healthChecks", key}
  24225. }
  24226. // NewRegionSslCertificatesResourceID creates a ResourceID for the RegionSslCertificates resource.
  24227. func NewRegionSslCertificatesResourceID(project, region, name string) *ResourceID {
  24228. key := meta.RegionalKey(name, region)
  24229. return &ResourceID{project, "sslCertificates", key}
  24230. }
  24231. // NewRegionTargetHttpProxiesResourceID creates a ResourceID for the RegionTargetHttpProxies resource.
  24232. func NewRegionTargetHttpProxiesResourceID(project, region, name string) *ResourceID {
  24233. key := meta.RegionalKey(name, region)
  24234. return &ResourceID{project, "targetHttpProxies", key}
  24235. }
  24236. // NewRegionTargetHttpsProxiesResourceID creates a ResourceID for the RegionTargetHttpsProxies resource.
  24237. func NewRegionTargetHttpsProxiesResourceID(project, region, name string) *ResourceID {
  24238. key := meta.RegionalKey(name, region)
  24239. return &ResourceID{project, "targetHttpsProxies", key}
  24240. }
  24241. // NewRegionUrlMapsResourceID creates a ResourceID for the RegionUrlMaps resource.
  24242. func NewRegionUrlMapsResourceID(project, region, name string) *ResourceID {
  24243. key := meta.RegionalKey(name, region)
  24244. return &ResourceID{project, "urlMaps", key}
  24245. }
  24246. // NewRegionsResourceID creates a ResourceID for the Regions resource.
  24247. func NewRegionsResourceID(project, name string) *ResourceID {
  24248. key := meta.GlobalKey(name)
  24249. return &ResourceID{project, "regions", key}
  24250. }
  24251. // NewRoutesResourceID creates a ResourceID for the Routes resource.
  24252. func NewRoutesResourceID(project, name string) *ResourceID {
  24253. key := meta.GlobalKey(name)
  24254. return &ResourceID{project, "routes", key}
  24255. }
  24256. // NewSecurityPoliciesResourceID creates a ResourceID for the SecurityPolicies resource.
  24257. func NewSecurityPoliciesResourceID(project, name string) *ResourceID {
  24258. key := meta.GlobalKey(name)
  24259. return &ResourceID{project, "securityPolicies", key}
  24260. }
  24261. // NewSslCertificatesResourceID creates a ResourceID for the SslCertificates resource.
  24262. func NewSslCertificatesResourceID(project, name string) *ResourceID {
  24263. key := meta.GlobalKey(name)
  24264. return &ResourceID{project, "sslCertificates", key}
  24265. }
  24266. // NewSubnetworksResourceID creates a ResourceID for the Subnetworks resource.
  24267. func NewSubnetworksResourceID(project, region, name string) *ResourceID {
  24268. key := meta.RegionalKey(name, region)
  24269. return &ResourceID{project, "subnetworks", key}
  24270. }
  24271. // NewTargetHttpProxiesResourceID creates a ResourceID for the TargetHttpProxies resource.
  24272. func NewTargetHttpProxiesResourceID(project, name string) *ResourceID {
  24273. key := meta.GlobalKey(name)
  24274. return &ResourceID{project, "targetHttpProxies", key}
  24275. }
  24276. // NewTargetHttpsProxiesResourceID creates a ResourceID for the TargetHttpsProxies resource.
  24277. func NewTargetHttpsProxiesResourceID(project, name string) *ResourceID {
  24278. key := meta.GlobalKey(name)
  24279. return &ResourceID{project, "targetHttpsProxies", key}
  24280. }
  24281. // NewTargetPoolsResourceID creates a ResourceID for the TargetPools resource.
  24282. func NewTargetPoolsResourceID(project, region, name string) *ResourceID {
  24283. key := meta.RegionalKey(name, region)
  24284. return &ResourceID{project, "targetPools", key}
  24285. }
  24286. // NewUrlMapsResourceID creates a ResourceID for the UrlMaps resource.
  24287. func NewUrlMapsResourceID(project, name string) *ResourceID {
  24288. key := meta.GlobalKey(name)
  24289. return &ResourceID{project, "urlMaps", key}
  24290. }
  24291. // NewZonesResourceID creates a ResourceID for the Zones resource.
  24292. func NewZonesResourceID(project, name string) *ResourceID {
  24293. key := meta.GlobalKey(name)
  24294. return &ResourceID{project, "zones", key}
  24295. }