Add --detailed-exit-codes
This patch adds a new --detailed-exit-codes option which can be used to optionally enable the os-net-config CLI to return exit code 2 if there have been modifications. Detailed exit codes are useful if you need to trigger subsequent external actions based whether os-net-config made changes or not. Change-Id: I8f22fa15335d1276f4e444a6454a24ff486e1495
This commit is contained in:
parent
103b87aa82
commit
7aed850aaf
|
@ -48,6 +48,13 @@ def parse_opts(argv):
|
|||
parser.add_argument('-r', '--root-dir', metavar='ROOT_DIR',
|
||||
help="""The root directory of the filesystem.""",
|
||||
default='')
|
||||
parser.add_argument('--detailed-exit-codes',
|
||||
action='store_true',
|
||||
help="""Enable detailed exit codes. """
|
||||
"""If enabled an exit code of '2' means """
|
||||
"""that files were modified."""
|
||||
"""Disabled by default.""",
|
||||
default=False)
|
||||
parser.add_argument(
|
||||
'-d', '--debug',
|
||||
dest="debug",
|
||||
|
@ -183,6 +190,10 @@ def main(argv=sys.argv):
|
|||
print("File: %s\n" % location)
|
||||
print(data)
|
||||
print("----")
|
||||
|
||||
if opts.detailed_exit_codes and len(files_changed) > 0:
|
||||
return 2
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
|
|
|
@ -17,7 +17,9 @@
|
|||
import os.path
|
||||
import sys
|
||||
|
||||
import os_net_config
|
||||
from os_net_config import cli
|
||||
from os_net_config import impl_ifcfg
|
||||
from os_net_config.tests import base
|
||||
import six
|
||||
|
||||
|
@ -121,3 +123,26 @@ class TestCli(base.TestCase):
|
|||
'-c %s' % (provider, bond_yaml))
|
||||
self.assertEqual('', stderr)
|
||||
self.assertIn('File: /rootfs/', stdout_yaml)
|
||||
|
||||
def test_interface_noop_detailed_exit_codes(self):
|
||||
interface_yaml = os.path.join(SAMPLE_BASE, 'interface.yaml')
|
||||
stdout_yaml, stderr = self.run_cli('ARG0 --provider=ifcfg --noop '
|
||||
'-c %s --detailed-exit-codes'
|
||||
% interface_yaml, exitcodes=(2,))
|
||||
|
||||
def test_interface_noop_detailed_exit_codes_no_changes(self):
|
||||
interface_yaml = os.path.join(SAMPLE_BASE, 'interface.yaml')
|
||||
|
||||
class TestImpl(os_net_config.NetConfig):
|
||||
|
||||
def add_interface(self, interface):
|
||||
pass
|
||||
|
||||
def apply(self, cleanup=False, activate=True):
|
||||
# this fake implementation returns no changes
|
||||
return {}
|
||||
|
||||
self.stubs.Set(impl_ifcfg, 'IfcfgNetConfig', TestImpl)
|
||||
stdout_yaml, stderr = self.run_cli('ARG0 --provider=ifcfg --noop '
|
||||
'-c %s --detailed-exit-codes'
|
||||
% interface_yaml, exitcodes=(0,))
|
||||
|
|
Loading…
Reference in New Issue