Beispiel #1
0
    def handle(self, *args, **options):
        """
        Finds zombies and kills them.
        """
        self.log("Starting kill_zombies")

        # Set options
        self.region = options.get("region")
        self.dry_run = options.get("dry_run", False)

        # Start nova up and get the list of servers
        nova = openstack_utils.get_nova_client(self.region)
        nova_servers = nova.servers.list()

        if not nova_servers:
            self.log('No servers found in region {}.'.format(self.region))
            return None
        self.log('Found {} unterminated servers in region {}.'.format(len(nova_servers), self.region))

        # Scan each server for the zombieness.
        death_count = sum(1 for srv in nova_servers if self.not_zombie_or_die(srv))

        if self.dry_run:
            result = "Would have terminated {} zombies if this weren't a dry run.".format(death_count)
        else:
            result = "Terminated {} zombies.".format(death_count)
        self.log(result)
        return result
 def test_nova_client_connection_error(self, mock_request, mock_getresponse, mock_retry_sleep):
     """
     Connection error during a request from the nova client
     Ensure requests are retried before giving up, with a backoff sleep between attempts
     """
     def getresponse_call(*args, **kwargs):
         """ Invoked by the nova client when making a HTTP request (via requests/urllib3) """
         raise ConnectionResetError('[Errno 104] Connection reset by peer')
     mock_getresponse.side_effect = getresponse_call
     nova = openstack_utils.get_nova_client(settings.OPENSTACK_REGION)
     with self.assertRaises(keystoneauth1.exceptions.discovery.DiscoveryFailure):
         nova.servers.get('test-id')
     self.assertEqual(mock_getresponse.call_count, 11)
     self.assertEqual(mock_retry_sleep.call_count, 10)
Beispiel #3
0
 def __init__(self, *args, **kwargs):
     super().__init__(*args, **kwargs)
     self.nova = openstack_utils.get_nova_client(self.openstack_region)