TestHandlerLinux/installer/install.py (54 lines of code) (raw):
#!/usr/bin/env python
"""
Example Azure Handler script for Linux IaaS
Install example
Reads port from Public Config if present.
Creates service_port.txt in resources dir.
"""
import os
import imp
import time
waagent=imp.load_source('waagent','/usr/sbin/waagent')
from waagent import LoggerInit
hutil=imp.load_source('HandlerUtil','./resources/HandlerUtil.py')
LoggerInit('/var/log/waagent.log','/dev/stdout')
waagent.Log("install.py starting.")
logfile=waagent.Log
name,seqNo,version,config_dir,log_dir,settings_file,status_file,heartbeat_file,config=hutil.doParse(logfile,'Install')
LoggerInit('/var/log/'+name+'_Install.log','/dev/stdout')
waagent.Log(name+" - install.py starting.")
logfile=waagent.Log
hutil.doStatusReport(name,seqNo,version,status_file,time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()),time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()),name,
'Install', 'transitioning', '0', 'Installing', 'Process Config', 'transitioning', '0', 'Parsing ' + settings_file)
hutil.doHealthReport(heartbeat_file,'NotReady','0','Proccessing Settings')
pub=""
priv = ""
# process the config info from public and private config
try:
pub = config['runtimeSettings'][0]['handlerSettings']['publicSettings']
except:
waagent.Error("json threw an exception processing config PublicSettings.")
try:
priv = config['runtimeSettings'][0]['handlerSettings']['protectedSettings']
except:
waagent.Error("json threw an exception processing config protectedSettings.")
waagent.Log("PublicConfig =" + repr(pub) )
port=None
if len(pub):
try:
port = pub['port']
except:
waagent.Error("json threw an exception processing public setting: port")
waagent.Log("ProtectedConfig =" + repr(priv) )
if len(priv):
try:
port = priv['port']
except:
waagent.Error("json threw an exception processing protected setting: port")
if port == None:
port = "3000"
error_string=None
if port == None:
error_string += "ServicePort is empty. "
error_string = "Error: " + error_string
waagent.Error(error_string)
hutil.doExit(name,seqNo,version,1,status_file,heartbeat_file,'Install/Enable','errior','1', 'Install Failed', 'Parse Config', 'error', '1',error_string,'NotReady','1','Exiting')
error_string=None
waagent.SetFileContents('./resources/service_port.txt',port)
# move the service to sbin
waagent.SetFileContents('/usr/sbin/service.py',waagent.GetFileContents('./bin/service.py'))
waagent.ReplaceStringInFile('/usr/sbin/service.py','RESOURCES_PATH',os.path.realpath('./resources'))
os.chmod('/usr/sbin/service.py',0700)
# report ready
waagent.Log("HandlerTestLinux installation completed.")
hutil.doExit(name,seqNo,version,0,status_file,heartbeat_file,'Install','success','0', 'Install Succeeded.', 'Exit Successfull', 'success', '0', 'Installation Completed.','Ready','0',name+' installation completed.')