]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
task/ceph_manager: Check that ipmi is enabled
authorSam Lang <sam.lang@inktank.com>
Wed, 13 Mar 2013 03:21:12 +0000 (22:21 -0500)
committerSam Lang <sam.lang@inktank.com>
Wed, 13 Mar 2013 03:21:12 +0000 (22:21 -0500)
If powercycling was requested for the osd thrasher
we should ensure that we are able to reach the
ipmi console.  This helps us avoid weird errors.

Signed-off-by: Sam Lang <sam.lang@inktank.com>
teuthology/task/ceph_manager.py

index fbdbb6d07ec67cc0881905156985bb9bdf5dc8e3..07de26ca5fdbad357e9fab977d69d5813ae9a576 100644 (file)
@@ -665,6 +665,7 @@ class CephManager:
         if self.config.get('powercycle'):
             (remote,) = self.ctx.cluster.only('osd.{o}'.format(o=osd)).remotes.iterkeys()
             self.log('kill_osd on osd.{o} doing powercycle of {s}'.format(o=osd, s=remote.name))
+            assert remote.console is not None, "powercycling requested but RemoteConsole is not initialized.  Check ipmi config."
             remote.console.power_off()
         else:
             self.ctx.daemons.get_daemon('osd', osd).stop()
@@ -679,6 +680,7 @@ class CephManager:
         if self.config.get('powercycle'):
             (remote,) = self.ctx.cluster.only('osd.{o}'.format(o=osd)).remotes.iterkeys()
             self.log('kill_osd on osd.{o} doing powercycle of {s}'.format(o=osd, s=remote.name))
+            assert remote.console is not None, "powercycling requested but RemoteConsole is not initialized.  Check ipmi config."
             remote.console.power_on()
             if not remote.console.check_status(300):
                 raise Exception('Failed to revive osd.{o} via ipmi'.format(o=osd))
@@ -702,6 +704,7 @@ class CephManager:
         if self.config.get('powercycle'):
             (remote,) = self.ctx.cluster.only('mon.{m}'.format(m=mon)).remotes.iterkeys()
             self.log('kill_mon on mon.{m} doing powercycle of {s}'.format(m=mon, s=remote.name))
+            assert remote.console is not None, "powercycling requested but RemoteConsole is not initialized.  Check ipmi config."
             remote.console.power_off()
         else:
             self.ctx.daemons.get_daemon('mon', mon).stop()
@@ -710,6 +713,7 @@ class CephManager:
         if self.config.get('powercycle'):
             (remote,) = self.ctx.cluster.only('mon.{m}'.format(m=mon)).remotes.iterkeys()
             self.log('revive_mon on mon.{m} doing powercycle of {s}'.format(m=mon, s=remote.name))
+            assert remote.console is not None, "powercycling requested but RemoteConsole is not initialized.  Check ipmi config."
             remote.console.power_on()
             ceph_task.make_admin_daemon_dir(self.ctx, remote)
         self.ctx.daemons.get_daemon('mon', mon).restart()
@@ -747,6 +751,7 @@ class CephManager:
         if self.config.get('powercycle'):
             (remote,) = self.ctx.cluster.only('mds.{m}'.format(m=mds)).remotes.iterkeys()
             self.log('kill_mds on mds.{m} doing powercycle of {s}'.format(m=mds, s=remote.name))
+            assert remote.console is not None, "powercycling requested but RemoteConsole is not initialized.  Check ipmi config."
             remote.console.power_off()
         else:
             self.ctx.daemons.get_daemon('mds', mds).stop()
@@ -759,6 +764,7 @@ class CephManager:
         if self.config.get('powercycle'):
             (remote,) = self.ctx.cluster.only('mds.{m}'.format(m=mds)).remotes.iterkeys()
             self.log('revive_mds on mds.{m} doing powercycle of {s}'.format(m=mds, s=remote.name))
+            assert remote.console is not None, "powercycling requested but RemoteConsole is not initialized.  Check ipmi config."
             remote.console.power_on()
             ceph_task.make_admin_daemon_dir(self.ctx, remote)
         args = []