diff --git a/pkg/daemon/ceph/client/mgr.go b/pkg/daemon/ceph/client/mgr.go index 8c4c4879a..7fff827e9 100755 --- a/pkg/daemon/ceph/client/mgr.go +++ b/pkg/daemon/ceph/client/mgr.go @@ -34,11 +34,6 @@ func MgrDisableModule(context *clusterd.Context, clusterName, name string) error return enableModule(context, clusterName, name, false, "disable") } -// MgrSetAllConfig applies a setting for all mgr daemons -func MgrSetAllConfig(context *clusterd.Context, clusterName string, cephVersion cephver.CephVersion, key, val string) (bool, error) { - return MgrSetConfig(context, clusterName, "", cephVersion, key, val, false) -} - // MgrSetConfig applies a setting for a single mgr daemon func MgrSetConfig(context *clusterd.Context, clusterName, mgrName string, cephVersion cephver.CephVersion, key, val string, force bool) (bool, error) { var getArgs, setArgs []string diff --git a/pkg/operator/ceph/cluster/mgr/dashboard.go b/pkg/operator/ceph/cluster/mgr/dashboard.go index 60d2481b7..0c81542fb 100755 --- a/pkg/operator/ceph/cluster/mgr/dashboard.go +++ b/pkg/operator/ceph/cluster/mgr/dashboard.go @@ -52,13 +52,13 @@ func init() { rand.Seed(time.Now().UnixNano()) } -func (c *Cluster) configureDashboard(port int) error { +func (c *Cluster) configureDashboard(m *mgrConfig) error { // enable or disable the dashboard module - if err := c.toggleDashboardModule(port); err != nil { + if err := c.toggleDashboardModule(m); err != nil { return err } - dashboardService := c.makeDashboardService(appName, port) + dashboardService := c.makeDashboardService(appName, m.DashboardPort) if c.dashboard.Enabled { // expose the dashboard service if _, err := c.context.Clientset.CoreV1().Services(c.Namespace).Create(dashboardService); err != nil { @@ -70,9 +70,9 @@ func (c *Cluster) configureDashboard(port int) error { if err != nil { return fmt.Errorf("failed to get dashboard service. %+v", err) } - if original.Spec.Ports[0].Port != int32(port) { + if original.Spec.Ports[0].Port != int32(m.DashboardPort) { logger.Infof("dashboard port changed. updating service") - original.Spec.Ports[0].Port = int32(port) + original.Spec.Ports[0].Port = int32(m.DashboardPort) if _, err := c.context.Clientset.CoreV1().Services(c.Namespace).Update(original); err != nil { return fmt.Errorf("failed to update dashboard mgr service. %+v", err) } @@ -92,7 +92,7 @@ func (c *Cluster) configureDashboard(port int) error { } // Ceph docs about the dashboard module: http://docs.ceph.com/docs/luminous/mgr/dashboard/ -func (c *Cluster) toggleDashboardModule(dashboardPort int) error { +func (c *Cluster) toggleDashboardModule(m *mgrConfig) error { if c.dashboard.Enabled { if err := client.MgrEnableModule(c.context, c.Namespace, dashboardModuleName, true); err != nil { return fmt.Errorf("failed to enable mgr dashboard module. %+v", err) @@ -102,7 +102,7 @@ func (c *Cluster) toggleDashboardModule(dashboardPort int) error { return fmt.Errorf("failed to initialize dashboard. %+v", err) } - if err := c.configureDashboardModule(dashboardPort); err != nil { + if err := c.configureDashboardModule(m); err != nil { return fmt.Errorf("failed to configure mgr dashboard module. %+v", err) } } else { @@ -113,16 +113,16 @@ func (c *Cluster) toggleDashboardModule(dashboardPort int) error { return nil } -func (c *Cluster) configureDashboardModule(dashboardPort int) error { +func (c *Cluster) configureDashboardModule(m *mgrConfig) error { // url prefix - hasChanged, err := client.MgrSetAllConfig(c.context, c.Namespace, c.clusterInfo.CephVersion, "mgr/dashboard/url_prefix", c.dashboard.UrlPrefix) + hasChanged, err := client.MgrSetConfig(c.context, c.Namespace, m.DaemonID, c.clusterInfo.CephVersion, "mgr/dashboard/url_prefix", c.dashboard.UrlPrefix, false) if err != nil { return err } // server port - port := strconv.Itoa(dashboardPort) - changed, err := client.MgrSetAllConfig(c.context, c.Namespace, c.clusterInfo.CephVersion, "mgr/dashboard/server_port", port) + port := strconv.Itoa(m.DashboardPort) + changed, err := client.MgrSetConfig(c.context, c.Namespace, m.DaemonID, c.clusterInfo.CephVersion, "mgr/dashboard/server_port", port, false) if err != nil { return err } @@ -135,7 +135,7 @@ func (c *Cluster) configureDashboardModule(dashboardPort int) error { } else { ssl = strconv.FormatBool(*c.dashboard.SSL) } - changed, err = client.MgrSetAllConfig(c.context, c.Namespace, c.clusterInfo.CephVersion, "mgr/dashboard/ssl", ssl) + changed, err = client.MgrSetConfig(c.context, c.Namespace, m.DaemonID, c.clusterInfo.CephVersion, "mgr/dashboard/ssl", ssl, false) if err != nil { return err } diff --git a/pkg/operator/ceph/cluster/mgr/dashboard_test.go b/pkg/operator/ceph/cluster/mgr/dashboard_test.go index 376336d1e..a8bc0534b 100644 --- a/pkg/operator/ceph/cluster/mgr/dashboard_test.go +++ b/pkg/operator/ceph/cluster/mgr/dashboard_test.go @@ -104,9 +104,14 @@ func TestStartSecureDashboard(t *testing.T) { } return exitCodeResponse, false } + mgrConfig := &mgrConfig{ + DaemonID: "a", + ResourceName: "mgr", + DashboardPort: dashboardPortHTTP, + } dashboardInitWaitTime = 0 - err := c.configureDashboard(dashboardPortHTTP) + err := c.configureDashboard(mgrConfig) assert.Nil(t, err) // the dashboard is enabled, then disabled and enabled again to restart // it with the cert, and another restart when setting the dashboard port @@ -120,7 +125,7 @@ func TestStartSecureDashboard(t *testing.T) { // disable the dashboard c.dashboard.Enabled = false - err = c.configureDashboard(dashboardPortHTTP) + err = c.configureDashboard(mgrConfig) assert.Nil(t, err) assert.Equal(t, 3, enables) assert.Equal(t, 3, disables) diff --git a/pkg/operator/ceph/cluster/mgr/mgr.go b/pkg/operator/ceph/cluster/mgr/mgr.go index e628d2f1f..692c4addb 100644 --- a/pkg/operator/ceph/cluster/mgr/mgr.go +++ b/pkg/operator/ceph/cluster/mgr/mgr.go @@ -141,18 +141,19 @@ func (c *Cluster) Start() error { return fmt.Errorf("failed to update mgr deployment %s. %+v", resourceName, err) } } - } - if err := c.configureOrchestratorModules(); err != nil { - logger.Errorf("failed to enable orchestrator modules. %+v", err) - } + if err := c.configureOrchestratorModules(); err != nil { + logger.Errorf("failed to enable orchestrator modules. %+v", err) + } - if err := c.enablePrometheusModule(c.Namespace); err != nil { - logger.Errorf("failed to enable mgr prometheus module. %+v", err) - } + if err := c.enablePrometheusModule(c.Namespace); err != nil { + logger.Errorf("failed to enable mgr prometheus module. %+v", err) + } + + if err := c.configureDashboard(mgrConfig); err != nil { + logger.Errorf("failed to enable mgr dashboard. %+v", err) + } - if err := c.configureDashboard(c.dashboardPort()); err != nil { - logger.Errorf("failed to enable mgr dashboard. %+v", err) } // create the metrics service