3636
3737from http import server
3838import signal
39+ import socket
3940import sys
4041import time
4142import threading
4748from cinder import objects
4849
4950
50- HOSTNAME = ''
5151SERVER_PORT = 8080
5252CONF = cfg .CONF
5353BINARIES = ('volume' , 'backup' , 'scheduler' )
5454
55+ class HTTPServerV6 (server .HTTPServer ):
56+ address_family = socket .AF_INET6
5557
5658class HeartbeatServer (server .BaseHTTPRequestHandler ):
5759 @classmethod
@@ -164,7 +166,12 @@ def stopper(signal_number=None, frame=None):
164166
165167 HeartbeatServer .initialize_class (binary )
166168
167- webServer = server .HTTPServer ((HOSTNAME , SERVER_PORT ), HeartbeatServer )
169+ hostname = socket .gethostname ()
170+ ipv6_address = socket .getaddrinfo (hostname , None , socket .AF_INET6 )
171+ if ipv6_address :
172+ webServer = HTTPServerV6 (("::" ,SERVER_PORT ), HeartbeatServer )
173+ else :
174+ webServer = server .HTTPServer (("0.0.0.0" , SERVER_PORT ), HeartbeatServer )
168175 stop = get_stopper (webServer )
169176
170177 # Need to run the server on a different thread because its shutdown method
@@ -173,7 +180,7 @@ def stopper(signal_number=None, frame=None):
173180 thread = threading .Thread (target = webServer .serve_forever )
174181 thread .daemon = True
175182 thread .start ()
176- print (f"Cinder Healthcheck Server started http://{ HOSTNAME } :{ SERVER_PORT } " )
183+ print (f"Cinder Healthcheck Server started http://{ hostname } :{ SERVER_PORT } " )
177184 signal .signal (signal .SIGTERM , stop )
178185
179186 try :
0 commit comments