def execute(self, server_id, config):
        logging.debug("deprovisioning instance %s" % server_id)
        nc = get_openstack_nova_client(config)
        try:
            server = nc.servers.get(server_id)
        except NotFound:
            logging.warn("Server %s not found" % server_id)
            return
        if hasattr(server, "security_groups"):
            for sg in server.security_groups:
                try:
                    server.remove_security_group(sg['name'])
                except:
                    logging.warn("Unable to remove security group from server (%s)" % sg)
        else:
            logging.warn("no security groups on server!")
        try:
            nc.servers.delete(server_id)
            wait_for_delete(nc.servers, server_id)
        except Exception as e:
            logging.warn("Unable to deprovision server %s" % e)
        return server.name