diff --git a/stress/driver.py b/stress/driver.py
index 71d02a9..bdb5d4b 100644
--- a/stress/driver.py
+++ b/stress/driver.py
@@ -71,7 +71,7 @@
     nova-manage on the controller.
     """
     nodes = []
-    if keypath == None or user == None:
+    if keypath is None or user is None:
         return nodes
     lines = utils.util.ssh(keypath, user, controller,
                      "nova-manage service list | grep ^nova-compute").\
@@ -206,7 +206,7 @@
                 case = random.choice(cases)
                 logging.debug('Chose %s' % case)
                 retry = case.invoke(manager, state)
-                if retry != None:
+                if retry is not None:
                     retry_list.append(retry)
             else:
                 logging.info('Cooling down...')
diff --git a/stress/pending_action.py b/stress/pending_action.py
index 67eba13..a2d5a6b 100644
--- a/stress/pending_action.py
+++ b/stress/pending_action.py
@@ -31,7 +31,7 @@
         `nova_manager` : Manager object.
         `timeout`   : time before we declare a TimeoutException
         """
-        if timeout == None:
+        if timeout is None:
             timeout = nova_manager.config.compute.build_timeout
         self._manager = nova_manager
         self._logger = logging.getLogger(self.__class__.__name__)
diff --git a/stress/test_floating_ips.py b/stress/test_floating_ips.py
index a2a20db..536179c 100755
--- a/stress/test_floating_ips.py
+++ b/stress/test_floating_ips.py
@@ -32,7 +32,7 @@
         self.server_ids = None
 
     def run(self, manager, state, *pargs, **kwargs):
-        if self.server_ids == None:
+        if self.server_ids is None:
             vms = state.get_instances()
             self.server_ids = [k for k, v in vms.iteritems()]
         floating_ip = random.choice(state.get_floating_ips())
@@ -40,7 +40,7 @@
             return None
         floating_ip.change_pending = True
         timeout = int(kwargs.get('timeout', 60))
-        if floating_ip.server_id == None:
+        if floating_ip.server_id is None:
             server = random.choice(self.server_ids)
             address = floating_ip.address
             self._logger.info('Adding %s to server %s' % (address, server))
diff --git a/tempest/common/rest_client.py b/tempest/common/rest_client.py
index 32dd124..7e3084b 100644
--- a/tempest/common/rest_client.py
+++ b/tempest/common/rest_client.py
@@ -143,7 +143,7 @@
                     tenant_id = auth_data['token']['tenant']['id']
                     break
 
-            if mgmt_url == None:
+            if mgmt_url is None:
                 raise exceptions.EndpointNotFound(service)
 
             if service == 'network':
@@ -186,7 +186,7 @@
             self._set_auth()
 
         self.http_obj = httplib2.Http()
-        if headers == None:
+        if headers is None:
             headers = {}
         headers['X-Auth-Token'] = self.token
 
diff --git a/tempest/services/identity/json/admin_client.py b/tempest/services/identity/json/admin_client.py
index a42a690..aa3a52a 100644
--- a/tempest/services/identity/json/admin_client.py
+++ b/tempest/services/identity/json/admin_client.py
@@ -226,7 +226,7 @@
     def request(self, method, url, headers=None, body=None):
         """A simple HTTP request interface."""
         self.http_obj = httplib2.Http()
-        if headers == None:
+        if headers is None:
             headers = {}
 
         resp, resp_body = self.http_obj.request(url, method,
diff --git a/tempest/services/identity/xml/admin_client.py b/tempest/services/identity/xml/admin_client.py
index 948c643..dd18cd6 100644
--- a/tempest/services/identity/xml/admin_client.py
+++ b/tempest/services/identity/xml/admin_client.py
@@ -246,7 +246,7 @@
     def request(self, method, url, headers=None, body=None):
         """A simple HTTP request interface."""
         self.http_obj = httplib2.Http()
-        if headers == None:
+        if headers is None:
             headers = {}
 
         resp, resp_body = self.http_obj.request(url, method,
diff --git a/tempest/services/nova/json/flavors_client.py b/tempest/services/nova/json/flavors_client.py
index 5f7d918..9397148 100644
--- a/tempest/services/nova/json/flavors_client.py
+++ b/tempest/services/nova/json/flavors_client.py
@@ -11,7 +11,7 @@
 
     def list_flavors(self, params=None):
         url = 'flavors'
-        if params != None:
+        if params is not None:
             param_list = []
             for param, value in params.iteritems():
                 param_list.append("%s=%s&" % (param, value))
@@ -24,7 +24,7 @@
 
     def list_flavors_with_detail(self, params=None):
         url = 'flavors/detail'
-        if params != None:
+        if params is not None:
             param_list = []
             for param, value in params.iteritems():
                 param_list.append("%s=%s&" % (param, value))
diff --git a/tempest/services/nova/json/floating_ips_client.py b/tempest/services/nova/json/floating_ips_client.py
index 231b61a..efcd49f 100644
--- a/tempest/services/nova/json/floating_ips_client.py
+++ b/tempest/services/nova/json/floating_ips_client.py
@@ -12,7 +12,7 @@
     def list_floating_ips(self, params=None):
         """Returns a list of all floating IPs filtered by any parameters"""
         url = 'os-floating-ips'
-        if params != None:
+        if params is not None:
             param_list = []
             for param, value in params.iteritems():
                 param_list.append("%s=%s" % (param, value))
diff --git a/tempest/services/nova/json/images_client.py b/tempest/services/nova/json/images_client.py
index 7a29b2f..03df0fb 100644
--- a/tempest/services/nova/json/images_client.py
+++ b/tempest/services/nova/json/images_client.py
@@ -22,7 +22,7 @@
             }
         }
 
-        if meta != None:
+        if meta is not None:
             post_body['createImage']['metadata'] = meta
 
         post_body = json.dumps(post_body)
@@ -33,7 +33,7 @@
     def list_images(self, params=None):
         """Returns a list of all images filtered by any parameters"""
         url = 'images'
-        if params != None:
+        if params is not None:
             param_list = []
             for param, value in params.iteritems():
                 param_list.append("%s=%s&" % (param, value))
@@ -47,7 +47,7 @@
     def list_images_with_detail(self, params=None):
         """Returns a detailed list of images filtered by any parameters"""
         url = 'images/detail'
-        if params != None:
+        if params is not None:
             param_list = []
             for param, value in params.iteritems():
                 param_list.append("%s=%s&" % (param, value))
diff --git a/tempest/services/nova/json/security_groups_client.py b/tempest/services/nova/json/security_groups_client.py
index 6fa1a8c..4d5d874 100644
--- a/tempest/services/nova/json/security_groups_client.py
+++ b/tempest/services/nova/json/security_groups_client.py
@@ -13,7 +13,7 @@
         """List all security groups for a user"""
 
         url = 'os-security-groups'
-        if params != None:
+        if params is not None:
             param_list = []
             for param, value in params.iteritems():
                 param_list.append("%s=%s&" % (param, value))
diff --git a/tempest/services/nova/json/servers_client.py b/tempest/services/nova/json/servers_client.py
index b4ad4a8..eedc362 100644
--- a/tempest/services/nova/json/servers_client.py
+++ b/tempest/services/nova/json/servers_client.py
@@ -51,7 +51,7 @@
                 post_param = option
                 key = option
             value = kwargs.get(key)
-            if value != None:
+            if value is not None:
                 post_body[post_param] = value
         post_body = json.dumps({'server': post_body})
         resp, body = self.post('servers', post_body, self.headers)
@@ -72,16 +72,16 @@
 
         post_body = {}
 
-        if meta != None:
+        if meta is not None:
             post_body['metadata'] = meta
 
-        if name != None:
+        if name is not None:
             post_body['name'] = name
 
-        if accessIPv4 != None:
+        if accessIPv4 is not None:
             post_body['accessIPv4'] = accessIPv4
 
-        if accessIPv6 != None:
+        if accessIPv6 is not None:
             post_body['accessIPv6'] = accessIPv6
 
         post_body = json.dumps({'server': post_body})
@@ -104,7 +104,7 @@
         """Lists all servers for a user"""
 
         url = 'servers'
-        if params != None:
+        if params is not None:
             param_list = []
             for param, value in params.iteritems():
                 param_list.append("%s=%s&" % (param, value))
@@ -119,7 +119,7 @@
         """Lists all servers in detail for a user"""
 
         url = 'servers/detail'
-        if params != None:
+        if params is not None:
             param_list = []
             for param, value in params.iteritems():
                 param_list.append("%s=%s&" % (param, value))
@@ -215,19 +215,19 @@
                 'imageRef': image_ref,
         }
 
-        if name != None:
+        if name is not None:
             post_body['name'] = name
 
-        if adminPass != None:
+        if adminPass is not None:
             post_body['adminPass'] = adminPass
 
-        if meta != None:
+        if meta is not None:
             post_body['metadata'] = meta
 
-        if personality != None:
+        if personality is not None:
             post_body['personality'] = personality
 
-        if disk_config != None:
+        if disk_config is not None:
             post_body['OS-DCF:diskConfig'] = disk_config
 
         post_body = json.dumps({'rebuild': post_body})
@@ -245,7 +245,7 @@
             }
         }
 
-        if disk_config != None:
+        if disk_config is not None:
             post_body['resize']['OS-DCF:diskConfig'] = disk_config
 
         post_body = json.dumps(post_body)
diff --git a/tempest/services/nova/json/volumes_extensions_client.py b/tempest/services/nova/json/volumes_extensions_client.py
index ed71f71..319915c 100644
--- a/tempest/services/nova/json/volumes_extensions_client.py
+++ b/tempest/services/nova/json/volumes_extensions_client.py
@@ -17,7 +17,7 @@
     def list_volumes(self, params=None):
         """List all the volumes created"""
         url = 'os-volumes'
-        if params != None:
+        if params is not None:
             param_list = []
             for param, value in params.iteritems():
                 param_list.append("%s=%s&" % (param, value))
@@ -31,7 +31,7 @@
     def list_volumes_with_detail(self, params=None):
         """List all the details of volumes"""
         url = 'os-volumes/detail'
-        if params != None:
+        if params is not None:
             param_list = []
             for param, value in params.iteritems():
                 param_list.append("%s=%s&" % (param, value))
diff --git a/tempest/services/nova/xml/flavors_client.py b/tempest/services/nova/xml/flavors_client.py
index 1ea6c5a..3ed65bc 100644
--- a/tempest/services/nova/xml/flavors_client.py
+++ b/tempest/services/nova/xml/flavors_client.py
@@ -46,7 +46,7 @@
         return [self._format_flavor(xml_to_json(x)) for x in node]
 
     def _list_flavors(self, url, params):
-        if params != None:
+        if params is not None:
             url += "?%s" % urllib.urlencode(params)
 
         resp, body = self.get(url, self.headers)
diff --git a/tempest/services/nova/xml/floating_ips_client.py b/tempest/services/nova/xml/floating_ips_client.py
index 4b91abb..a5993d4 100644
--- a/tempest/services/nova/xml/floating_ips_client.py
+++ b/tempest/services/nova/xml/floating_ips_client.py
@@ -43,7 +43,7 @@
     def list_floating_ips(self, params=None):
         """Returns a list of all floating IPs filtered by any parameters"""
         url = 'os-floating-ips'
-        if params != None:
+        if params is not None:
             param_list = []
             for param, value in params.iteritems():
                 param_list.append("%s=%s" % (param, value))
diff --git a/tempest/services/nova/xml/servers_client.py b/tempest/services/nova/xml/servers_client.py
index 4ef813c..833e6d7 100644
--- a/tempest/services/nova/xml/servers_client.py
+++ b/tempest/services/nova/xml/servers_client.py
@@ -82,7 +82,7 @@
 
     def list_servers(self, params=None):
         url = 'servers/detail'
-        if params != None:
+        if params is not None:
             param_list = []
             for param, value in params.iteritems():
                 param_list.append("%s=%s" % (param, value))
@@ -94,7 +94,7 @@
 
     def list_servers_with_detail(self, params=None):
         url = 'servers/detail'
-        if params != None:
+        if params is not None:
             param_list = []
             for param, value in params.iteritems():
                 param_list.append("%s=%s" % (param, value))
diff --git a/tempest/services/volume/json/volumes_client.py b/tempest/services/volume/json/volumes_client.py
index 3a42d51..b061c9f 100644
--- a/tempest/services/volume/json/volumes_client.py
+++ b/tempest/services/volume/json/volumes_client.py
@@ -38,7 +38,7 @@
     def list_volumes(self, params=None):
         """List all the volumes created"""
         url = 'volumes'
-        if params != None:
+        if params is not None:
             param_list = []
             for param, value in params.iteritems():
                 param_list.append("%s=%s&" % (param, value))
@@ -51,7 +51,7 @@
     def list_volumes_with_detail(self, params=None):
         """List the details of all volumes"""
         url = 'volumes/detail'
-        if params != None:
+        if params is not None:
             param_list = []
             for param, value in params.iteritems():
                 param_list.append("%s=%s&" % (param, value))
diff --git a/tempest/tests/compute/test_authorization.py b/tempest/tests/compute/test_authorization.py
index b725b82..86867e2 100644
--- a/tempest/tests/compute/test_authorization.py
+++ b/tempest/tests/compute/test_authorization.py
@@ -218,7 +218,7 @@
         finally:
             # Reset the base_url...
             self.alt_keypairs_client.base_url = self.saved_base_url
-            if (resp['status'] != None):
+            if (resp['status'] is not None):
                 resp, _ = self.alt_keypairs_client.delete_keypair(k_name)
                 self.fail("Create keypair request should not happen if the"
                         " tenant id does not match the current user")
@@ -269,7 +269,7 @@
         finally:
             # Reset the base_url...
             self.alt_security_client.base_url = self.saved_base_url
-            if resp['status'] != None:
+            if resp['status'] is not None:
                 resp, _ = \
                 self.alt_security_client.delete_security_group(body['id'])
                 self.fail("Create Security Group request should not happen if"
@@ -314,7 +314,7 @@
         finally:
             # Reset the base_url...
             self.alt_security_client.base_url = self.saved_base_url
-            if resp['status'] != None:
+            if resp['status'] is not None:
                 resp, _ = \
                 self.alt_security_client.delete_security_group_rule(
                                         body['id'])
diff --git a/tempest/tests/compute/test_floating_ips_actions.py b/tempest/tests/compute/test_floating_ips_actions.py
index 90d5e35..5612a12 100644
--- a/tempest/tests/compute/test_floating_ips_actions.py
+++ b/tempest/tests/compute/test_floating_ips_actions.py
@@ -195,7 +195,7 @@
         else:
             self.fail('The floating IP should be associated to the second'
                     'server')
-        if (resp['status'] != None):
+        if (resp['status'] is not None):
             #Dissociation of the floating IP associated in this method
             resp, _ = \
             self.client.disassociate_floating_ip_from_server(
diff --git a/tempest/tests/compute/test_images.py b/tempest/tests/compute/test_images.py
index 94bab4f..82dba33 100644
--- a/tempest/tests/compute/test_images.py
+++ b/tempest/tests/compute/test_images.py
@@ -117,7 +117,7 @@
             pass
 
         finally:
-            if (resp['status'] != None):
+            if (resp['status'] is not None):
                 image_id = parse_image_id(resp['location'])
                 resp, _ = self.client.delete_image(image_id)
                 self.fail("An image should not be created"
diff --git a/tox.ini b/tox.ini
index 5f957a1..ed72876 100644
--- a/tox.ini
+++ b/tox.ini
@@ -15,4 +15,4 @@
 
 [testenv:pep8]
 deps = pep8==1.3.3
-commands = pep8 --ignore=E121,E122,E123,E124,E125,E126,E127,E128,E711 --repeat --show-source --exclude=.venv,.tox,dist,doc,openstack,kong .
+commands = pep8 --ignore=E121,E122,E123,E124,E125,E126,E127,E128 --repeat --show-source --exclude=.venv,.tox,dist,doc,openstack,kong .
