Completed
Pull Request — master (#473)
by Manas
02:22
created

wait_net_service()   A

Complexity

Conditions 4

Size

Total Lines 18

Duplication

Lines 0
Ratio 0 %
Metric Value
cc 4
dl 0
loc 18
rs 9.2
1
#!/usr/bin/env python2.7
2
3
import argparse
4
import socket
5
import time
6
7
8
def wait_net_service(server, port, sleep=10, timeout=5):
9
    """ Wait for network service to appear
10
        @param timeout: in seconds, if None or 0 wait forever
11
        @return: True of False, if timeout is None may return only True or
12
                 throw unhandled network exception
13
    """
14
15
    s = socket.socket()
16
17
    while True:
18
        try:
19
            s.settimeout(timeout)
20
            s.connect((server, port))
21
        except:
22
            time.sleep(sleep)
23
        else:
24
            s.close()
25
            return True
26
27
if __name__ == '__main__':
28
    parser = argparse.ArgumentParser(description='Port open checker.')
29
    parser.add_argument('--server', '--h', required=True,
30
                        help='Server address.'),
31
    parser.add_argument('--check_port', '-p', required=True, type=int,
32
                        help='Port to check.')
33
    parser.add_argument('--timeout', '-t', required=False, type=float,
34
                        help='Socket timeout.', default=5)
35
    parser.add_argument('--sleep', '-s', required=False, type=float,
36
                        help='Sleep on socket timeout', default=10)
37
    args = parser.parse_args()
38
39
    wait_net_service(args.server, args.check_port,
40
                     sleep=args.sleep,
41
                     timeout=args.timeout)
42