lang: funcs: core: Move world API functions
Some of the core functions interact with the remote "world" API. Move them all into the same package.
This commit is contained in:
@@ -6,9 +6,10 @@
|
|||||||
# time ./mgmt run --hostname h4 --seeds http://127.0.0.1:2379 --client-urls http://127.0.0.1:2385 --server-urls http://127.0.0.1:2386 --tmp-prefix --no-pgp lang --lang examples/lang/exchange0.mcl
|
# time ./mgmt run --hostname h4 --seeds http://127.0.0.1:2379 --client-urls http://127.0.0.1:2385 --server-urls http://127.0.0.1:2386 --tmp-prefix --no-pgp lang --lang examples/lang/exchange0.mcl
|
||||||
|
|
||||||
import "sys"
|
import "sys"
|
||||||
|
import "world"
|
||||||
|
|
||||||
$rand = random1(8)
|
$rand = random1(8)
|
||||||
$exchanged = exchange("keyns", $rand)
|
$exchanged = world.exchange("keyns", $rand)
|
||||||
|
|
||||||
file "/tmp/mgmt/exchange-${sys.hostname()}" {
|
file "/tmp/mgmt/exchange-${sys.hostname()}" {
|
||||||
content => template("Found: {{ . }}\n", $exchanged),
|
content => template("Found: {{ . }}\n", $exchanged),
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import "sys"
|
import "sys"
|
||||||
|
import "world"
|
||||||
|
|
||||||
# here are all the possible options:
|
# here are all the possible options:
|
||||||
#$opts = struct{strategy => "rr", max => 3, reuse => false, ttl => 10,}
|
#$opts = struct{strategy => "rr", max => 3, reuse => false, ttl => 10,}
|
||||||
@@ -10,10 +11,10 @@ import "sys"
|
|||||||
$opts = struct{strategy => "rr", max => 2, ttl => 10,}
|
$opts = struct{strategy => "rr", max => 2, ttl => 10,}
|
||||||
|
|
||||||
# schedule in a particular namespace with options:
|
# schedule in a particular namespace with options:
|
||||||
$set = schedule("xsched", $opts)
|
$set = world.schedule("xsched", $opts)
|
||||||
|
|
||||||
# and if you want, you can omit the options entirely:
|
# and if you want, you can omit the options entirely:
|
||||||
#$set = schedule("xsched")
|
#$set = world.schedule("xsched")
|
||||||
|
|
||||||
file "/tmp/mgmt/scheduled-${sys.hostname()}" {
|
file "/tmp/mgmt/scheduled-${sys.hostname()}" {
|
||||||
content => template("set: {{ . }}\n", $set),
|
content => template("set: {{ . }}\n", $set),
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
import "fmt"
|
import "fmt"
|
||||||
|
import "world"
|
||||||
|
|
||||||
$ns = "estate"
|
$ns = "estate"
|
||||||
$exchanged = kvlookup($ns)
|
$exchanged = world.kvlookup($ns)
|
||||||
$state = maplookup($exchanged, $hostname, "default")
|
$state = maplookup($exchanged, $hostname, "default")
|
||||||
|
|
||||||
exec "exec0" {
|
exec "exec0" {
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
|
import "world"
|
||||||
|
|
||||||
$ns = "estate"
|
$ns = "estate"
|
||||||
$exchanged = kvlookup($ns)
|
$exchanged = world.kvlookup($ns)
|
||||||
|
|
||||||
$state = maplookup($exchanged, $hostname, "default")
|
$state = maplookup($exchanged, $hostname, "default")
|
||||||
|
|
||||||
|
|||||||
@@ -26,4 +26,5 @@ import (
|
|||||||
_ "github.com/purpleidea/mgmt/lang/funcs/core/os"
|
_ "github.com/purpleidea/mgmt/lang/funcs/core/os"
|
||||||
_ "github.com/purpleidea/mgmt/lang/funcs/core/strings"
|
_ "github.com/purpleidea/mgmt/lang/funcs/core/strings"
|
||||||
_ "github.com/purpleidea/mgmt/lang/funcs/core/sys"
|
_ "github.com/purpleidea/mgmt/lang/funcs/core/sys"
|
||||||
|
_ "github.com/purpleidea/mgmt/lang/funcs/core/world"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
package core // TODO: should this be in its own individual package?
|
package coreworld
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@@ -28,7 +28,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
funcs.Register("exchange", func() interfaces.Func { return &ExchangeFunc{} }) // must register the func and name
|
funcs.ModuleRegister(moduleName, "exchange", func() interfaces.Func { return &ExchangeFunc{} })
|
||||||
}
|
}
|
||||||
|
|
||||||
// ExchangeFunc is special function which returns all the values of a given key
|
// ExchangeFunc is special function which returns all the values of a given key
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
package core // TODO: should this be in its own individual package?
|
package coreworld
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@@ -28,7 +28,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
funcs.Register("kvlookup", func() interfaces.Func { return &KVLookupFunc{} }) // must register the func and name
|
funcs.ModuleRegister(moduleName, "kvlookup", func() interfaces.Func { return &KVLookupFunc{} })
|
||||||
}
|
}
|
||||||
|
|
||||||
// KVLookupFunc is special function which returns all the values of a given key
|
// KVLookupFunc is special function which returns all the values of a given key
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
// kill h2
|
// kill h2
|
||||||
// kill h1... all done!
|
// kill h1... all done!
|
||||||
|
|
||||||
package core // TODO: should this be in its own individual package?
|
package coreworld
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@@ -47,7 +47,7 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
funcs.Register("schedule", func() interfaces.Func { return &SchedulePolyFunc{} }) // must register the func and name
|
funcs.ModuleRegister(moduleName, "schedule", func() interfaces.Func { return &SchedulePolyFunc{} })
|
||||||
}
|
}
|
||||||
|
|
||||||
// SchedulePolyFunc is special function which determines where code should run
|
// SchedulePolyFunc is special function which determines where code should run
|
||||||
23
lang/funcs/core/world/world.go
Normal file
23
lang/funcs/core/world/world.go
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
// Mgmt
|
||||||
|
// Copyright (C) 2013-2018+ 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 coreworld
|
||||||
|
|
||||||
|
const (
|
||||||
|
// moduleName is the prefix given to all the functions in this module.
|
||||||
|
moduleName = "world"
|
||||||
|
)
|
||||||
Reference in New Issue
Block a user