~ubuntu-branches/debian/stretch/waagent/stretch

« back to all changes in this revision

Viewing changes to azurelinuxagent/agent.py

  • Committer: Package Import Robot
  • Author(s): Bastian Blank
  • Date: 2016-08-24 16:48:22 UTC
  • mfrom: (1.2.5)
  • Revision ID: package-import@ubuntu.com-20160824164822-vdf8m5xy5gycm1cz
Tags: 2.1.6-1
New upstream version.

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
import sys
26
26
import re
27
27
import subprocess
28
 
from azurelinuxagent.metadata import AGENT_NAME, AGENT_LONG_VERSION, \
 
28
import azurelinuxagent.common.logger as logger
 
29
import azurelinuxagent.common.event as event
 
30
import azurelinuxagent.common.conf as conf
 
31
from azurelinuxagent.common.version import AGENT_NAME, AGENT_LONG_VERSION, \
29
32
                                     DISTRO_NAME, DISTRO_VERSION, \
30
33
                                     PY_VERSION_MAJOR, PY_VERSION_MINOR, \
31
34
                                     PY_VERSION_MICRO
32
 
 
33
 
from azurelinuxagent.distro.loader import get_distro
 
35
from azurelinuxagent.common.osutil import get_osutil
34
36
 
35
37
class Agent(object):
36
38
    def __init__(self, verbose):
37
39
        """
38
40
        Initialize agent running environment.
39
41
        """
40
 
        self.distro = get_distro();
41
 
        self.distro.init_handler.run(verbose)
 
42
        self.osutil = get_osutil()
 
43
        #Init stdout log
 
44
        level = logger.LogLevel.VERBOSE if verbose else logger.LogLevel.INFO
 
45
        logger.add_logger_appender(logger.AppenderType.STDOUT, level)
 
46
 
 
47
        #Init config
 
48
        conf_file_path = self.osutil.get_agent_conf_file_path()
 
49
        conf.load_conf_from_file(conf_file_path)
 
50
 
 
51
        #Init log
 
52
        verbose = verbose or conf.get_logs_verbose()
 
53
        level = logger.LogLevel.VERBOSE if verbose else logger.LogLevel.INFO
 
54
        logger.add_logger_appender(logger.AppenderType.FILE, level,
 
55
                                 path="/var/log/waagent.log")
 
56
        logger.add_logger_appender(logger.AppenderType.CONSOLE, level,
 
57
                                 path="/dev/console")
 
58
 
 
59
        #Init event reporter
 
60
        event_dir = os.path.join(conf.get_lib_dir(), "events")
 
61
        event.init_event_logger(event_dir)
 
62
        event.enable_unhandled_err_dump("WALA")
42
63
 
43
64
    def daemon(self):
44
65
        """
45
66
        Run agent daemon
46
67
        """
47
 
        self.distro.daemon_handler.run()
 
68
        from azurelinuxagent.daemon import get_daemon_handler
 
69
        daemon_handler = get_daemon_handler()
 
70
        daemon_handler.run()
 
71
 
 
72
    def provision(self):
 
73
        """
 
74
        Run provision command
 
75
        """
 
76
        from azurelinuxagent.pa.provision import get_provision_handler
 
77
        provision_handler = get_provision_handler()
 
78
        provision_handler.run()
48
79
 
49
80
    def deprovision(self, force=False, deluser=False):
50
81
        """
51
82
        Run deprovision command
52
83
        """
53
 
        self.distro.deprovision_handler.run(force=force, deluser=deluser)
 
84
        from azurelinuxagent.pa.deprovision import get_deprovision_handler
 
85
        deprovision_handler = get_deprovision_handler()
 
86
        deprovision_handler.run(force=force, deluser=deluser)
54
87
 
55
88
    def register_service(self):
56
89
        """
57
90
        Register agent as a service
58
91
        """
59
92
        print("Register {0} service".format(AGENT_NAME))
60
 
        self.distro.osutil.register_agent_service()
 
93
        self.osutil.register_agent_service()
61
94
        print("Start {0} service".format(AGENT_NAME))
62
 
        self.distro.osutil.start_agent_service()
63
 
 
64
 
def main():
 
95
        self.osutil.start_agent_service()
 
96
 
 
97
    def run_exthandlers(self):
 
98
        """
 
99
        Run the update and extension handler
 
100
        """
 
101
        from azurelinuxagent.ga.update import get_update_handler
 
102
        update_handler = get_update_handler()
 
103
        update_handler.run()
 
104
 
 
105
def main(args=[]):
65
106
    """
66
107
    Parse command line arguments, exit with usage() on error.
67
108
    Invoke different methods according to different command
68
109
    """
69
 
    command, force, verbose = parse_args(sys.argv[1:])
 
110
    if len(args) <= 0:
 
111
        args = sys.argv[1:]
 
112
    command, force, verbose = parse_args(args)
70
113
    if command == "version":
71
114
        version()
72
115
    elif command == "help":
74
117
    elif command == "start":
75
118
        start()
76
119
    else:
77
 
        agent = Agent(verbose)
78
 
        if command == "deprovision+user":
79
 
            agent.deprovision(force, deluser=True)
80
 
        elif command == "deprovision":
81
 
            agent.deprovision(force, deluser=False)
82
 
        elif command == "register-service":
83
 
            agent.register_service()
84
 
        elif command == "daemon":
85
 
            agent.daemon()
 
120
        try:
 
121
            agent = Agent(verbose)
 
122
            if command == "deprovision+user":
 
123
                agent.deprovision(force, deluser=True)
 
124
            elif command == "deprovision":
 
125
                agent.deprovision(force, deluser=False)
 
126
            elif command == "provision":
 
127
                agent.provision()
 
128
            elif command == "register-service":
 
129
                agent.register_service()
 
130
            elif command == "daemon":
 
131
                agent.daemon()
 
132
            elif command == "run-exthandlers":
 
133
                agent.run_exthandlers()
 
134
        except Exception as e:
 
135
            logger.error(u"Failed to run '{0}': {1}", command, e)
86
136
 
87
137
def parse_args(sys_args):
88
138
    """
102
152
            cmd = "start"
103
153
        elif re.match("^([-/]*)register-service", a):
104
154
            cmd = "register-service"
 
155
        elif re.match("^([-/]*)run-exthandlers", a):
 
156
            cmd = "run-exthandlers"
105
157
        elif re.match("^([-/]*)version", a):
106
158
            cmd = "version"
107
159
        elif re.match("^([-/]*)verbose", a):
128
180
    Show agent usage
129
181
    """
130
182
    print("")
131
 
    print((("usage: {0} [-verbose] [-force] [-help]"
132
 
           "-deprovision[+user]|-register-service|-version|-daemon|-start]"
 
183
    print((("usage: {0} [-verbose] [-force] [-help] "
 
184
           "-deprovision[+user]|-register-service|-version|-daemon|-start|"
 
185
           "-run-exthandlers]"
133
186
           "").format(sys.argv[0])))
134
187
    print("")
135
188
 
141
194
    devnull = open(os.devnull, 'w')
142
195
    subprocess.Popen([sys.argv[0], '-daemon'], stdout=devnull, stderr=devnull)
143
196
 
 
197
if __name__ == '__main__' :
 
198
    main()