feat: add support for extra plugins in cluster provider (#504)

* feat: add support for extra plugins in cluster provider

Signed-off-by: Nianyu Shen <xiaoyu9964@gmail.com>

* add cluster reset event

Signed-off-by: Nianyu Shen <xiaoyu9964@gmail.com>

---------

Signed-off-by: Nianyu Shen <xiaoyu9964@gmail.com>
This commit is contained in:
Nianyu Shen 2024-09-27 00:52:34 -07:00 committed by GitHub
parent bf4c177d3c
commit 541728fa22
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -13,6 +13,8 @@ import (
const clusterProviderCloudConfigFile = "/usr/local/cloud-config/cluster.kairos.yaml"
const EventClusterReset pluggable.EventType = "cluster.reset"
// ClusterProvider returns a yip configuration that configures a Kubernetes engine. The yip config may use any elemental
// stages after initramfs.
type ClusterProvider func(cluster Cluster) yip.YipConfig
@ -79,11 +81,16 @@ func (p ClusterPlugin) onBoot(event *pluggable.Event) pluggable.EventResponse {
return response
}
func (p ClusterPlugin) Run() error {
return pluggable.NewPluginFactory(
pluggable.FactoryPlugin{
func (p ClusterPlugin) Run(extraPlugins ...pluggable.FactoryPlugin) error {
plugins := []pluggable.FactoryPlugin{
{
EventType: bus.EventBoot,
PluginHandler: p.onBoot,
},
).Run(pluggable.EventType(os.Args[1]), os.Stdin, os.Stdout)
}
plugins = append(plugins, extraPlugins...)
f := pluggable.NewPluginFactory(plugins...)
return f.Run(pluggable.EventType(os.Args[1]), os.Stdin, os.Stdout)
}