carlos / platform Public

Clone
git clone https://amadan.net/carlos/platform

Plain git — no account needed to clone.

Download

Download this file

1package registry
2
3import (
4 "context"
5 "encoding/json"
6)
7
8type remoteRequest struct {
9 Method string
10 Deadline int64
11 CallbackError string
12 CallbackFailed bool
13 Host string
14 Owner ClaimOwnership
15 Expected string
16 Next string
17 Observed Route
18 Journal string
19 Targets []ClaimRow
20 ObservedValue Timer
21 T Timer
22 Name string
23 Registration string
24 Status string
25 Now int64
26 Id string
27 Retirement string
28 Old ColdRows
29 NextValue ColdRows
30 F Fleet
31 B FleetBox
32 Fleet string
33 Label string
34 TokenHash string
35 Tags string
36 IdValue int64
37 Sqid string
38 TValue Route
39 Op string
40 ExpectOp string
41 ToOp string
42 FromOp string
43 Account string
44 Channel string
45 From string
46 To string
47 FromDB string
48 FromSock string
49 ToDB string
50 ToSock string
51 Backing string
52 Unit string
53 Class string
54 Addr string
55 Addrs string
56 Health string
57 Steering string
58 UpdateSettings string
59 BuildState string
60 Replicas string
61 Replica bool
62 Hash string
63 Hosts []string
64 Env string
65 Tunnel string
66 Target string
67 CheckedAt int64
68 At int64
69 Ver string
70 Prev string
71 On bool
72 Due int64
73 Seed string
74 Args string
75 Idle int
76 MaxRun int
77 A RouteAlias
78 Alias string
79 W WildcardDomain
80 P RoutePath
81 Prefix string
82 Path string
83 Rows []Timer
84 Limit int
85 ExcludeHosts []string
86 Ms int64
87 Attempts int
88 NextAt int64
89 Kind string
90 Alive map[string]bool
91 DoneBefore int64
92 Keep map[string]bool
93 ExpectGood GoodBuild
94 NextGood GoodBuild
95}
96
97type remoteResponse struct {
98 Failed bool
99 Error string
100 ErrorKind int
101 Callback string
102 Held []Route
103 Archives []ClaimRowArchive
104 Timer *Timer
105 Changed bool
106 Fleet *Fleet
107 Fleets []Fleet
108 FleetBoxes []FleetBox
109 StringMap map[string]string
110 Number64 int64
111 Text string
112 Accounts []Account
113 Routes []Route
114 Route *Route
115 Aliases []RouteAlias
116 Wildcards []WildcardDomain
117 Paths []RoutePath
118 Timers []Timer
119 Number int
120 Times map[string]int64
121 Hosts []string
122}
123
124func (r *Registry) dispatchRemote(ctx context.Context, q remoteRequest, callback func(remoteResponse) error) (out remoteResponse, err error) {
125 switch q.Method {
126 case "ArtifactHosts":
127 out.Hosts, err = r.ArtifactHosts()
128 case "SetClaimHold":
129 err = r.SetClaimHold(ctx, q.Host, q.Owner, q.Expected, q.Next)
130 case "AdoptClaimRoute":
131 err = r.AdoptClaimRoute(ctx, q.Observed, q.Owner)
132 case "RetireClaimRows":
133 err = r.RetireClaimRows(ctx, q.Journal, q.Targets, func(archives []ClaimRowArchive) error {
134 return callback(remoteResponse{Callback: "archives", Archives: archives})
135 })
136 case "AdoptClaimTimer":
137 err = r.AdoptClaimTimer(ctx, q.ObservedValue, q.Owner)
138 case "MaterializeTimerRegistration":
139 out.Timer, err = r.MaterializeTimerRegistration(q.T, q.Expected)
140 case "DeleteTimerOwnedRegistration":
141 err = r.DeleteTimerOwnedRegistration(q.T)
142 case "UpsertTimerRegistration":
143 out.Timer, err = r.UpsertTimerRegistration(q.T, q.Expected)
144 case "SetTimerStatusRegistration":
145 err = r.SetTimerStatusRegistration(q.Host, q.Name, q.Registration, q.Status)
146 case "FireTimerNowRegistration":
147 err = r.FireTimerNowRegistration(q.Host, q.Name, q.Registration, q.Now)
148 case "ReviseRecoveryHandover":
149 err = r.ReviseRecoveryHandover(ctx, q.Id, q.Expected, q.Journal)
150 case "PendingRecoveryHandovers":
151 var bodies map[string]string
152 bodies, err = r.PendingRecoveryHandovers(ctx)
153 if err == nil {
154 var raw []byte
155 raw, err = json.Marshal(bodies)
156 out.Text = string(raw)
157 }
158 case "BeginRecoveryHandover":
159 err = r.BeginRecoveryHandover(ctx, q.Id, q.Journal)
160 case "PendingRecoveryHandover":
161 out.Text, err = r.PendingRecoveryHandover(ctx, q.Id)
162 case "CompleteRecoveryHandover":
163 err = r.CompleteRecoveryHandover(ctx, q.Id, q.Journal)
164 case "RebindClaimRows":
165 err = r.RebindClaimRows(ctx, q.Old, q.NextValue)
166 case "RestoreClaimRows":
167 err = r.RestoreClaimRows(ctx, q.Id, q.Retirement, q.Old, q.NextValue)
168 case "UpsertFleet":
169 err = r.UpsertFleet(q.F)
170 case "CreateFleet":
171 out.Changed, err = r.CreateFleet(q.F)
172 case "GetFleet":
173 out.Fleet, err = r.GetFleet(q.Name)
174 case "ListFleets":
175 out.Fleets, err = r.ListFleets()
176 case "AddFleetBox":
177 err = r.AddFleetBox(q.B)
178 case "SetFleetBoxToken":
179 err = r.SetFleetBoxToken(q.Fleet, q.Label, q.TokenHash)
180 case "SetFleetBoxTags":
181 err = r.SetFleetBoxTags(q.Fleet, q.Label, q.Tags)
182 case "SetFleetBoxStatus":
183 err = r.SetFleetBoxStatus(q.Fleet, q.Label, q.Status)
184 case "ListFleetBoxes":
185 out.FleetBoxes, err = r.ListFleetBoxes(q.Fleet)
186 case "FleetChannelAuth":
187 out.StringMap, err = r.FleetChannelAuth()
188 case "PutAccount":
189 err = r.PutAccount(q.IdValue, q.Sqid, q.Name)
190 case "DeleteAccount":
191 err = r.DeleteAccount(q.Sqid)
192 case "AccountBySqid":
193 out.Number64, out.Text, err = r.AccountBySqid(q.Sqid)
194 case "Accounts":
195 out.Accounts, err = r.Accounts()
196 case "ImportJournalHosts":
197 out.Hosts, err = r.ImportJournalHosts()
198 case "List":
199 out.Routes, err = r.List()
200 case "Get":
201 out.Route, err = r.Get(q.Host)
202 case "Delete":
203 err = r.Delete(q.Host)
204 case "Upsert":
205 err = r.Upsert(q.TValue)
206 case "SetHold":
207 err = r.SetHold(q.Host, q.Status, q.Op)
208 case "SetHoldIf":
209 out.Changed, err = r.SetHoldIf(q.Host, q.Status, q.Op, q.ExpectOp)
210 case "HandHold":
211 out.Changed, err = r.HandHold(q.Host, q.Status, q.ToOp, q.FromOp)
212 case "ReleaseHold":
213 out.Changed, err = r.ReleaseHold(q.Host, q.Op)
214 case "DeleteIfHold":
215 out.Changed, err = r.DeleteIfHold(q.Host, q.Op)
216 case "DeleteIfHoldWithTimers":
217 out.Changed, err = r.DeleteIfHoldWithTimers(q.Host, q.Op)
218 case "HoldRows":
219 out.Routes, err = r.HoldRows()
220 case "WithHoldsFrozen":
221 err = r.WithHoldsFrozen(func(held []Route) error { return callback(remoteResponse{Callback: "holds", Held: held}) })
222 case "SetAccount":
223 err = r.SetAccount(q.Host, q.Account)
224 case "SetChannel":
225 err = r.SetChannel(q.Host, q.Channel)
226 case "SetStatus":
227 err = r.SetStatus(q.Host, q.Status)
228 case "SetCaps":
229 err = r.SetCaps(q.Host, q.From, q.To)
230 case "SetDBPath":
231 err = r.SetDBPath(q.Host, q.From, q.To)
232 case "SetInstancePaths":
233 err = r.SetInstancePaths(q.Host, q.FromDB, q.FromSock, q.ToDB, q.ToSock)
234 case "SetBacking":
235 err = r.SetBacking(q.Host, q.Backing)
236 case "SetUnit":
237 err = r.SetUnit(q.Host, q.Unit)
238 case "SetReplication":
239 err = r.SetReplication(q.Host, q.Class)
240 case "SetUpstreams":
241 err = r.SetUpstreams(q.Host, q.Addr, q.Addrs, q.Health)
242 case "SetSteering":
243 err = r.SetSteering(q.Host, q.Steering)
244 case "SetUpdateSettings":
245 err = r.SetUpdateSettings(q.Host, q.UpdateSettings)
246 case "SetBuildState":
247 err = r.SetBuildState(q.Host, q.BuildState)
248 case "SetReplicas":
249 err = r.SetReplicas(q.Host, q.Replicas)
250 case "SetReplica":
251 err = r.SetReplica(q.Host, q.Replica)
252 case "SetGate":
253 err = r.SetGate(q.Host, q.Hash)
254 case "SetChannels":
255 err = r.SetChannels(q.Hosts, q.Channel)
256 case "SetEnvironment":
257 err = r.SetEnvironment(q.Host, q.Env)
258 case "SetTunnel":
259 err = r.SetTunnel(q.Host, q.Tunnel)
260 case "SetFleetBox":
261 err = r.SetFleetBox(q.Host, q.Label)
262 case "SetPlacement":
263 err = r.SetPlacement(q.Host, q.Target)
264 case "SetEnvironments":
265 err = r.SetEnvironments(q.Hosts, q.Env)
266 case "SetChannelsAndEnvironments":
267 err = r.SetChannelsAndEnvironments(q.Hosts, q.Channel, q.Env)
268 case "SetDNSStatus":
269 err = r.SetDNSStatus(q.Host, q.Status, q.CheckedAt)
270 case "SetCertExpiresAt":
271 err = r.SetCertExpiresAt(q.Host, q.At)
272 case "SetVersions":
273 err = r.SetVersions(q.Host, q.Ver, q.Prev)
274 case "SetGoodBuild":
275 err = r.SetGoodBuild(q.Host, q.ExpectGood, q.NextGood)
276 case "SetServingVersion":
277 err = r.SetServingVersion(q.Host, q.Ver)
278 case "SetHibernate":
279 err = r.SetHibernate(q.Host, q.On)
280 case "SetNextDue":
281 err = r.SetNextDue(q.Host, q.Due)
282 case "ClearNextDueIf":
283 err = r.ClearNextDueIf(q.Host, q.Due)
284 case "AlwaysOnWorkers":
285 out.Routes, err = r.AlwaysOnWorkers()
286 case "SetSeed":
287 err = r.SetSeed(q.Host, q.Seed)
288 case "SetArgs":
289 err = r.SetArgs(q.Host, q.Args)
290 case "SetWorkerLimits":
291 err = r.SetWorkerLimits(q.Host, q.Idle, q.MaxRun)
292 case "SetProvisioned":
293 err = r.SetProvisioned(q.Host, q.On)
294 case "SetStatusNamed":
295 err = r.SetStatusNamed(q.Host, q.On)
296 case "DueInstances":
297 out.Routes, err = r.DueInstances(q.Now)
298 case "ListAliases":
299 out.Aliases, err = r.ListAliases()
300 case "UpsertAlias":
301 err = r.UpsertAlias(q.A)
302 case "DeleteAlias":
303 err = r.DeleteAlias(q.Alias)
304 case "SetAliasDNSStatus":
305 err = r.SetAliasDNSStatus(q.Alias, q.Status, q.At)
306 case "SetAliasCertExpiresAt":
307 err = r.SetAliasCertExpiresAt(q.Alias, q.At)
308 case "ListWildcardDomains":
309 out.Wildcards, err = r.ListWildcardDomains()
310 case "UpsertWildcardDomain":
311 err = r.UpsertWildcardDomain(q.W)
312 case "DeleteWildcardDomain":
313 err = r.DeleteWildcardDomain(q.Host)
314 case "ListPaths":
315 out.Paths, err = r.ListPaths()
316 case "UpsertPath":
317 err = r.UpsertPath(q.P)
318 case "DeletePath":
319 err = r.DeletePath(q.Host, q.Prefix)
320 case "Fingerprint":
321 out.Text, err = r.Fingerprint()
322 case "SnapshotFingerprint":
323 out.Text, err = r.SnapshotFingerprint()
324 case "SnapshotTo":
325 err = r.SnapshotTo(q.Path)
326 case "UpsertTimer":
327 err = r.UpsertTimer(q.T)
328 case "ReplaceTimers":
329 err = r.ReplaceTimers(q.Host, q.Rows)
330 case "GetTimer":
331 out.Timer, err = r.GetTimer(q.Host, q.Name)
332 case "DeleteTimer":
333 err = r.DeleteTimer(q.Host, q.Name)
334 case "DeleteTimerRegistration":
335 err = r.DeleteTimerRegistration(q.Host, q.Name, q.Registration)
336 case "TimersFor":
337 out.Timers, err = r.TimersFor(q.Host)
338 case "DueTimers":
339 out.Timers, err = r.DueTimers(q.Now, q.Limit, q.ExcludeHosts)
340 case "DueUnheldTimers":
341 out.Timers, err = r.DueUnheldTimers(q.Now, q.Limit, q.ExcludeHosts)
342 case "FireTimerNow":
343 err = r.FireTimerNow(q.Host, q.Name, q.Now)
344 case "MarkTimerFired":
345 out.Changed, err = r.MarkTimerFired(q.Host, q.Name, q.Registration, q.At, q.Status, q.Ms, q.Attempts, q.NextAt, q.Due)
346 case "SetTimerStatus":
347 err = r.SetTimerStatus(q.Host, q.Name, q.Status)
348 case "CountTimers":
349 out.Number, err = r.CountTimers(q.Host, q.Kind)
350 case "PruneTimers":
351 out.Number, err = r.PruneTimers(q.Alive, q.DoneBefore)
352 case "DeleteTimersExcept":
353 out.Number, err = r.DeleteTimersExcept(q.Host, q.Kind, q.Keep)
354 case "EarliestTimers":
355 out.Times, err = r.EarliestTimers()
356 default:
357 err = errRemoteMethod
358 }
359 return
360}
361