diff --git a/microovn/api/certificates/regenerate_ca.go b/microovn/api/certificates/regenerate_ca.go index a0f10ef4..3048cdd4 100644 --- a/microovn/api/certificates/regenerate_ca.go +++ b/microovn/api/certificates/regenerate_ca.go @@ -29,7 +29,7 @@ func regenerateCaPut(s *state.State, r *http.Request) response.Response { responseData := types.NewRegenerateCaResponse() // Check that this is the initial node that received the request and recreate new CA certificate - if !client.IsForwardedRequest(r) { + if !client.IsNotification(r) { // Only one recipient of this request needs to generate new CA logger.Info("Re-issuing CA certificate and private key") err = ovn.GenerateNewCACertificate(s) @@ -42,7 +42,7 @@ func regenerateCaPut(s *state.State, r *http.Request) response.Response { } // Get clients for rest of the cluster members - cluster, err := s.Cluster(r) + cluster, err := s.Cluster(false) if err != nil { logger.Errorf("Failed to get a client for every cluster member: %w", err) return response.SyncResponse(false, &responseData) diff --git a/microovn/cmd/microovn/certificates_list.go b/microovn/cmd/microovn/certificates_list.go index a807e492..000819d6 100644 --- a/microovn/cmd/microovn/certificates_list.go +++ b/microovn/cmd/microovn/certificates_list.go @@ -67,7 +67,7 @@ func (c *cmdCertificatesList) Run(cmd *cobra.Command, _ []string) error { return err } - m, err := microcluster.App(context.Background(), microcluster.Args{StateDir: c.common.FlagStateDir, Verbose: c.common.FlagLogVerbose, Debug: c.common.FlagLogDebug}) + m, err := microcluster.App(microcluster.Args{StateDir: c.common.FlagStateDir, Verbose: c.common.FlagLogVerbose, Debug: c.common.FlagLogDebug}) if err != nil { return err } diff --git a/microovn/cmd/microovn/certificates_regenerate_ca.go b/microovn/cmd/microovn/certificates_regenerate_ca.go index d2738a91..ecc9f5bc 100644 --- a/microovn/cmd/microovn/certificates_regenerate_ca.go +++ b/microovn/cmd/microovn/certificates_regenerate_ca.go @@ -31,7 +31,7 @@ func (c *cmdCertificatesRegenerateCa) Command() *cobra.Command { // to issue new CA certificate and re-issue all OVN service certificates across the whole cluster. func (c *cmdCertificatesRegenerateCa) Run(_ *cobra.Command, _ []string) error { var response types.RegenerateCaResponse - m, err := microcluster.App(context.Background(), microcluster.Args{StateDir: c.common.FlagStateDir, Verbose: c.common.FlagLogVerbose, Debug: c.common.FlagLogDebug}) + m, err := microcluster.App(microcluster.Args{StateDir: c.common.FlagStateDir, Verbose: c.common.FlagLogVerbose, Debug: c.common.FlagLogDebug}) if err != nil { return err } diff --git a/microovn/cmd/microovn/certificates_reissue.go b/microovn/cmd/microovn/certificates_reissue.go index 18bd0f67..08718704 100644 --- a/microovn/cmd/microovn/certificates_reissue.go +++ b/microovn/cmd/microovn/certificates_reissue.go @@ -46,7 +46,7 @@ func (c *cmdCertificatesReissue) Command() *cobra.Command { // service to issue new certificate for selected OVN service. func (c *cmdCertificatesReissue) Run(_ *cobra.Command, args []string) error { var response types.IssueCertificateResponse - m, err := microcluster.App(context.Background(), microcluster.Args{StateDir: c.common.FlagStateDir, Verbose: c.common.FlagLogVerbose, Debug: c.common.FlagLogDebug}) + m, err := microcluster.App(microcluster.Args{StateDir: c.common.FlagStateDir, Verbose: c.common.FlagLogVerbose, Debug: c.common.FlagLogDebug}) if err != nil { return err } diff --git a/microovn/cmd/microovn/cluster_add.go b/microovn/cmd/microovn/cluster_add.go index 9347636f..85c142b2 100644 --- a/microovn/cmd/microovn/cluster_add.go +++ b/microovn/cmd/microovn/cluster_add.go @@ -28,12 +28,12 @@ func (c *cmdClusterAdd) Run(cmd *cobra.Command, args []string) error { return cmd.Help() } - m, err := microcluster.App(context.Background(), microcluster.Args{StateDir: c.common.FlagStateDir, Verbose: c.common.FlagLogVerbose, Debug: c.common.FlagLogDebug}) + m, err := microcluster.App(microcluster.Args{StateDir: c.common.FlagStateDir, Verbose: c.common.FlagLogVerbose, Debug: c.common.FlagLogDebug}) if err != nil { return err } - token, err := m.NewJoinToken(args[0]) + token, err := m.NewJoinToken(context.Background(), args[0]) if err != nil { return err } diff --git a/microovn/cmd/microovn/cluster_bootstrap.go b/microovn/cmd/microovn/cluster_bootstrap.go index 7b4f3b6f..01f5b6a2 100644 --- a/microovn/cmd/microovn/cluster_bootstrap.go +++ b/microovn/cmd/microovn/cluster_bootstrap.go @@ -4,7 +4,6 @@ import ( "context" "fmt" "os" - "time" "github.com/canonical/lxd/lxd/util" "github.com/canonical/microcluster/microcluster" @@ -31,7 +30,7 @@ func (c *cmdClusterBootstrap) Run(cmd *cobra.Command, args []string) error { return cmd.Help() } - m, err := microcluster.App(context.Background(), microcluster.Args{StateDir: c.common.FlagStateDir, Verbose: c.common.FlagLogVerbose, Debug: c.common.FlagLogDebug}) + m, err := microcluster.App(microcluster.Args{StateDir: c.common.FlagStateDir, Verbose: c.common.FlagLogVerbose, Debug: c.common.FlagLogDebug}) if err != nil { return fmt.Errorf("Unable to configure MicroOVN: %w", err) } @@ -46,5 +45,5 @@ func (c *cmdClusterBootstrap) Run(cmd *cobra.Command, args []string) error { address := util.NetworkInterfaceAddress() address = util.CanonicalNetworkAddress(address, 6443) - return m.NewCluster(hostname, address, nil, time.Second*30) + return m.NewCluster(context.Background(), hostname, address, nil) } diff --git a/microovn/cmd/microovn/cluster_join.go b/microovn/cmd/microovn/cluster_join.go index 939d3eb9..fda13754 100644 --- a/microovn/cmd/microovn/cluster_join.go +++ b/microovn/cmd/microovn/cluster_join.go @@ -4,7 +4,6 @@ import ( "context" "fmt" "os" - "time" "github.com/canonical/lxd/lxd/util" "github.com/canonical/microcluster/microcluster" @@ -31,7 +30,7 @@ func (c *cmdClusterJoin) Run(cmd *cobra.Command, args []string) error { return cmd.Help() } - m, err := microcluster.App(context.Background(), microcluster.Args{StateDir: c.common.FlagStateDir, Verbose: c.common.FlagLogVerbose, Debug: c.common.FlagLogDebug}) + m, err := microcluster.App(microcluster.Args{StateDir: c.common.FlagStateDir, Verbose: c.common.FlagLogVerbose, Debug: c.common.FlagLogDebug}) if err != nil { return fmt.Errorf("Unable to configure MicroCluster: %w", err) } @@ -46,5 +45,5 @@ func (c *cmdClusterJoin) Run(cmd *cobra.Command, args []string) error { address := util.NetworkInterfaceAddress() address = util.CanonicalNetworkAddress(address, 6443) - return m.JoinCluster(hostname, address, args[0], nil, time.Second*30) + return m.JoinCluster(context.Background(), hostname, address, args[0], nil) } diff --git a/microovn/cmd/microovn/cluster_list.go b/microovn/cmd/microovn/cluster_list.go index 5e0d60b0..66bb1757 100644 --- a/microovn/cmd/microovn/cluster_list.go +++ b/microovn/cmd/microovn/cluster_list.go @@ -30,7 +30,7 @@ func (c *cmdClusterList) Command() *cobra.Command { } func (c *cmdClusterList) Run(cmd *cobra.Command, args []string) error { - m, err := microcluster.App(context.Background(), microcluster.Args{StateDir: c.common.FlagStateDir, Verbose: c.common.FlagLogVerbose, Debug: c.common.FlagLogDebug}) + m, err := microcluster.App(microcluster.Args{StateDir: c.common.FlagStateDir, Verbose: c.common.FlagLogVerbose, Debug: c.common.FlagLogDebug}) if err != nil { return err } diff --git a/microovn/cmd/microovn/cluster_remove.go b/microovn/cmd/microovn/cluster_remove.go index a4194441..e9cb2cef 100644 --- a/microovn/cmd/microovn/cluster_remove.go +++ b/microovn/cmd/microovn/cluster_remove.go @@ -31,7 +31,7 @@ func (c *cmdClusterRemove) Run(cmd *cobra.Command, args []string) error { return cmd.Help() } - m, err := microcluster.App(context.Background(), microcluster.Args{StateDir: c.common.FlagStateDir, Verbose: c.common.FlagLogVerbose, Debug: c.common.FlagLogDebug}) + m, err := microcluster.App(microcluster.Args{StateDir: c.common.FlagStateDir, Verbose: c.common.FlagLogVerbose, Debug: c.common.FlagLogDebug}) if err != nil { return err } diff --git a/microovn/cmd/microovn/cluster_sql.go b/microovn/cmd/microovn/cluster_sql.go index 847cc296..c4e86f99 100644 --- a/microovn/cmd/microovn/cluster_sql.go +++ b/microovn/cmd/microovn/cluster_sql.go @@ -37,13 +37,13 @@ func (c *cmdClusterSQL) Run(cmd *cobra.Command, args []string) error { } } - m, err := microcluster.App(context.Background(), microcluster.Args{StateDir: c.common.FlagStateDir, Verbose: c.common.FlagLogVerbose, Debug: c.common.FlagLogDebug}) + m, err := microcluster.App(microcluster.Args{StateDir: c.common.FlagStateDir, Verbose: c.common.FlagLogVerbose, Debug: c.common.FlagLogDebug}) if err != nil { return err } query := args[0] - dump, batch, err := m.SQL(query) + dump, batch, err := m.SQL(context.Background(), query) if err != nil { return err } diff --git a/microovn/cmd/microovn/init.go b/microovn/cmd/microovn/init.go index f960a3d5..e4e6beab 100644 --- a/microovn/cmd/microovn/init.go +++ b/microovn/cmd/microovn/init.go @@ -4,7 +4,6 @@ import ( "context" "fmt" "os" - "time" "github.com/canonical/lxd/lxd/util" "github.com/canonical/microcluster/microcluster" @@ -31,7 +30,7 @@ func (c *cmdInit) Command() *cobra.Command { func (c *cmdInit) Run(cmd *cobra.Command, args []string) error { // Connect to the daemon. - m, err := microcluster.App(context.Background(), microcluster.Args{StateDir: c.common.FlagStateDir, Verbose: c.common.FlagLogVerbose, Debug: c.common.FlagLogDebug}) + m, err := microcluster.App(microcluster.Args{StateDir: c.common.FlagStateDir, Verbose: c.common.FlagLogVerbose, Debug: c.common.FlagLogDebug}) if err != nil { return err } @@ -81,7 +80,7 @@ func (c *cmdInit) Run(cmd *cobra.Command, args []string) error { } // Bootstrap the cluster. - err = m.NewCluster(hostName, address, nil, time.Second*30) + err = m.NewCluster(context.Background(), hostName, address, nil) if err != nil { return err } @@ -93,7 +92,7 @@ func (c *cmdInit) Run(cmd *cobra.Command, args []string) error { return err } - err = m.JoinCluster(hostName, address, token, nil, time.Second*30) + err = m.JoinCluster(context.Background(), hostName, address, token, nil) if err != nil { return err } @@ -121,7 +120,7 @@ func (c *cmdInit) Run(cmd *cobra.Command, args []string) error { } // Issue the token. - token, err := m.NewJoinToken(tokenName) + token, err := m.NewJoinToken(context.Background(), tokenName) if err != nil { return err } diff --git a/microovn/cmd/microovn/status.go b/microovn/cmd/microovn/status.go index 9d90cb6a..4f1aaadf 100644 --- a/microovn/cmd/microovn/status.go +++ b/microovn/cmd/microovn/status.go @@ -27,7 +27,7 @@ func (c *cmdStatus) Command() *cobra.Command { } func (c *cmdStatus) Run(cmd *cobra.Command, args []string) error { - m, err := microcluster.App(context.Background(), microcluster.Args{StateDir: c.common.FlagStateDir, Verbose: c.common.FlagLogVerbose, Debug: c.common.FlagLogDebug}) + m, err := microcluster.App(microcluster.Args{StateDir: c.common.FlagStateDir, Verbose: c.common.FlagLogVerbose, Debug: c.common.FlagLogDebug}) if err != nil { return err } diff --git a/microovn/cmd/microovnd/main.go b/microovn/cmd/microovnd/main.go index 497c6bc1..9b5c90f0 100644 --- a/microovn/cmd/microovnd/main.go +++ b/microovn/cmd/microovnd/main.go @@ -61,20 +61,20 @@ func (c *cmdDaemon) Command() *cobra.Command { } func (c *cmdDaemon) Run(cmd *cobra.Command, args []string) error { - m, err := microcluster.App(context.Background(), microcluster.Args{StateDir: c.flagStateDir, Verbose: c.global.flagLogVerbose, Debug: c.global.flagLogDebug}) + m, err := microcluster.App(microcluster.Args{StateDir: c.flagStateDir, Verbose: c.global.flagLogVerbose, Debug: c.global.flagLogDebug}) if err != nil { return err } h := &config.Hooks{} - h.OnBootstrap = ovn.Bootstrap + h.PostBootstrap = ovn.Bootstrap h.PreJoin = ovn.Join h.OnNewMember = ovn.Refresh h.PreRemove = ovn.Leave h.PostRemove = func(s *state.State, force bool) error { return ovn.Refresh(s) } h.OnStart = ovn.Start - return m.Start(api.Endpoints, database.SchemaExtensions, h) + return m.Start(context.Background(), api.Endpoints, database.SchemaExtensions, []string{}, h) } func init() { diff --git a/microovn/database/schema.go b/microovn/database/schema.go index b56c569c..7a074b1b 100644 --- a/microovn/database/schema.go +++ b/microovn/database/schema.go @@ -10,9 +10,9 @@ import ( // SchemaExtensions is a list of schema extensions that can be passed to the MicroCluster daemon. // Each entry will increase the database schema version by one, and will be applied after internal schema updates. -var SchemaExtensions = map[int]schema.Update{ - 1: schemaUpdate1, - 2: schemaUpdateCascadeDeleteServices, +var SchemaExtensions = []schema.Update{ + schemaUpdate1, + schemaUpdateCascadeDeleteServices, } func schemaUpdate1(ctx context.Context, tx *sql.Tx) error {