mirror of
https://github.com/kubesphere/kubekey.git
synced 2025-12-26 01:22:51 +00:00
48 lines
1.4 KiB
Go
48 lines
1.4 KiB
Go
package executor
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
|
|
kkcorev1 "github.com/kubesphere/kubekey/api/core/v1"
|
|
"k8s.io/apimachinery/pkg/runtime"
|
|
|
|
_const "github.com/kubesphere/kubekey/v4/pkg/const"
|
|
"github.com/kubesphere/kubekey/v4/pkg/variable"
|
|
"github.com/kubesphere/kubekey/v4/pkg/variable/source"
|
|
)
|
|
|
|
// newTestOption creates a new test option struct for the given hosts.
|
|
// It sets up a fake client and playbook using the provided hosts, and initializes the variable subsystem
|
|
// with a memory-backed source. This is intended for use in unit tests.
|
|
func newTestOption(hosts []string) (*option, error) {
|
|
var err error
|
|
|
|
// Convert the slice of hostnames to an InventoryHost map (not strictly needed here, but kept for clarity).
|
|
inventoryHost := make(kkcorev1.InventoryHost)
|
|
for _, h := range hosts {
|
|
inventoryHost[h] = runtime.RawExtension{}
|
|
}
|
|
|
|
// Create a fake client and playbook for testing.
|
|
client, playbook, err := _const.NewTestPlaybook(hosts)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// Initialize the option struct with the fake client, playbook, and standard output for logging.
|
|
o := &option{
|
|
client: client,
|
|
playbook: playbook,
|
|
logOutput: os.Stdout,
|
|
}
|
|
|
|
// Initialize the variable subsystem using the memory-backed source.
|
|
o.variable, err = variable.New(context.TODO(), o.client, *o.playbook, source.MemorySource)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return o, nil
|
|
}
|