engine, gapi, lang, lib: Plumb through new local API
This is a new API that is similar in spirit and plumbing to the World API, but it intended for all local machine operations and will likely only ever have one implementation.
This commit is contained in:
@@ -28,6 +28,7 @@ import (
|
||||
|
||||
"github.com/purpleidea/mgmt/converger"
|
||||
"github.com/purpleidea/mgmt/engine"
|
||||
"github.com/purpleidea/mgmt/engine/local"
|
||||
engineUtil "github.com/purpleidea/mgmt/engine/util"
|
||||
"github.com/purpleidea/mgmt/pgraph"
|
||||
"github.com/purpleidea/mgmt/util/errwrap"
|
||||
@@ -47,6 +48,7 @@ type Engine struct {
|
||||
Hostname string
|
||||
|
||||
Converger *converger.Coordinator
|
||||
Local *local.API
|
||||
World engine.World
|
||||
|
||||
// Prefix is a unique directory prefix which can be used. It should be
|
||||
@@ -224,6 +226,7 @@ func (obj *Engine) Commit() error {
|
||||
Hostname: obj.Hostname,
|
||||
|
||||
//Converger: obj.Converger,
|
||||
Local: obj.Local,
|
||||
World: obj.World,
|
||||
Prefix: statePrefix,
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ import (
|
||||
|
||||
"github.com/purpleidea/mgmt/converger"
|
||||
"github.com/purpleidea/mgmt/engine"
|
||||
"github.com/purpleidea/mgmt/engine/local"
|
||||
engineUtil "github.com/purpleidea/mgmt/engine/util"
|
||||
"github.com/purpleidea/mgmt/pgraph"
|
||||
"github.com/purpleidea/mgmt/util/errwrap"
|
||||
@@ -46,6 +47,7 @@ type State struct {
|
||||
|
||||
//Converger *converger.Coordinator
|
||||
|
||||
Local *local.API
|
||||
World engine.World
|
||||
|
||||
// Prefix is a unique directory prefix which can be used. It should be
|
||||
@@ -239,6 +241,7 @@ func (obj *State) Init() error {
|
||||
return graph, nil // we return in a func so it's fresh!
|
||||
},
|
||||
|
||||
Local: obj.Local,
|
||||
World: obj.World,
|
||||
VarDir: obj.varDir,
|
||||
|
||||
|
||||
36
engine/local/local.go
Normal file
36
engine/local/local.go
Normal file
@@ -0,0 +1,36 @@
|
||||
// Mgmt
|
||||
// Copyright (C) 2013-2023+ James Shubin and the project contributors
|
||||
// Written by James Shubin <james@shubin.ca> and the project contributors
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
// Package local contains functions and interfaces that are shared between
|
||||
// functions and resources. It's similar to the "world" functionality, except
|
||||
// that it only involves local operations that stay within a single machine or
|
||||
// local mgmt instance.
|
||||
package local
|
||||
|
||||
import (
|
||||
"context"
|
||||
)
|
||||
|
||||
// API implements the base handle for all the methods in this package. If we
|
||||
// were going to have more than one implementation for all of these, then this
|
||||
// would be an interface instead, and different packages would implement it.
|
||||
// Since this is not the expectation for the local API, it's all self-contained.
|
||||
type API struct {
|
||||
Prefix string
|
||||
Debug bool
|
||||
Logf func(format string, v ...interface{})
|
||||
}
|
||||
@@ -22,6 +22,7 @@ import (
|
||||
"encoding/gob"
|
||||
"fmt"
|
||||
|
||||
"github.com/purpleidea/mgmt/engine/local"
|
||||
"github.com/purpleidea/mgmt/pgraph"
|
||||
"github.com/purpleidea/mgmt/util/errwrap"
|
||||
|
||||
@@ -135,6 +136,11 @@ type Init struct {
|
||||
|
||||
// TODO: GraphQuery offers an interface to query the resource graph.
|
||||
|
||||
// Local has a bunch of methods and properties which are useful for
|
||||
// operations on the local machine and for communication between
|
||||
// functions and resources.
|
||||
Local *local.API
|
||||
|
||||
// World provides a connection to the outside world. This is most often
|
||||
// used for communicating with the distributed database.
|
||||
World World
|
||||
|
||||
Reference in New Issue
Block a user