37 lines
1.6 KiB
Go
37 lines
1.6 KiB
Go
package main
|
|
|
|
// route-proxy handed to the provisioner (novox/hq ADR 0349 clause 12, issue 792): the module runs the SDK's provider
|
|
// helper for `route`, so a consumer of a route — a handed gitea reading `${bound:route:name-web}` — is told its public
|
|
// name from the entry in this module's bucket, the one its machine's client fills its files from.
|
|
//
|
|
// **It composes nothing.** A route's public name is the label its consumer chose joined to the node's public domain,
|
|
// which only the controller knows (the domain is placement), so the controller composes it and carries it in the
|
|
// consumer's plan entry (`names`); the helper copies it into the entry's values unchanged. There is no credential for
|
|
// a route and nothing to make: the traefik files stay the TypeScript adapter's, written from the contributions the
|
|
// mesh still gives it.
|
|
|
|
import (
|
|
"git.novox.be/novox/mesh-sdk/go/provider"
|
|
)
|
|
|
|
// ProvisionName is what route-proxy provides, as its manifest says.
|
|
const ProvisionName = "route"
|
|
|
|
// ModuleName is this module.
|
|
const ModuleName = "route-proxy"
|
|
|
|
// newProvider is route-proxy answering its consumers over bus on node: the route, served as the manifest serves it
|
|
// (nothing of its own), with no credential, and nothing to make or retire for a consumer.
|
|
func newProvider(node string, bus provider.Bus, logf func(string, ...any)) *provider.Provider {
|
|
return provider.New(provider.Options{
|
|
Node: node,
|
|
Module: ModuleName,
|
|
Offers: map[string]provider.Offer{ProvisionName: {
|
|
Credential: provider.NoCredential,
|
|
Serves: map[string]any{},
|
|
}},
|
|
Bus: bus,
|
|
Logf: logf,
|
|
})
|
|
}
|