diff options
| author | Jim Rollenhagen <jim@jimrollenhagen.com> | 2014-03-31 15:02:13 -0700 |
|---|---|---|
| committer | Jim Rollenhagen <jim@jimrollenhagen.com> | 2014-04-01 06:23:24 -0700 |
| commit | 9cfa63d2d0671361296a102804e0707f6bdf133c (patch) | |
| tree | 3eaf09f65701a2251935a889e14a32f88aeee479 /ironic_python_agent/cmd | |
| parent | 32fe6e14c9f879a070c994b3e4741fe930c00f3b (diff) | |
| download | ironic-python-agent-9cfa63d2d0671361296a102804e0707f6bdf133c.tar.gz | |
Add kernel parameter support
Allow the agent to read arguments from the kernel command line.
Priority is: agent command line, kernel command line, defaults.
Change-Id: Idfd43a8b7fdf6c368cf55d45b32cb7bcfbb56212
Diffstat (limited to 'ironic_python_agent/cmd')
| -rw-r--r-- | ironic_python_agent/cmd/agent.py | 53 |
1 files changed, 43 insertions, 10 deletions
diff --git a/ironic_python_agent/cmd/agent.py b/ironic_python_agent/cmd/agent.py index 14fdf381..431698d1 100644 --- a/ironic_python_agent/cmd/agent.py +++ b/ironic_python_agent/cmd/agent.py @@ -17,51 +17,84 @@ limitations under the License. import argparse from ironic_python_agent import agent +from ironic_python_agent.openstack.common import log + + +LOG = log.getLogger() + + +def _get_kernel_params(): + try: + with open('/proc/cmdline') as f: + cmdline = f.read() + except Exception as e: + LOG.exception('Could not read /proc/cmdline: {e}'.format(e=e)) + return {} + + options = cmdline.split() + params = {} + for option in options: + if '=' not in option: + continue + k, v = option.split('=', 1) + params[k] = v + + return params def run(): + kparams = _get_kernel_params() + parser = argparse.ArgumentParser( description=('An agent that handles decomissioning and provisioning' ' on behalf of Ironic.')) - parser.add_argument('--api-url', - required=True, - help='URL of the Ironic API') + api_url = kparams.get('ipa-api-url') + if api_url is None: + parser.add_argument('--api-url', + required=True, + help='URL of the Ironic API') parser.add_argument('--listen-host', - default='0.0.0.0', + default=kparams.get('ipa-listen-host', '0.0.0.0'), type=str, help='The IP address to listen on.') parser.add_argument('--listen-port', - default=9999, + default=int(kparams.get('ipa-listen-port', 9999)), type=int, help='The port to listen on') + parser.add_argument('--advertise-host', - default='0.0.0.0', + default=kparams.get('ipa-advertise-host', '0.0.0.0'), type=str, help='The host to tell Ironic to reply and send ' 'commands to.') + parser.add_argument('--advertise-port', - default=9999, + default=int(kparams.get('ipa-advertise-port', 9999)), type=int, help='The port to tell Ironic to reply and send ' 'commands to.') + parser.add_argument('--lookup-timeout', - default=300, + default=int(kparams.get('ipa-lookup-timeout', 300)), type=int, help='The amount of time to retry the initial lookup ' 'call to Ironic. After the timeout, the agent ' 'will exit with a non-zero exit code.') + parser.add_argument('--lookup-interval', - default=1, + default=int(kparams.get('ipa-lookup-timeout', 1)), type=int, help='The initial interval for retries on the initial ' 'lookup call to Ironic. The interval will be ' 'doubled after each failure until timeout is ' 'exceeded.') + args = parser.parse_args() - agent.build_agent(args.api_url, + + agent.build_agent(api_url or args.api_url, args.advertise_host, args.advertise_port, args.listen_host, |
