summaryrefslogtreecommitdiff
path: root/azurelinuxagent/agent.py
diff options
context:
space:
mode:
Diffstat (limited to 'azurelinuxagent/agent.py')
-rw-r--r--azurelinuxagent/agent.py99
1 files changed, 77 insertions, 22 deletions
diff --git a/azurelinuxagent/agent.py b/azurelinuxagent/agent.py
index 93e9c16..1309d94 100644
--- a/azurelinuxagent/agent.py
+++ b/azurelinuxagent/agent.py
@@ -25,48 +25,91 @@ import os
import sys
import re
import subprocess
-from azurelinuxagent.metadata import AGENT_NAME, AGENT_LONG_VERSION, \
+import azurelinuxagent.common.logger as logger
+import azurelinuxagent.common.event as event
+import azurelinuxagent.common.conf as conf
+from azurelinuxagent.common.version import AGENT_NAME, AGENT_LONG_VERSION, \
DISTRO_NAME, DISTRO_VERSION, \
PY_VERSION_MAJOR, PY_VERSION_MINOR, \
PY_VERSION_MICRO
-
-from azurelinuxagent.distro.loader import get_distro
+from azurelinuxagent.common.osutil import get_osutil
class Agent(object):
def __init__(self, verbose):
"""
Initialize agent running environment.
"""
- self.distro = get_distro();
- self.distro.init_handler.run(verbose)
+ self.osutil = get_osutil()
+ #Init stdout log
+ level = logger.LogLevel.VERBOSE if verbose else logger.LogLevel.INFO
+ logger.add_logger_appender(logger.AppenderType.STDOUT, level)
+
+ #Init config
+ conf_file_path = self.osutil.get_agent_conf_file_path()
+ conf.load_conf_from_file(conf_file_path)
+
+ #Init log
+ verbose = verbose or conf.get_logs_verbose()
+ level = logger.LogLevel.VERBOSE if verbose else logger.LogLevel.INFO
+ logger.add_logger_appender(logger.AppenderType.FILE, level,
+ path="/var/log/waagent.log")
+ logger.add_logger_appender(logger.AppenderType.CONSOLE, level,
+ path="/dev/console")
+
+ #Init event reporter
+ event_dir = os.path.join(conf.get_lib_dir(), "events")
+ event.init_event_logger(event_dir)
+ event.enable_unhandled_err_dump("WALA")
def daemon(self):
"""
Run agent daemon
"""
- self.distro.daemon_handler.run()
+ from azurelinuxagent.daemon import get_daemon_handler
+ daemon_handler = get_daemon_handler()
+ daemon_handler.run()
+
+ def provision(self):
+ """
+ Run provision command
+ """
+ from azurelinuxagent.pa.provision import get_provision_handler
+ provision_handler = get_provision_handler()
+ provision_handler.run()
def deprovision(self, force=False, deluser=False):
"""
Run deprovision command
"""
- self.distro.deprovision_handler.run(force=force, deluser=deluser)
+ from azurelinuxagent.pa.deprovision import get_deprovision_handler
+ deprovision_handler = get_deprovision_handler()
+ deprovision_handler.run(force=force, deluser=deluser)
def register_service(self):
"""
Register agent as a service
"""
print("Register {0} service".format(AGENT_NAME))
- self.distro.osutil.register_agent_service()
+ self.osutil.register_agent_service()
print("Start {0} service".format(AGENT_NAME))
- self.distro.osutil.start_agent_service()
+ self.osutil.start_agent_service()
+
+ def run_exthandlers(self):
+ """
+ Run the update and extension handler
+ """
+ from azurelinuxagent.ga.update import get_update_handler
+ update_handler = get_update_handler()
+ update_handler.run()
-def main():
+def main(args=[]):
"""
Parse command line arguments, exit with usage() on error.
Invoke different methods according to different command
"""
- command, force, verbose = parse_args(sys.argv[1:])
+ if len(args) <= 0:
+ args = sys.argv[1:]
+ command, force, verbose = parse_args(args)
if command == "version":
version()
elif command == "help":
@@ -74,15 +117,22 @@ def main():
elif command == "start":
start()
else:
- agent = Agent(verbose)
- if command == "deprovision+user":
- agent.deprovision(force, deluser=True)
- elif command == "deprovision":
- agent.deprovision(force, deluser=False)
- elif command == "register-service":
- agent.register_service()
- elif command == "daemon":
- agent.daemon()
+ try:
+ agent = Agent(verbose)
+ if command == "deprovision+user":
+ agent.deprovision(force, deluser=True)
+ elif command == "deprovision":
+ agent.deprovision(force, deluser=False)
+ elif command == "provision":
+ agent.provision()
+ elif command == "register-service":
+ agent.register_service()
+ elif command == "daemon":
+ agent.daemon()
+ elif command == "run-exthandlers":
+ agent.run_exthandlers()
+ except Exception as e:
+ logger.error(u"Failed to run '{0}': {1}", command, e)
def parse_args(sys_args):
"""
@@ -102,6 +152,8 @@ def parse_args(sys_args):
cmd = "start"
elif re.match("^([-/]*)register-service", a):
cmd = "register-service"
+ elif re.match("^([-/]*)run-exthandlers", a):
+ cmd = "run-exthandlers"
elif re.match("^([-/]*)version", a):
cmd = "version"
elif re.match("^([-/]*)verbose", a):
@@ -128,8 +180,9 @@ def usage():
Show agent usage
"""
print("")
- print((("usage: {0} [-verbose] [-force] [-help]"
- "-deprovision[+user]|-register-service|-version|-daemon|-start]"
+ print((("usage: {0} [-verbose] [-force] [-help] "
+ "-deprovision[+user]|-register-service|-version|-daemon|-start|"
+ "-run-exthandlers]"
"").format(sys.argv[0])))
print("")
@@ -141,3 +194,5 @@ def start():
devnull = open(os.devnull, 'w')
subprocess.Popen([sys.argv[0], '-daemon'], stdout=devnull, stderr=devnull)
+if __name__ == '__main__' :
+ main()