pool: Reddo component-like fields
This commit is contained in:
parent
99983ee6db
commit
337a5fbeba
48 changed files with 291 additions and 163 deletions
|
|
@ -15,9 +15,10 @@ import (
|
|||
// Control represents the running control server.
|
||||
type Control struct {
|
||||
component.Base
|
||||
|
||||
Servables []component.Servable
|
||||
Cronables []component.Cronable
|
||||
Dependencies struct {
|
||||
Servables []component.Servable
|
||||
Cronables []component.Cronable
|
||||
}
|
||||
}
|
||||
|
||||
var (
|
||||
|
|
|
|||
|
|
@ -16,8 +16,9 @@ import (
|
|||
|
||||
type Cron struct {
|
||||
component.Base
|
||||
|
||||
Tasks []component.Cronable
|
||||
Dependencies struct {
|
||||
Tasks []component.Cronable
|
||||
}
|
||||
}
|
||||
|
||||
// Listen returns a channel that listens for triggers in the current process.
|
||||
|
|
@ -51,11 +52,11 @@ func (control *Cron) Listen(ctx context.Context) (<-chan struct{}, func()) {
|
|||
// Once should not be called concurrently with Cron.
|
||||
func (control *Cron) Once(ctx context.Context) {
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(len(control.Tasks))
|
||||
wg.Add(len(control.Dependencies.Tasks))
|
||||
|
||||
zerolog.Ctx(ctx).Info().Time("time", time.Now()).Msg("Starting Cron")
|
||||
|
||||
for _, task := range control.Tasks {
|
||||
for _, task := range control.Dependencies.Tasks {
|
||||
go func(task component.Cronable) {
|
||||
defer wg.Done()
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,9 @@ import (
|
|||
|
||||
type UpdateInstanceList struct {
|
||||
component.Base
|
||||
Home *Home
|
||||
Dependencies struct {
|
||||
Home *Home
|
||||
}
|
||||
}
|
||||
|
||||
var (
|
||||
|
|
@ -20,18 +22,20 @@ func (*UpdateInstanceList) TaskName() string {
|
|||
}
|
||||
|
||||
func (ul *UpdateInstanceList) Cron(ctx context.Context) error {
|
||||
names, err := ul.Home.instanceMap(ctx)
|
||||
names, err := ul.Dependencies.Home.instanceMap(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
ul.Home.instanceNames.Set(names)
|
||||
ul.Dependencies.Home.instanceNames.Set(names)
|
||||
return nil
|
||||
}
|
||||
|
||||
type UpdateRedirect struct {
|
||||
component.Base
|
||||
Home *Home
|
||||
Dependencies struct {
|
||||
Home *Home
|
||||
}
|
||||
}
|
||||
|
||||
var (
|
||||
|
|
@ -43,18 +47,20 @@ func (ur *UpdateRedirect) TaskName() string {
|
|||
}
|
||||
|
||||
func (ur *UpdateRedirect) Cron(ctx context.Context) error {
|
||||
redirect, err := ur.Home.loadRedirect(ctx)
|
||||
redirect, err := ur.Dependencies.Home.loadRedirect(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
ur.Home.redirect.Set(&redirect)
|
||||
ur.Dependencies.Home.redirect.Set(&redirect)
|
||||
return nil
|
||||
}
|
||||
|
||||
type UpdateHome struct {
|
||||
component.Base
|
||||
Home *Home
|
||||
Dependencies struct {
|
||||
Home *Home
|
||||
}
|
||||
}
|
||||
|
||||
var (
|
||||
|
|
@ -66,11 +72,11 @@ func (ur *UpdateHome) TaskName() string {
|
|||
}
|
||||
|
||||
func (ur *UpdateHome) Cron(ctx context.Context) error {
|
||||
bytes, err := ur.Home.homeRender(ctx)
|
||||
bytes, err := ur.Dependencies.Home.homeRender(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
ur.Home.homeBytes.Set(bytes)
|
||||
ur.Dependencies.Home.homeBytes.Set(bytes)
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,8 +12,9 @@ import (
|
|||
|
||||
type Home struct {
|
||||
component.Base
|
||||
|
||||
Instances *instances.Instances
|
||||
Dependencies struct {
|
||||
Instances *instances.Instances
|
||||
}
|
||||
|
||||
redirect lazy.Lazy[*Redirect]
|
||||
instanceNames lazy.Lazy[map[string]struct{}]
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import (
|
|||
)
|
||||
|
||||
func (home *Home) instanceMap(ctx context.Context) (map[string]struct{}, error) {
|
||||
wissKIs, err := home.Instances.All(ctx)
|
||||
wissKIs, err := home.Dependencies.Instances.All(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -37,7 +37,7 @@ func (home *Home) homeRender(ctx context.Context) ([]byte, error) {
|
|||
context.SelfRedirect = home.Config.SelfRedirect.String()
|
||||
|
||||
// find all the WissKIs
|
||||
wissKIs, err := home.Instances.All(ctx)
|
||||
wissKIs, err := home.Dependencies.Instances.All(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ func (info *Info) ingredients(r *http.Request) (cp ingredientsContext, err error
|
|||
cp.Time = time.Now().UTC()
|
||||
|
||||
// find the instance itself!
|
||||
instance, err := info.Instances.WissKI(r.Context(), mux.Vars(r)["slug"])
|
||||
instance, err := info.Dependencies.Instances.WissKI(r.Context(), mux.Vars(r)["slug"])
|
||||
if err == instances.ErrWissKINotFound {
|
||||
return cp, httpx.ErrNotFound
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ func (info *Info) Status(ctx context.Context, QuickInformation bool) (target sta
|
|||
|
||||
group.Go(func() error {
|
||||
// list all the instances
|
||||
all, err := info.Instances.All(ctx)
|
||||
all, err := info.Dependencies.Instances.All(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
@ -63,7 +63,7 @@ func (info *Info) Status(ctx context.Context, QuickInformation bool) (target sta
|
|||
flags := component.FetcherFlags{
|
||||
Context: ctx,
|
||||
}
|
||||
for _, o := range info.Fetchers {
|
||||
for _, o := range info.Dependencies.Fetchers {
|
||||
o := o
|
||||
group.Go(func() error {
|
||||
return o.Fetch(flags, &target)
|
||||
|
|
|
|||
|
|
@ -16,13 +16,15 @@ import (
|
|||
|
||||
type Info struct {
|
||||
component.Base
|
||||
Dependencies struct {
|
||||
Fetchers []component.DistilleryFetcher
|
||||
|
||||
Exporter *exporter.Exporter
|
||||
Instances *instances.Instances
|
||||
SnapshotsLog *logger.Logger
|
||||
}
|
||||
|
||||
Analytics *lazy.PoolAnalytics
|
||||
Fetchers []component.DistilleryFetcher
|
||||
|
||||
Exporter *exporter.Exporter
|
||||
Instances *instances.Instances
|
||||
SnapshotsLog *logger.Logger
|
||||
}
|
||||
|
||||
var (
|
||||
|
|
@ -33,7 +35,9 @@ var (
|
|||
func (*Info) Routes() []string { return []string{"/dis/"} }
|
||||
|
||||
func (info *Info) Handler(ctx context.Context, route string) (handler http.Handler, err error) {
|
||||
|
||||
router := httprouter.New()
|
||||
|
||||
{
|
||||
socket := &httpx.WebSocket{
|
||||
Context: ctx,
|
||||
|
|
@ -47,41 +51,41 @@ func (info *Info) Handler(ctx context.Context, route string) (handler http.Handl
|
|||
|
||||
// handle everything
|
||||
router.HandlerFunc(http.MethodGet, route, func(w http.ResponseWriter, r *http.Request) {
|
||||
http.Redirect(w, r, "index", http.StatusTemporaryRedirect)
|
||||
http.Redirect(w, r, route+"index", http.StatusTemporaryRedirect)
|
||||
})
|
||||
|
||||
// add a handler for the index page
|
||||
router.Handler(http.MethodGet, "index", httpx.HTMLHandler[indexContext]{
|
||||
router.Handler(http.MethodGet, route+"index", httpx.HTMLHandler[indexContext]{
|
||||
Handler: info.index,
|
||||
Template: indexTemplate,
|
||||
})
|
||||
|
||||
// add a handler for the component page
|
||||
router.Handler(http.MethodGet, "components", httpx.HTMLHandler[componentContext]{
|
||||
router.Handler(http.MethodGet, route+"components", httpx.HTMLHandler[componentContext]{
|
||||
Handler: info.components,
|
||||
Template: componentsTemplate,
|
||||
})
|
||||
|
||||
// add a handler for the component page
|
||||
router.Handler(http.MethodGet, "ingredients/{slug}", httpx.HTMLHandler[ingredientsContext]{
|
||||
router.Handler(http.MethodGet, route+"ingredients/:slug", httpx.HTMLHandler[ingredientsContext]{
|
||||
Handler: info.ingredients,
|
||||
Template: ingredientsTemplate,
|
||||
})
|
||||
|
||||
// add a handler for the instance page
|
||||
router.Handler(http.MethodGet, "instance/{slug}", httpx.HTMLHandler[instanceContext]{
|
||||
router.Handler(http.MethodGet, route+"instance/:slug", httpx.HTMLHandler[instanceContext]{
|
||||
Handler: info.instance,
|
||||
Template: instanceTemplate,
|
||||
})
|
||||
|
||||
router.Handler(http.MethodPost, "api/login", httpx.RedirectHandler(func(r *http.Request) (string, int, error) {
|
||||
router.Handler(http.MethodPost, route+"api/login", httpx.RedirectHandler(func(r *http.Request) (string, int, error) {
|
||||
// parse the form
|
||||
if err := r.ParseForm(); err != nil {
|
||||
return "", 0, err
|
||||
}
|
||||
|
||||
// get the instance
|
||||
instance, err := info.Instances.WissKI(r.Context(), r.PostFormValue("slug"))
|
||||
instance, err := info.Dependencies.Instances.WissKI(r.Context(), r.PostFormValue("slug"))
|
||||
if err != nil {
|
||||
return "", 0, httpx.ErrNotFound
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ type instanceContext struct {
|
|||
|
||||
func (info *Info) instance(r *http.Request) (is instanceContext, err error) {
|
||||
// find the instance itself!
|
||||
instance, err := info.Instances.WissKI(r.Context(), mux.Vars(r)["slug"])
|
||||
instance, err := info.Dependencies.Instances.WissKI(r.Context(), mux.Vars(r)["slug"])
|
||||
if err == instances.ErrWissKINotFound {
|
||||
return is, httpx.ErrNotFound
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ type InstanceAction struct {
|
|||
var socketInstanceActions = map[string]InstanceAction{
|
||||
"snapshot": {
|
||||
HandleInteractive: func(ctx context.Context, info *Info, instance *wisski.WissKI, out io.Writer, params ...string) error {
|
||||
return info.Exporter.MakeExport(
|
||||
return info.Dependencies.Exporter.MakeExport(
|
||||
ctx,
|
||||
out,
|
||||
exporter.ExportTask{
|
||||
|
|
@ -78,7 +78,7 @@ func (info *Info) handleInstanceAction(conn httpx.WebSocketConnection, action In
|
|||
}
|
||||
|
||||
// resolve the instance
|
||||
instance, err := info.Instances.WissKI(conn.Context(), string(slug.Bytes))
|
||||
instance, err := info.Dependencies.Instances.WissKI(conn.Context(), string(slug.Bytes))
|
||||
if err != nil {
|
||||
<-conn.WriteText("Instance not found")
|
||||
return
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ func (control *Control) Server(ctx context.Context, progress io.Writer) (*http.S
|
|||
mux := http.NewServeMux()
|
||||
|
||||
// add all the servable routes!
|
||||
for _, s := range control.Servables {
|
||||
for _, s := range control.Dependencies.Servables {
|
||||
for _, route := range s.Routes() {
|
||||
zerolog.Ctx(ctx).Info().Str("component", s.Name()).Str("route", route).Msg("mounting route")
|
||||
handler, err := s.Handler(ctx, route)
|
||||
|
|
|
|||
|
|
@ -36,6 +36,17 @@
|
|||
</td>
|
||||
</tr>
|
||||
{{ end }}
|
||||
{{ range $name, $comp := .DCFields }}
|
||||
<tr>
|
||||
<td>Component Pointer</td>
|
||||
<td>
|
||||
<code>Dependencies/{{ $name }}</code>
|
||||
</td>
|
||||
<td>
|
||||
<code><a href="#{{ $comp }}">{{ $comp }}</a></code>
|
||||
</td>
|
||||
</tr>
|
||||
{{ end }}
|
||||
{{ range $name, $iface := .IFields }}
|
||||
<tr>
|
||||
<td>Interface Slice</td>
|
||||
|
|
@ -47,6 +58,17 @@
|
|||
</td>
|
||||
</tr>
|
||||
{{ end }}
|
||||
{{ range $name, $iface := .DIFields }}
|
||||
<tr>
|
||||
<td>Interface Slice</td>
|
||||
<td>
|
||||
<code>Dependencies/{{ $name }}</code>
|
||||
</td>
|
||||
<td>
|
||||
<code><a href="#{{ $iface }}">[]{{ $iface }}</a></code>
|
||||
</td>
|
||||
</tr>
|
||||
{{ end }}
|
||||
{{ range $name, $sig := $comp.Methods }}
|
||||
<tr>
|
||||
<td>
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ func (backup *Backup) run(ctx context.Context, progress io.Writer, exporter *Exp
|
|||
defer done()
|
||||
|
||||
// create a new status display
|
||||
backups := exporter.Backupable
|
||||
backups := exporter.Dependencies.Backupable
|
||||
backup.ComponentErrors = make(map[string]error, len(backups))
|
||||
|
||||
// Component backup tasks
|
||||
|
|
@ -125,7 +125,7 @@ func (backup *Backup) run(ctx context.Context, progress io.Writer, exporter *Exp
|
|||
}
|
||||
|
||||
// list all instances
|
||||
wissKIs, err := exporter.Instances.All(ctx)
|
||||
wissKIs, err := exporter.Dependencies.Instances.All(ctx)
|
||||
if err != nil {
|
||||
backup.InstanceListErr = err
|
||||
return nil
|
||||
|
|
|
|||
|
|
@ -18,13 +18,14 @@ import (
|
|||
// Exporter manages snapshots and backups
|
||||
type Exporter struct {
|
||||
component.Base
|
||||
Dependencies struct {
|
||||
SQL *sql.SQL
|
||||
Instances *instances.Instances
|
||||
ExporterLogger *logger.Logger
|
||||
|
||||
SQL *sql.SQL
|
||||
Instances *instances.Instances
|
||||
ExporterLogger *logger.Logger
|
||||
|
||||
Snapshotable []component.Snapshotable
|
||||
Backupable []component.Backupable
|
||||
Snapshotable []component.Snapshotable
|
||||
Backupable []component.Backupable
|
||||
}
|
||||
}
|
||||
|
||||
// Path returns the path that contains all snapshot related data.
|
||||
|
|
|
|||
|
|
@ -11,7 +11,9 @@ import (
|
|||
|
||||
type Pathbuilders struct {
|
||||
component.Base
|
||||
Instances *instances.Instances
|
||||
Dependencies struct {
|
||||
Instances *instances.Instances
|
||||
}
|
||||
}
|
||||
|
||||
var (
|
||||
|
|
@ -24,7 +26,7 @@ func (Pathbuilders) SnapshotName() string { return "pathbuilders" }
|
|||
|
||||
func (pbs *Pathbuilders) Snapshot(wisski models.Instance, scontext component.StagingContext) error {
|
||||
return scontext.AddDirectory(".", func(ctx context.Context) error {
|
||||
builders, err := pbs.Instances.Instance(ctx, wisski).Pathbuilder().GetAll(ctx, nil)
|
||||
builders, err := pbs.Dependencies.Instances.Instance(ctx, wisski).Pathbuilder().GetAll(ctx, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ func (exporter *Exporter) MakeExport(ctx context.Context, progress io.Writer, ta
|
|||
// write out the log entry
|
||||
entry.Path = stagingDir
|
||||
entry.Packed = false
|
||||
exporter.ExporterLogger.Add(ctx, entry)
|
||||
exporter.Dependencies.ExporterLogger.Add(ctx, entry)
|
||||
|
||||
logging.ProgressF(progress, ctx, "Wrote %s\n", stagingDir)
|
||||
return nil
|
||||
|
|
@ -159,7 +159,7 @@ func (exporter *Exporter) MakeExport(ctx context.Context, progress io.Writer, ta
|
|||
logging.LogMessage(progress, ctx, "Writing Log Entry")
|
||||
entry.Path = archivePath
|
||||
entry.Packed = true
|
||||
exporter.ExporterLogger.Add(ctx, entry)
|
||||
exporter.Dependencies.ExporterLogger.Add(ctx, entry)
|
||||
|
||||
// and we're done!
|
||||
return nil
|
||||
|
|
|
|||
|
|
@ -14,8 +14,9 @@ import (
|
|||
// Logger is responsible for logging backups and snapshots
|
||||
type Logger struct {
|
||||
component.Base
|
||||
|
||||
SQL *sql.SQL
|
||||
Dependencies struct {
|
||||
SQL *sql.SQL
|
||||
}
|
||||
}
|
||||
|
||||
// For retrieves (and prunes) the ExportLog.
|
||||
|
|
@ -35,7 +36,7 @@ func (log *Logger) For(ctx context.Context, slug string) (exports []models.Expor
|
|||
// Log retrieves (and prunes) all entries in the snapshot log.
|
||||
func (log *Logger) Log(ctx context.Context) ([]models.Export, error) {
|
||||
// query the table!
|
||||
table, err := log.SQL.QueryTable(ctx, false, models.ExportTable)
|
||||
table, err := log.Dependencies.SQL.QueryTable(ctx, false, models.ExportTable)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -67,7 +68,7 @@ func (log *Logger) Log(ctx context.Context) ([]models.Export, error) {
|
|||
// AddToExportLog adds the provided export to the log.
|
||||
func (log *Logger) Add(ctx context.Context, export models.Export) error {
|
||||
// find the table
|
||||
table, err := log.SQL.QueryTable(ctx, false, models.ExportTable)
|
||||
table, err := log.Dependencies.SQL.QueryTable(ctx, false, models.ExportTable)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,6 +52,6 @@ func (exporter *Exporter) PruneExports(ctx context.Context, progress io.Writer)
|
|||
}
|
||||
|
||||
// prune the snapshot log!
|
||||
_, err = exporter.ExporterLogger.Log(ctx)
|
||||
_, err = exporter.Dependencies.ExporterLogger.Log(ctx)
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ func (snapshot *Snapshot) makeParts(ctx context.Context, progress io.Writer, sna
|
|||
defer st.Stop()
|
||||
|
||||
// get all the components
|
||||
comps := collection.FilterClone(snapshots.Snapshotable, func(sc component.Snapshotable) bool {
|
||||
comps := collection.FilterClone(snapshots.Dependencies.Snapshotable, func(sc component.Snapshotable) bool {
|
||||
return sc.SnapshotNeedsRunning() == needsRunning
|
||||
})
|
||||
|
||||
|
|
|
|||
|
|
@ -19,9 +19,10 @@ import (
|
|||
// Instances manages multiple WissKI Instances.
|
||||
type Instances struct {
|
||||
component.Base
|
||||
|
||||
Malt *malt.Malt
|
||||
SQL *sql.SQL
|
||||
Dependencies struct {
|
||||
Malt *malt.Malt
|
||||
SQL *sql.SQL
|
||||
}
|
||||
}
|
||||
|
||||
func (instances *Instances) Path() string {
|
||||
|
|
@ -38,13 +39,13 @@ var errSQL = exit.Error{
|
|||
|
||||
// use uses the non-nil wisski instance with this instances
|
||||
func (instances *Instances) use(wisski *wisski.WissKI) {
|
||||
wisski.Liquid.Malt = instances.Malt
|
||||
wisski.Liquid.Malt = instances.Dependencies.Malt
|
||||
}
|
||||
|
||||
// WissKI returns the WissKI with the provided slug, if it exists.
|
||||
// It the WissKI does not exist, returns ErrWissKINotFound.
|
||||
func (instances *Instances) WissKI(ctx context.Context, slug string) (wissKI *wisski.WissKI, err error) {
|
||||
sql := instances.SQL
|
||||
sql := instances.Dependencies.SQL
|
||||
if err := sql.WaitQueryTable(ctx); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -84,7 +85,7 @@ func (instances *Instances) Instance(ctx context.Context, instance models.Instan
|
|||
// Has checks if a WissKI with the provided slug exists inside the database.
|
||||
// It does not perform any checks on the WissKI itself.
|
||||
func (instances *Instances) Has(ctx context.Context, slug string) (ok bool, err error) {
|
||||
sql := instances.SQL
|
||||
sql := instances.Dependencies.SQL
|
||||
if err := sql.WaitQueryTable(ctx); err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
|
@ -128,7 +129,7 @@ func (instances *Instances) Load(ctx context.Context, slugs ...string) ([]*wissk
|
|||
|
||||
// find finds instances based on the provided query
|
||||
func (instances *Instances) find(ctx context.Context, order bool, query func(table *gorm.DB) *gorm.DB) (results []*wisski.WissKI, err error) {
|
||||
sql := instances.SQL
|
||||
sql := instances.Dependencies.SQL
|
||||
if err := sql.WaitQueryTable(ctx); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,8 +12,8 @@ import (
|
|||
type Malt struct {
|
||||
component.Base
|
||||
|
||||
TS *triplestore.Triplestore
|
||||
SQL *sql.SQL
|
||||
Meta *meta.Meta
|
||||
ExporterLog *logger.Logger
|
||||
TS *triplestore.Triplestore `auto:"true"`
|
||||
SQL *sql.SQL `auto:"true"`
|
||||
Meta *meta.Meta `auto:"true"`
|
||||
ExporterLog *logger.Logger `auto:"true"`
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,8 +10,9 @@ import (
|
|||
// Component meta is responsible for managing metadata per WissKI Instance
|
||||
type Meta struct {
|
||||
component.Base
|
||||
|
||||
SQL *sql.SQL
|
||||
Dependencies struct {
|
||||
SQL *sql.SQL
|
||||
}
|
||||
|
||||
sl sync.Mutex
|
||||
sc map[string]*Storage
|
||||
|
|
@ -40,7 +41,7 @@ func (meta *Meta) Storage(slug string) *Storage {
|
|||
// create a new storage
|
||||
meta.sc[slug] = &Storage{
|
||||
Slug: slug,
|
||||
sql: meta.SQL,
|
||||
sql: meta.Dependencies.SQL,
|
||||
}
|
||||
return meta.sc[slug]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ func (resolver *Resolver) Cron(ctx context.Context) error {
|
|||
// AllPrefixes returns a list of all prefixes from the server.
|
||||
// Prefixes may be cached on the server
|
||||
func (resolver *Resolver) AllPrefixes(ctx context.Context) (map[string]string, error) {
|
||||
instances, err := resolver.Instances.All(ctx)
|
||||
instances, err := resolver.Dependencies.Instances.All(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,8 +17,9 @@ import (
|
|||
|
||||
type Resolver struct {
|
||||
component.Base
|
||||
|
||||
Instances *instances.Instances
|
||||
Dependencies struct {
|
||||
Instances *instances.Instances
|
||||
}
|
||||
|
||||
prefixes lazy.Lazy[map[string]string] // cached prefixes (from the server)
|
||||
RefreshInterval time.Duration
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ func (ssh2 *SSH2) handleAuth(ctx ssh.Context, key ssh.PublicKey) bool {
|
|||
|
||||
// grab permissions for each instance
|
||||
{
|
||||
instances, err := ssh2.Instances.All(ctx)
|
||||
instances, err := ssh2.Dependencies.Instances.All(ctx)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,9 @@ import (
|
|||
|
||||
type SSH2 struct {
|
||||
component.Base
|
||||
Instances *instances.Instances
|
||||
Dependencies struct {
|
||||
Instances *instances.Instances
|
||||
}
|
||||
}
|
||||
|
||||
var (
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue