|  |  |  | @ -3,6 +3,7 @@ package main | 
			
		
	
		
			
				
					|  |  |  |  | import ( | 
			
		
	
		
			
				
					|  |  |  |  | 	"context" | 
			
		
	
		
			
				
					|  |  |  |  | 	"os" | 
			
		
	
		
			
				
					|  |  |  |  | 	"time" | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	"github.com/spf13/cobra" | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -10,6 +11,12 @@ import ( | 
			
		
	
		
			
				
					|  |  |  |  | 	"git.jpi.io/amery/jpictl/pkg/dns" | 
			
		
	
		
			
				
					|  |  |  |  | ) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | const ( | 
			
		
	
		
			
				
					|  |  |  |  | 	// DNSSyncTimeout specifies how long are we willing to wait for a DNS
 | 
			
		
	
		
			
				
					|  |  |  |  | 	// synchronization
 | 
			
		
	
		
			
				
					|  |  |  |  | 	DNSSyncTimeout = 10 * time.Second | 
			
		
	
		
			
				
					|  |  |  |  | ) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | func newDNSManager(m *cluster.Cluster, provider dns.Provider) (*dns.Manager, error) { | 
			
		
	
		
			
				
					|  |  |  |  | 	domain := m.Domain | 
			
		
	
		
			
				
					|  |  |  |  | 	if m.Name != "" { | 
			
		
	
	
		
			
				
					|  |  |  | @ -90,8 +97,36 @@ var dnsWriteCmd = &cobra.Command{ | 
			
		
	
		
			
				
					|  |  |  |  | 	}, | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | var dnsSyncCmd = &cobra.Command{ | 
			
		
	
		
			
				
					|  |  |  |  | 	Use:    "sync", | 
			
		
	
		
			
				
					|  |  |  |  | 	Short:  "dns sync updates public DNS records", | 
			
		
	
		
			
				
					|  |  |  |  | 	PreRun: setVerbosity, | 
			
		
	
		
			
				
					|  |  |  |  | 	RunE: func(_ *cobra.Command, _ []string) error { | 
			
		
	
		
			
				
					|  |  |  |  | 		cred, err := dns.DefaultDNSProvider() | 
			
		
	
		
			
				
					|  |  |  |  | 		if err != nil { | 
			
		
	
		
			
				
					|  |  |  |  | 			return err | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		m, err := cfg.LoadZones(true) | 
			
		
	
		
			
				
					|  |  |  |  | 		if err != nil { | 
			
		
	
		
			
				
					|  |  |  |  | 			return err | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		mgr, err := newDNSManager(m, cred) | 
			
		
	
		
			
				
					|  |  |  |  | 		if err != nil { | 
			
		
	
		
			
				
					|  |  |  |  | 			return err | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		ctx, cancel := context.WithTimeout(context.Background(), DNSSyncTimeout) | 
			
		
	
		
			
				
					|  |  |  |  | 		defer cancel() | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		return mgr.Sync(ctx) | 
			
		
	
		
			
				
					|  |  |  |  | 	}, | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | func init() { | 
			
		
	
		
			
				
					|  |  |  |  | 	rootCmd.AddCommand(dnsCmd) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	dnsCmd.AddCommand(dnsWriteCmd) | 
			
		
	
		
			
				
					|  |  |  |  | 	dnsCmd.AddCommand(dnsSyncCmd) | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
	
		
			
				
					|  |  |  | 
 |