diff --git a/tcp_tests/fixtures/common_fixtures.py b/tcp_tests/fixtures/common_fixtures.py
index ad9ce46..5f7a22e 100644
--- a/tcp_tests/fixtures/common_fixtures.py
+++ b/tcp_tests/fixtures/common_fixtures.py
@@ -64,6 +64,7 @@
         return log_step.log_step(request.function, step_number)
     return _show_step
 
+
 @pytest.fixture(scope='function')
 def steps(request):
     steps_mark = request.keywords.get('steps', None)
diff --git a/tcp_tests/fixtures/stacklight_fixtures.py b/tcp_tests/fixtures/stacklight_fixtures.py
index f907055..c04f48f 100644
--- a/tcp_tests/fixtures/stacklight_fixtures.py
+++ b/tcp_tests/fixtures/stacklight_fixtures.py
@@ -39,8 +39,8 @@
 @pytest.mark.revert_snapshot(ext.SNAPSHOT.sl_deployed)
 @pytest.fixture(scope='function')
 def sl_deployed(revert_snapshot, request, config,
-                       hardware, underlay, common_services_deployed,
-                       sl_actions):
+                hardware, underlay, common_services_deployed,
+                sl_actions):
     """Fixture to get or install SL services on environment
 
     :param revert_snapshot: fixture that reverts snapshot that is specified
@@ -74,7 +74,7 @@
                            args='systemctl restart keepalived.service')
     LOG.warning('Restarting keepalived service on mon nodes...')
     sl_actions._salt.local(tgt='mon*', fun='cmd.run',
-                       args='systemctl restart keepalived.service')
+                           args='systemctl restart keepalived.service')
     return sl_actions
 
 
@@ -115,7 +115,7 @@
     # see https://mirantis.jira.com/browse/PROD-12038
     LOG.warning('Restarting keepalived service on controllers...')
     sl_actions._salt.local(tgt='ctl*', fun='cmd.run',
-                args='systemctl restart keepalived.service')
+                           args='systemctl restart keepalived.service')
     sl_actions._salt.local(tgt='mon*', fun='cmd.run',
                            args='systemctl restart keepalived.service')
     return sl_actions
diff --git a/tcp_tests/helpers/env_config.py b/tcp_tests/helpers/env_config.py
index 0331ac9..81e6764 100644
--- a/tcp_tests/helpers/env_config.py
+++ b/tcp_tests/helpers/env_config.py
@@ -19,7 +19,6 @@
 import os
 import re
 
-#from devops.helpers import templates
 from devops import error
 import json
 import yaml
@@ -316,7 +315,7 @@
                 )
             )
 
-            #self.config = templates.yaml_template_load(filename)
+            # self.config = templates.yaml_template_load(filename)
             self.config = yaml_template_load(filename, options)
         else:
             LOG.error("Template filename is not set, loading config " +
diff --git a/tcp_tests/helpers/ext.py b/tcp_tests/helpers/ext.py
index 98853f5..e525eea 100644
--- a/tcp_tests/helpers/ext.py
+++ b/tcp_tests/helpers/ext.py
@@ -23,6 +23,7 @@
         return collections.namedtuple('Enum', names)(*values)
     return collections.namedtuple('Enum', values)(*values)
 
+
 UNDERLAY_NODE_ROLES = enum(
     'salt_master',
     'salt_minion',
@@ -32,11 +33,13 @@
     'decapod_all',
 )
 
+
 NETWORK_TYPE = enum(
     'private',
     'admin'
 )
 
+
 SNAPSHOT = enum(
     'hardware',
     'underlay',
@@ -51,6 +54,7 @@
     'decapod_deployed',
 )
 
+
 LOG_LEVELS = enum(
     'INFO',
     'WARNING',
diff --git a/tcp_tests/helpers/netchecker.py b/tcp_tests/helpers/netchecker.py
index 76e7640..c83cac4 100644
--- a/tcp_tests/helpers/netchecker.py
+++ b/tcp_tests/helpers/netchecker.py
@@ -331,8 +331,9 @@
 
 
 @utils.retry(3, requests.exceptions.RequestException)
-def get_connectivity_status(k8sclient, netchecker_pod_port=NETCHECKER_NODE_PORT,
-               pod_name='netchecker-server', namespace='default'):
+def get_connectivity_status(k8sclient,
+                            netchecker_pod_port=NETCHECKER_NODE_PORT,
+                            pod_name='netchecker-server', namespace='default'):
 
     netchecker_srv_pod_names = [pod.name for pod in
                                 k8sclient.pods.list(namespace=namespace)
@@ -362,7 +363,7 @@
               if pod_name in pod.name], phase='Running', timeout=600)
 
 
-def check_network(k8sclient,  netchecker_pod_port,
+def check_network(k8sclient, netchecker_pod_port,
                   namespace='default', works=True):
     if works:
         assert get_connectivity_status(
@@ -376,11 +377,13 @@
 
 def wait_check_network(k8sclient, namespace='default', works=True, timeout=120,
                        interval=5, netchecker_pod_port=NETCHECKER_NODE_PORT):
-    helpers.wait_pass(lambda: check_network(k8sclient,
-                                            netchecker_pod_port=netchecker_pod_port,
-                                            namespace=namespace,
-                                            works=works),
-                      timeout=timeout, interval=interval)
+    helpers.wait_pass(
+        lambda: check_network(
+            k8sclient, netchecker_pod_port=netchecker_pod_port,
+            namespace=namespace,
+            works=works),
+        timeout=timeout,
+        interval=interval)
 
 
 def calico_block_traffic_on_node(underlay, target_node):
@@ -559,7 +562,7 @@
 
 
 def get_service_port(k8sclient, service_name='netchecker',
-                        namespace='netchecker'):
+                     namespace='netchecker'):
     full_service_name = [service.name for service
                          in k8sclient.services.list(namespace=namespace)
                          if service_name in service.name]
diff --git a/tcp_tests/helpers/oslo_cfg_types.py b/tcp_tests/helpers/oslo_cfg_types.py
index 135798f..d9d091b 100644
--- a/tcp_tests/helpers/oslo_cfg_types.py
+++ b/tcp_tests/helpers/oslo_cfg_types.py
@@ -112,5 +112,5 @@
 
         # Print info about default environment variables to console
         print ('{}={}  # {}'.format(env_var_name,
-                                   kwargs.get('default', ''),
-                                   kwargs.get('help', '')))
+                                    kwargs.get('default', ''),
+                                    kwargs.get('help', '')))
diff --git a/tcp_tests/helpers/utils.py b/tcp_tests/helpers/utils.py
index bf4eab4..922f5f2 100644
--- a/tcp_tests/helpers/utils.py
+++ b/tcp_tests/helpers/utils.py
@@ -336,11 +336,13 @@
 def render_template(file_path, options=None):
     required_env_vars = set()
     optional_env_vars = dict()
+
     def os_env(var_name, default=None):
         var = os.environ.get(var_name, default)
 
         if var is None:
-            raise Exception("Environment variable '{0}' is undefined!".format(var_name))
+            raise Exception("Environment variable '{0}' is undefined!"
+                            .format(var_name))
 
         if default is None:
             required_env_vars.add(var_name)
@@ -351,13 +353,14 @@
 
     if options is None:
         options = {}
-    options.update({'os_env': os_env,})
+    options.update({'os_env': os_env, })
 
     LOG.info("Reading template {0}".format(file_path))
 
     path, filename = os.path.split(file_path)
     environment = jinja2.Environment(
-        loader=jinja2.FileSystemLoader([path, os.path.dirname(path)], followlinks=True))
+        loader=jinja2.FileSystemLoader([path, os.path.dirname(path)],
+                                       followlinks=True))
     template = environment.get_template(filename).render(options)
 
     if required_env_vars:
diff --git a/tcp_tests/logger.py b/tcp_tests/logger.py
index b9d0c5a..2c73364 100644
--- a/tcp_tests/logger.py
+++ b/tcp_tests/logger.py
@@ -42,6 +42,7 @@
     def filter(self, record):
         return not record.levelno <= logging.DEBUG
 
+
 logging.getLogger('paramiko.transport').addFilter(NoDebugMessageFilter())
 logging.getLogger('paramiko.hostkeys').addFilter(NoDebugMessageFilter())
 logging.getLogger('iso8601.iso8601').addFilter(NoDebugMessageFilter())
@@ -70,4 +71,5 @@
         return wrapped
     return wrapper
 
+
 logwrap = debug(logger)
diff --git a/tcp_tests/managers/k8smanager.py b/tcp_tests/managers/k8smanager.py
index 04222d9..f02c843 100644
--- a/tcp_tests/managers/k8smanager.py
+++ b/tcp_tests/managers/k8smanager.py
@@ -55,10 +55,10 @@
             pillar='kubernetes:pool:apiserver:host')
         k8s_proxy_ip = set([ip
                             for item in k8s_proxy_ip_pillars
-                            for node,ip in item.items() if ip])
+                            for node, ip in item.items() if ip])
         k8s_hosts = set([ip
-                            for item in k8s_hosts
-                            for node,ip in item.items() if ip])
+                         for item in k8s_hosts
+                         for node, ip in item.items() if ip])
         assert len(k8s_hosts) == 1, (
             "Found more than one Kubernetes API hosts in pillars:{0}, "
             "expected one!").format(k8s_hosts)
@@ -253,10 +253,12 @@
         :param deploy_name: str, deploy name
         :return: bool
         """
-        deploy = self.api.deployments.get(name=deploy_name, namespace=namespace)
+        deploy = self.api.deployments.get(name=deploy_name,
+                                          namespace=namespace)
         return deploy.status.available_replicas == deploy.status.replicas
 
-    def wait_deploy_ready(self, deploy_name, namespace=None, timeout=60, interval=5):
+    def wait_deploy_ready(self, deploy_name, namespace=None, timeout=60,
+                          interval=5):
         """Wait until all pods are scheduled on nodes
 
         :param deploy_name: str, deploy name
diff --git a/tcp_tests/managers/openstack_manager.py b/tcp_tests/managers/openstack_manager.py
index 5396cef..4969e6e 100644
--- a/tcp_tests/managers/openstack_manager.py
+++ b/tcp_tests/managers/openstack_manager.py
@@ -53,16 +53,16 @@
                    "-e SOURCE_FILE=keystonercv3  "
                    "-e CUSTOM='--pattern {1}' "
                    "-v /root/:/home/rally {2}{3} "
-                   "-v /etc/ssl/certs/:/etc/ssl/certs/ >> image.output".format(
-                conf_name, pattern, registry, image_name))
+                   "-v /etc/ssl/certs/:/etc/ssl/certs/ >> image.output"
+                   .format(conf_name, pattern, registry, image_name))
         else:
             cmd = ("docker run --rm --net=host  "
                    "-e TEMPEST_CONF={0} "
                    "-e SKIP_LIST=mcp_skip.list "
                    "-e SOURCE_FILE=keystonercv3  "
                    "-v /root/:/home/rally {2}{3} "
-                   "-v /etc/ssl/certs/:/etc/ssl/certs/ >> image.output".format(
-                conf_name, pattern, registry, image_name))
+                   "-v /etc/ssl/certs/:/etc/ssl/certs/ >> image.output"
+                   .format(conf_name, pattern, registry, image_name))
         with self.__underlay.remote(node_name=target_name[0]) as node_remote:
             result = node_remote.execute(cmd)
             LOG.debug("Test execution result is {}".format(result))
diff --git a/tcp_tests/managers/saltmanager.py b/tcp_tests/managers/saltmanager.py
index 4d55d97..d02d7db 100644
--- a/tcp_tests/managers/saltmanager.py
+++ b/tcp_tests/managers/saltmanager.py
@@ -48,7 +48,7 @@
         super(SaltManager, self).__init__(config=config, underlay=underlay)
 
     def install(self, commands):
-        #if self.__config.salt.salt_master_host == '0.0.0.0':
+        # if self.__config.salt.salt_master_host == '0.0.0.0':
         #    # Temporary workaround. Underlay should be extended with roles
         #    salt_nodes = self.__underlay.node_names()
         #    self.__config.salt.salt_master_host = \
@@ -66,7 +66,7 @@
         if self.__host:
             return self.__host
         else:
-            #TODO(ddmitriev): consider to add a check and raise
+            # TODO(ddmitriev): consider to add a check and raise
             # exception if 'salt_master_host' is not initialized.
             return self.__config.salt.salt_master_host
 
diff --git a/tcp_tests/managers/sl_manager.py b/tcp_tests/managers/sl_manager.py
index 9ed13db..ee835ff 100644
--- a/tcp_tests/managers/sl_manager.py
+++ b/tcp_tests/managers/sl_manager.py
@@ -48,8 +48,8 @@
             tgt='I@keepalived:cluster:enabled:true and not ctl*',
             pillar='keepalived:cluster:instance:prometheus_server_vip:address')
         sl_vip_ip = set([ip
-                            for item in sl_vip_address_pillars
-                            for node,ip in item.items() if ip])
+                         for item in sl_vip_address_pillars
+                         for node, ip in item.items() if ip])
         assert len(sl_vip_ip) == 1, (
             "Found more than one SL VIP in pillars:{0}, "
             "expected one!").format(sl_vip_ip)
@@ -85,7 +85,8 @@
         target_node_name = [node_name for node_name
                             in self.__underlay.node_names()
                             if node_to_run in node_name]
-        with self.__underlay.remote(node_name=target_node_name[0]) as node_remote:
+        with self.__underlay.remote(node_name=target_node_name[0]) \
+                as node_remote:
             cmd = "pytest -k {}".format(path_tests_to_run)
             result = node_remote.execute(cmd)
             LOG.debug("Test execution result is {}".format(result))
@@ -113,7 +114,8 @@
                 .format(node, services_status, expected_services)
             for service in expected_services:
                 assert service in services_status,\
-                    'Missing service {0} in {1}'.format(service, services_status)
+                    'Missing service {0} in {1}'.format(service,
+                                                        services_status)
                 assert '0' not in services_status.get(service),\
                     'Service {0} failed to start'.format(service)
 
@@ -129,11 +131,11 @@
             LOG.info('Restarting keepalived service on mon nodes...')
             for node in nodes:
                 self._salt.local(tgt=node, fun='cmd.run',
-                                       args='systemctl restart keepalived')
+                                 args='systemctl restart keepalived')
             LOG.warning(
                 'Ip states after force restart {0}'.format(
                     self._salt.local(tgt='mon*',
-                                           fun='cmd.run', args='ip a')))
+                                     fun='cmd.run', args='ip a')))
             current_targets = prometheus_client.get_targets()
 
         LOG.debug('Current targets after install {0}'
diff --git a/tcp_tests/report.py b/tcp_tests/report.py
index a1058f8..46f5995 100644
--- a/tcp_tests/report.py
+++ b/tcp_tests/report.py
@@ -367,5 +367,6 @@
     args = run_cli()
     COMMAND_MAP[args.command](**vars(args))
 
+
 if __name__ == '__main__':
     main()
diff --git a/tcp_tests/settings.py b/tcp_tests/settings.py
index ef946a2..70b66d9 100644
--- a/tcp_tests/settings.py
+++ b/tcp_tests/settings.py
@@ -34,7 +34,7 @@
 SHUTDOWN_ENV_ON_TEARDOWN = get_var_as_bool('SHUTDOWN_ENV_ON_TEARDOWN', True)
 
 LAB_CONFIG_NAME = os.environ.get('LAB_CONFIG_NAME', 'mk22-lab-basic')
-#LAB_CONFIGS_NAME = os.environ.get('LAB_NAME', 'mk22-lab-advanced')
+# LAB_CONFIGS_NAME = os.environ.get('LAB_NAME', 'mk22-lab-advanced')
 
 SSH_LOGIN = os.environ.get('SSH_LOGIN', 'root')
 SSH_PASSWORD = os.environ.get('SSH_PASSWORD', 'r00tme')
diff --git a/tcp_tests/settings_oslo.py b/tcp_tests/settings_oslo.py
index cb56399..42f5917 100644
--- a/tcp_tests/settings_oslo.py
+++ b/tcp_tests/settings_oslo.py
@@ -49,18 +49,20 @@
 _default_openstack_steps = pkg_resources.resource_filename(
     __name__, 'templates/{0}/openstack.yaml'.format(
         settings.LAB_CONFIG_NAME))
-_default_opencontrail_prepare_tests_steps_path = pkg_resources.resource_filename(
-    __name__, 'templates/{0}/opencontrail.yaml'.format(
-        settings.LAB_CONFIG_NAME))
+_default_opencontrail_prepare_tests_steps_path = \
+    pkg_resources.resource_filename(
+        __name__, 'templates/{0}/opencontrail.yaml'.format(
+            settings.LAB_CONFIG_NAME))
 _default_sl_prepare_tests_steps_path = pkg_resources.resource_filename(
     __name__, 'templates/{0}/sl.yaml'.format(
         settings.LAB_CONFIG_NAME))
 _default_virtlet_prepare_tests_steps_path = pkg_resources.resource_filename(
     __name__, 'templates/{0}/virtlet.yaml'.format(
         settings.LAB_CONFIG_NAME))
-_default_virtlet_ceph_prepare_tests_steps_path = pkg_resources.resource_filename(
-    __name__, 'templates/{0}/virtlet_ceph.yaml'.format(
-        settings.LAB_CONFIG_NAME))
+_default_virtlet_ceph_prepare_tests_steps_path = \
+    pkg_resources.resource_filename(
+        __name__, 'templates/{0}/virtlet_ceph.yaml'.format(
+            settings.LAB_CONFIG_NAME))
 _default_k8s_steps = pkg_resources.resource_filename(
     __name__, 'templates/{0}/k8s.yaml'.format(
         settings.LAB_CONFIG_NAME))
diff --git a/tcp_tests/tests/environment/conftest.py b/tcp_tests/tests/environment/conftest.py
index 90f0fd4..50ab685 100644
--- a/tcp_tests/tests/environment/conftest.py
+++ b/tcp_tests/tests/environment/conftest.py
@@ -12,7 +12,6 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-#from tcp_tests.fixtures import *
 from tcp_tests.fixtures.common_fixtures import *
 from tcp_tests.fixtures.config_fixtures import *
 from tcp_tests.fixtures.underlay_fixtures import *
@@ -29,7 +28,7 @@
     'snapshot',
     # config_fixtures
     'config',
-    #underlay_fixtures
+    # underlay_fixtures
     'hardware',
     'underlay',
     # rally_fixtures
diff --git a/tcp_tests/tests/system/conftest.py b/tcp_tests/tests/system/conftest.py
index 4f904ed..d943a22 100644
--- a/tcp_tests/tests/system/conftest.py
+++ b/tcp_tests/tests/system/conftest.py
@@ -12,7 +12,6 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-#from tcp_tests.fixtures import *
 from tcp_tests.fixtures.common_fixtures import *
 from tcp_tests.fixtures.config_fixtures import *
 from tcp_tests.fixtures.underlay_fixtures import *
@@ -36,7 +35,7 @@
     'snapshot',
     # config_fixtures
     'config',
-    #underlay_fixtures
+    # underlay_fixtures
     'hardware',
     'underlay',
     # rally_fixtures
diff --git a/tcp_tests/tests/system/test_calico.py b/tcp_tests/tests/system/test_calico.py
index fd99c8d..6f28327 100644
--- a/tcp_tests/tests/system/test_calico.py
+++ b/tcp_tests/tests/system/test_calico.py
@@ -141,7 +141,7 @@
         pod_ping_cmd = 'sleep 3 && ping -q -c 1 -w 3 {0}'.format(target_pod_ip)
         underlay.sudo_check_call(cmd=pod_ping_cmd, node_name=first_node_name)
         LOG.debug('Local route to pod IP {0} on node {1} is '
-                     'recovered'.format(target_pod_ip, first_node.name))
+                  'recovered'.format(target_pod_ip, first_node.name))
 
         # STEP #7
         show_step(7)
@@ -150,7 +150,7 @@
     @pytest.mark.fail_snapshot
     # FIXME(apanchenko): uncomment as soon as the following bug is fixed
     # FIXME(apanchenko): https://mirantis.jira.com/browse/PROD-12532
-    #@pytest.mark.calico_ci
+    # @pytest.mark.calico_ci
     def test_calico_network_policies(self, show_step, config, underlay,
                                      k8s_deployed):
         """Test for deploying k8s environment with Calico and check
diff --git a/tcp_tests/tests/system/test_install_k8s.py b/tcp_tests/tests/system/test_install_k8s.py
index fa8f3fc..fa55d1b 100644
--- a/tcp_tests/tests/system/test_install_k8s.py
+++ b/tcp_tests/tests/system/test_install_k8s.py
@@ -59,10 +59,12 @@
         netchecker.wait_check_network(k8sclient, namespace='netchecker',
                                       netchecker_pod_port=netchecker_port)
         show_step(9)
-        res = netchecker.get_metric(k8sclient, netchecker_pod_port=netchecker_port,
+        res = netchecker.get_metric(k8sclient,
+                                    netchecker_pod_port=netchecker_port,
                                     namespace='netchecker')
 
-        assert res.status_code == 200, 'Unexpected response code {}'.format(res)
+        assert res.status_code == 200, 'Unexpected response code {}'\
+            .format(res)
         metrics = ['ncagent_error_count_total', 'ncagent_http_probe_code',
                    'ncagent_http_probe_connect_time_ms',
                    'ncagent_http_probe_connection_result',
@@ -80,7 +82,8 @@
         prometheus_client = sl_deployed.api
         try:
             current_targets = prometheus_client.get_targets()
-            LOG.debug('Current targets after install {0}'.format(current_targets))
+            LOG.debug('Current targets after install {0}'
+                      .format(current_targets))
         except:
             LOG.warning('Restarting keepalived service on mon nodes...')
             sl_actions._salt.local(tgt='mon*', fun='cmd.run',
@@ -90,15 +93,17 @@
                     sl_actions._salt.local(tgt='mon*',
                                            fun='cmd.run', args='ip a')))
             current_targets = prometheus_client.get_targets()
-            LOG.debug('Current targets after install {0}'.format(current_targets))
+            LOG.debug('Current targets after install {0}'
+                      .format(current_targets))
 
-        #todo (tleontovich) add assertion that k8s targets here
+        # todo (tleontovich) add assertion that k8s targets here
         for metric in metrics:
             res = prometheus_client.get_query(metric)
             for entry in res:
                 assert entry["metric"]["job"] == 'kubernetes-service-endpoints'
             LOG.debug('Metric {} exists'.format(res))
-            # todo (tleontovich) add asserts here and extend the tests with acceptance criteria
+            # todo (tleontovich) add asserts here and extend the tests
+            # with acceptance criteria
         
         if config.k8s.k8s_conformance_run:
             k8s_actions.run_conformance()
diff --git a/tcp_tests/tests/system/test_install_virtlet.py b/tcp_tests/tests/system/test_install_virtlet.py
index 367ed45..0341f11 100644
--- a/tcp_tests/tests/system/test_install_virtlet.py
+++ b/tcp_tests/tests/system/test_install_virtlet.py
@@ -29,7 +29,7 @@
 
     # @pytest.mark.fail_snapshot
     def test_virtlet_install(self, underlay, virtlet_deployed,
-                                     show_step):
+                             show_step):
         """Test for deploying an mcp environment with virtlet
 
         Scenario:
diff --git a/tcp_tests/tests/system/test_opencontrail.py b/tcp_tests/tests/system/test_opencontrail.py
index 542237e..3781f7d 100644
--- a/tcp_tests/tests/system/test_opencontrail.py
+++ b/tcp_tests/tests/system/test_opencontrail.py
@@ -29,7 +29,7 @@
 
     @pytest.mark.fail_snapshot
     def test_opencontrail(self, config, openstack_deployed,
-                                 show_step, opencontrail):
+                          show_step, opencontrail):
         """Runner for Juniper contrail-tests
 
         Scenario:
diff --git a/tcp_tests/tests/system/test_oss_install.py b/tcp_tests/tests/system/test_oss_install.py
index 2624cbd..ec6a6fb 100644
--- a/tcp_tests/tests/system/test_oss_install.py
+++ b/tcp_tests/tests/system/test_oss_install.py
@@ -24,7 +24,8 @@
 
     @pytest.mark.fail_snapshot
     def test_oss_install_default(self, underlay, show_step,
-                                 oss_deployed, openstack_deployed, sl_deployed):
+                                 oss_deployed, openstack_deployed,
+                                 sl_deployed):
         """Test for deploying an OSS environment and check it
 
         Scenario:
diff --git a/tcp_tests/tests/system/test_tcp_install.py b/tcp_tests/tests/system/test_tcp_install.py
index b633867..80bfc71 100644
--- a/tcp_tests/tests/system/test_tcp_install.py
+++ b/tcp_tests/tests/system/test_tcp_install.py
@@ -41,7 +41,7 @@
         LOG.info("*************** DONE **************")
 
     def test_tcp_install_run_rally(self, underlay, openstack_deployed,
-                                 show_step, rally):
+                                   show_step, rally):
         """Test for deploying an tcp environment and check it
 
         Scenario:
@@ -75,7 +75,8 @@
         """
 
         cmd = 'cd /srv/salt/reclass/scripts/; ./bootstrap_all.sh'
-        underlay.check_call(cmd, host=config.salt.salt_master_host, verbose=True)
+        underlay.check_call(cmd, host=config.salt.salt_master_host,
+                            verbose=True)
 
         # prepare rally
         rally.prepare()
diff --git a/tcp_tests/tests/system/test_virtlet_actions.py b/tcp_tests/tests/system/test_virtlet_actions.py
index 1935cff..cf48ca8 100644
--- a/tcp_tests/tests/system/test_virtlet_actions.py
+++ b/tcp_tests/tests/system/test_virtlet_actions.py
@@ -27,7 +27,7 @@
     """Test class for testing Virtlet actions"""
 
     def test_virtlet_create_delete_vm(self, underlay, virtlet_deployed,
-                                     show_step, virtlet_actions):
+                                      show_step, virtlet_actions):
         """Test for deploying an mcp environment with virtlet
 
         Scenario:
@@ -54,7 +54,7 @@
 
         target_cpu = 2  # Cores
         target_memory = 256  # Size in MB
-        target_memory_kb = target_memory*1024
+        target_memory_kb = target_memory * 1024
         target_yaml = 'virtlet/examples/cirros-vm-exp.yaml'
         virtlet_actions.adjust_cirros_resources(cpu=target_cpu,
                                                 memory=target_memory,
diff --git a/tox.ini b/tox.ini
index 122d612..2bfc54e 100644
--- a/tox.ini
+++ b/tox.ini
@@ -31,7 +31,7 @@
     flake8 {posargs:.}
 
 [flake8]
-ignore = E241,E305,E231,E306,E302,E265,E122,E128,E501,E127,E226,F401,F403,F821,H302,H802,W293,W391,W292
+ignore = F401,F403,F821,H302,H802,W293,W391,W292
 exclude = .venv,.git,.tox,dist,doc,*egg,build,local,./lib
 show-pep8 = True
 show-source = True
