Refs #913: Adding loop to connect to the server when OGAgent is activated.
parent
03a1cb28f1
commit
feb481a8b3
|
@ -82,7 +82,9 @@ class OpenGnSysWorker(ServerWorker):
|
|||
"""
|
||||
Sends OGAgent activation notification to OpenGnsys server
|
||||
"""
|
||||
self.cmd = None
|
||||
t = 0
|
||||
# Generate random secret to send on activation
|
||||
self.random = ''.join(random.choice(string.ascii_lowercase + string.digits) for _ in range(self.length))
|
||||
# Ensure cfg has required configuration variables or an exception will be thrown
|
||||
self.REST = REST(self.service.config.get('opengnsys', 'remote'))
|
||||
# Get network interfaces until they are active or timeout (5 minutes)
|
||||
|
@ -101,6 +103,28 @@ class OpenGnSysWorker(ServerWorker):
|
|||
# Raise error after timeout
|
||||
if not self.interface:
|
||||
raise e
|
||||
# Loop to send initialization message
|
||||
for t in range(0, 100):
|
||||
try:
|
||||
try:
|
||||
self.REST.sendMessage('ogagent/started', {'mac': self.interface.mac, 'ip': self.interface.ip,
|
||||
'secret': self.random, 'ostype': operations.osType,
|
||||
'osversion': operations.osVersion})
|
||||
break
|
||||
except:
|
||||
# Trying to initialize on alternative server, if defined
|
||||
# (used in "exam mode" from the University of Seville)
|
||||
self.REST = REST(self.service.config.get('opengnsys', 'altremote'))
|
||||
self.REST.sendMessage('ogagent/started', {'mac': self.interface.mac, 'ip': self.interface.ip,
|
||||
'secret': self.random, 'ostype': operations.osType,
|
||||
'osversion': operations.osVersion, 'alt_url': True})
|
||||
break
|
||||
except:
|
||||
time.sleep(3)
|
||||
if 0 < t < 100:
|
||||
logger.debug("Successful connection after {} tries".format(t))
|
||||
elif t == 100:
|
||||
raise Exception('Initialization error: Cannot connect to remote server')
|
||||
# Delete marking files
|
||||
for f in ['ogboot.me', 'ogboot.firstboot', 'ogboot.secondboot']:
|
||||
try:
|
||||
|
@ -113,23 +137,6 @@ class OpenGnSysWorker(ServerWorker):
|
|||
newHostsFile = hostsFile + '.' + self.interface.ip.split('.')[0]
|
||||
if os.path.isfile(newHostsFile):
|
||||
shutil.copyfile(newHostsFile, hostsFile)
|
||||
# Generate random secret to send on activation
|
||||
self.random = ''.join(random.choice(string.ascii_lowercase + string.digits) for _ in range(self.length))
|
||||
# Send initialization message
|
||||
try:
|
||||
try:
|
||||
self.REST.sendMessage('ogagent/started', {'mac': self.interface.mac, 'ip': self.interface.ip,
|
||||
'secret': self.random, 'ostype': operations.osType,
|
||||
'osversion': operations.osVersion})
|
||||
except:
|
||||
# Trying to initialize on alternative server, if defined
|
||||
# (used in "exam mode" from the University of Seville)
|
||||
self.REST = REST(self.service.config.get('opengnsys', 'altremote'))
|
||||
self.REST.sendMessage('ogagent/started', {'mac': self.interface.mac, 'ip': self.interface.ip,
|
||||
'secret': self.random, 'ostype': operations.osType,
|
||||
'osversion': operations.osVersion, 'alt_url': True})
|
||||
except:
|
||||
logger.error('Initialization error')
|
||||
|
||||
def onDeactivation(self):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue