diff --git a/run_test.py b/run_test.py
index 89b793f..1dac2e5 100755
--- a/run_test.py
+++ b/run_test.py
@@ -132,7 +132,8 @@
                         action='store_true', default=False,
                         help="print some extra log info")
 
-    parser.add_argument("-b", '--build_description', type=str, default="Build info")
+    parser.add_argument("-b", '--build_description',
+                        type=str, default="Build info")
     parser.add_argument("-i", '--build_id', type=str, default="id")
     parser.add_argument("-t", '--build_type', type=str, default="GA")
     parser.add_argument("-u", '--username', type=str, default="admin")
diff --git a/scripts/agent.py b/scripts/agent.py
index ec73736..f1fc3da 100644
--- a/scripts/agent.py
+++ b/scripts/agent.py
@@ -28,9 +28,9 @@
 
 def format_ip(addr):
     return str(ord(addr[0])) + '.' + \
-           str(ord(addr[1])) + '.' + \
-           str(ord(addr[2])) + '.' + \
-           str(ord(addr[3]))
+        str(ord(addr[1])) + '.' + \
+        str(ord(addr[2])) + '.' + \
+        str(ord(addr[3]))
 
 
 def find_interface_by_ip(ext_ip):
@@ -57,7 +57,8 @@
 
     for ip in ips:
         p = subprocess.Popen(["iptables -t nat " + mode + " PREROUTING " +
-                              "-p tcp -i " + iface + "  --dport " + str(base_port) +
+                              "-p tcp -i " + iface + "  --dport "
+                              + str(base_port) +
                               " -j DNAT --to " + str(ip) + ":22"],
                              stdin=subprocess.PIPE,
                              stdout=subprocess.PIPE,
diff --git a/scripts/connector.py b/scripts/connector.py
index ca72ddc..0bbf447 100644
--- a/scripts/connector.py
+++ b/scripts/connector.py
@@ -43,7 +43,8 @@
     ssh.connect(hostname=admin_ip, port=ssh_creds["port"],
                 password=ssh_creds["password"], username=ssh_creds["username"])
 
-    command = "python /tmp/agent.py --clean=True --ext_ip=" + admin_ip + " --base_port=" \
+    command = "python /tmp/agent.py --clean=True --ext_ip=" + \
+              admin_ip + " --base_port=" \
               + str(base_port) + " --ports"
 
     for node in nodes:
@@ -66,7 +67,8 @@
     fuel_id_rsa_path = tmp_name
     sftp.get('/root/.ssh/id_rsa', fuel_id_rsa_path)
     os.chmod(fuel_id_rsa_path, 0o700)
-    command = "python /tmp/agent.py --base_port=" + str(base_port) + " --ext_ip=" \
+    command = "python /tmp/agent.py --base_port=" + \
+              str(base_port) + " --ext_ip=" \
               + host + " --ports"
 
     for address in ip_addresses:
@@ -92,8 +94,9 @@
         role = roles[i]
         port = node_port_mapping[ip]
 
-        nodes_to_clean.append(("ssh://root@" + ip + ":" + port.rstrip('\n')
-                                + ":" + fuel_id_rsa_path, role))
+        nodes_to_clean.append(("ssh://root@" + ip + ":" +
+                               port.rstrip('\n')
+                               + ":" + fuel_id_rsa_path, role))
 
         nodes.append(("ssh://root@" + host + ":" + port.rstrip('\n')
                       + ":" + fuel_id_rsa_path, role))
@@ -118,14 +121,14 @@
     parser.add_argument(
         "--creds", default="admin:admin:admin")
 
-
     return parser.parse_args(argv)
 
 
 def main(argv):
     args = parse_command_line(argv)
 
-    nodes, to_clean = discover_fuel_nodes(args.fuel_url, args.creds, args.cluster_id)
+    nodes, to_clean = discover_fuel_nodes(args.fuel_url,
+                                          args.creds, args.cluster_id)
     discover_fuel_nodes_clean(args.fuel_url, {"username": "root",
                                               "password": "test37",
                                               "port": 22}, to_clean)
