79 lines
1.4 KiB
Go
79 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/goccy/go-yaml"
|
|
"github.com/spf13/cobra"
|
|
"log"
|
|
"os"
|
|
)
|
|
|
|
type Options struct {
|
|
cni string
|
|
policyType string
|
|
}
|
|
|
|
func execute(files []string, options *Options) error {
|
|
if len(files) == 0 {
|
|
return fmt.Errorf("File expected")
|
|
}
|
|
config := &Config{}
|
|
for _, file := range files {
|
|
log.Printf("LOADING %s\n", file)
|
|
configNew, err := LoadConfig(file)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
config.Update(configNew)
|
|
err = config.Validate()
|
|
if err != nil {
|
|
return fmt.Errorf("Error loading config %s: %w", file, err)
|
|
}
|
|
log.Printf("Namespaces %v", config.Namespaces)
|
|
}
|
|
|
|
policyTemplates, err := NewPolicyTemplates()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
var generator Generator
|
|
generator = NetworkPolicyGenerrator{
|
|
config: config,
|
|
policyTemplates: policyTemplates,
|
|
}
|
|
err = Generate(os.Stdout, generator, config)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func main() {
|
|
|
|
val := map[string]string{
|
|
"abc": "1",
|
|
}
|
|
data, err := yaml.Marshal(val)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
log.Printf("val %s", string(data))
|
|
//os.Exit(1)
|
|
|
|
options := Options{
|
|
cni: "cilium",
|
|
policyType: "netpol",
|
|
}
|
|
cmd := &cobra.Command{
|
|
Use: "policygen",
|
|
Short: "Generate network policies",
|
|
Long: "Generated policies based on a more compact representation of topology",
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
return execute(args, &options)
|
|
},
|
|
}
|
|
|
|
cmd.Execute()
|
|
}
|