Merge "Drop support for ansible 2.7"
This commit is contained in:
commit
d466669208
|
@ -264,7 +264,6 @@
|
|||
success-url: 'npm/reports/bundle.html'
|
||||
files:
|
||||
- web/.*
|
||||
- zuul-stream-functional-2.7
|
||||
- zuul-stream-functional-2.8
|
||||
- zuul-stream-functional-2.9
|
||||
- zuul-tox-remote:
|
||||
|
@ -306,7 +305,6 @@
|
|||
success-url: 'npm/reports/bundle.html'
|
||||
files:
|
||||
- web/.*
|
||||
- zuul-stream-functional-2.7
|
||||
- zuul-stream-functional-2.8
|
||||
- zuul-stream-functional-2.9
|
||||
- zuul-tox-remote:
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
upgrade:
|
||||
- |
|
||||
Support for Ansible 2.7 has been removed.
|
|
@ -34,15 +34,7 @@
|
|||
parent: ansible-version
|
||||
vars:
|
||||
test_ansible_version_major: 2
|
||||
test_ansible_version_minor: 7
|
||||
|
||||
- job:
|
||||
name: ansible-27
|
||||
parent: ansible-version
|
||||
ansible-version: 2.7
|
||||
vars:
|
||||
test_ansible_version_major: 2
|
||||
test_ansible_version_minor: 7
|
||||
test_ansible_version_minor: 8
|
||||
|
||||
- job:
|
||||
name: ansible-28
|
||||
|
@ -66,7 +58,6 @@
|
|||
check:
|
||||
jobs:
|
||||
- ansible-default
|
||||
- ansible-27
|
||||
- ansible-28
|
||||
- ansible-29
|
||||
|
||||
|
@ -75,6 +66,5 @@
|
|||
check:
|
||||
jobs:
|
||||
- ansible-default-zuul-conf
|
||||
- ansible-27
|
||||
- ansible-28
|
||||
- ansible-29
|
||||
|
|
|
@ -99,15 +99,6 @@
|
|||
label: ubuntu-xenial
|
||||
run: playbooks/jinja2-message.yaml
|
||||
|
||||
- job:
|
||||
name: ansible-version27-inventory
|
||||
nodeset:
|
||||
nodes:
|
||||
- name: ubuntu-xenial
|
||||
label: ubuntu-xenial
|
||||
ansible-version: '2.7'
|
||||
run: playbooks/ansible-version.yaml
|
||||
|
||||
- job:
|
||||
name: ansible-version28-inventory
|
||||
nodeset:
|
||||
|
|
|
@ -7,5 +7,4 @@
|
|||
- executor-only-inventory
|
||||
- group-inventory
|
||||
- hostvars-inventory
|
||||
- ansible-version27-inventory
|
||||
- ansible-version28-inventory
|
||||
|
|
|
@ -6,5 +6,4 @@
|
|||
- executor-only-inventory
|
||||
- group-inventory
|
||||
- hostvars-inventory
|
||||
- ansible-version27-inventory
|
||||
- ansible-version28-inventory
|
||||
|
|
|
@ -9,7 +9,7 @@ server=127.0.0.1
|
|||
[scheduler]
|
||||
tenant_config=main.yaml
|
||||
relative_priority=true
|
||||
default_ansible_version=2.7
|
||||
default_ansible_version=2.8
|
||||
|
||||
[merger]
|
||||
git_dir=/tmp/zuul-test/merger-git
|
||||
|
|
|
@ -222,14 +222,6 @@ class FunctionalActionModulesMixIn:
|
|||
self._run_job('known-hosts-bad', 'FAILURE', ERROR_ACCESS_OUTSIDE)
|
||||
|
||||
|
||||
class TestActionModules27(AnsibleZuulTestCase, FunctionalActionModulesMixIn):
|
||||
ansible_version = '2.7'
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self._setUp()
|
||||
|
||||
|
||||
class TestActionModules28(AnsibleZuulTestCase, FunctionalActionModulesMixIn):
|
||||
ansible_version = '2.8'
|
||||
|
||||
|
|
|
@ -91,8 +91,11 @@ class FunctionalZuulJSONMixIn:
|
|||
text = self._get_json_as_text(build)
|
||||
json_result = json.loads(text)
|
||||
tasks = json_result[0]['plays'][0]['tasks']
|
||||
# NOTE(pabelanger): In 2.8 gather_facts are now logged as an
|
||||
# expected action.
|
||||
expected_actions = [
|
||||
'debug', 'debug', 'debug', 'copy', 'find', 'stat', 'debug'
|
||||
'gather_facts', 'debug', 'debug', 'debug', 'copy', 'find',
|
||||
'stat', 'debug'
|
||||
]
|
||||
for i, expected in enumerate(expected_actions):
|
||||
host_result = tasks[i]['hosts']['controller']
|
||||
|
@ -108,10 +111,12 @@ class FunctionalZuulJSONMixIn:
|
|||
self.assertIn('json-role', text)
|
||||
|
||||
json_result = json.loads(text)
|
||||
role_name = json_result[0]['plays'][0]['tasks'][0]['role']['name']
|
||||
# NOTE(pabelanger): In 2.8 gather_facts are now logged as the
|
||||
# first task.
|
||||
role_name = json_result[0]['plays'][0]['tasks'][1]['role']['name']
|
||||
self.assertEqual('json-role', role_name)
|
||||
|
||||
role_path = json_result[0]['plays'][0]['tasks'][0]['role']['path']
|
||||
role_path = json_result[0]['plays'][0]['tasks'][1]['role']['path']
|
||||
self.assertEqual('json-role', os.path.basename(role_path))
|
||||
|
||||
def test_json_time_log(self):
|
||||
|
@ -143,14 +148,6 @@ class FunctionalZuulJSONMixIn:
|
|||
dateutil.parser.parse(play_end_time)
|
||||
|
||||
|
||||
class TestZuulJSON27(AnsibleZuulTestCase, FunctionalZuulJSONMixIn):
|
||||
ansible_version = '2.7'
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self._setUp()
|
||||
|
||||
|
||||
class TestZuulJSON28(AnsibleZuulTestCase, FunctionalZuulJSONMixIn):
|
||||
ansible_version = '2.8'
|
||||
|
||||
|
@ -158,43 +155,10 @@ class TestZuulJSON28(AnsibleZuulTestCase, FunctionalZuulJSONMixIn):
|
|||
super().setUp()
|
||||
self._setUp()
|
||||
|
||||
def test_json_task_action(self):
|
||||
job = self._run_job('no-log')
|
||||
with self.jobLog(job):
|
||||
build = self.history[-1]
|
||||
self.assertEqual(build.result, 'SUCCESS')
|
||||
|
||||
text = self._get_json_as_text(build)
|
||||
json_result = json.loads(text)
|
||||
tasks = json_result[0]['plays'][0]['tasks']
|
||||
# NOTE(pabelanger): In 2.8 gather_facts are now logged as an
|
||||
# expected action.
|
||||
expected_actions = [
|
||||
'gather_facts', 'debug', 'debug', 'debug', 'copy', 'find',
|
||||
'stat', 'debug'
|
||||
]
|
||||
for i, expected in enumerate(expected_actions):
|
||||
host_result = tasks[i]['hosts']['controller']
|
||||
self.assertEquals(expected, host_result['action'])
|
||||
|
||||
def test_json_role_log(self):
|
||||
job = self._run_job('json-role')
|
||||
with self.jobLog(job):
|
||||
build = self.history[-1]
|
||||
self.assertEqual(build.result, 'SUCCESS')
|
||||
|
||||
text = self._get_json_as_text(build)
|
||||
self.assertIn('json-role', text)
|
||||
|
||||
json_result = json.loads(text)
|
||||
# NOTE(pabelanger): In 2.8 gather_facts are now logged as the
|
||||
# first task.
|
||||
role_name = json_result[0]['plays'][0]['tasks'][1]['role']['name']
|
||||
self.assertEqual('json-role', role_name)
|
||||
|
||||
role_path = json_result[0]['plays'][0]['tasks'][1]['role']['path']
|
||||
self.assertEqual('json-role', os.path.basename(role_path))
|
||||
|
||||
|
||||
class TestZuulJSON29(TestZuulJSON28):
|
||||
class TestZuulJSON29(AnsibleZuulTestCase, FunctionalZuulJSONMixIn):
|
||||
ansible_version = '2.9'
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self._setUp()
|
||||
|
|
|
@ -158,9 +158,11 @@ class FunctionalZuulStreamMixIn:
|
|||
self.assertLogLine(
|
||||
r'controller \| ok: Runtime: \d:\d\d:\d\d\.\d\d\d\d\d\d', text)
|
||||
self.assertLogLine('PLAY RECAP', text)
|
||||
# NOTE(pabelanger): Ansible 2.8 added new stats
|
||||
# skipped, rescued, ignored.
|
||||
self.assertLogLine(
|
||||
r'controller \| ok: \d+ changed: \d+ unreachable: 0 failed: 1',
|
||||
text)
|
||||
r'controller \| ok: \d+ changed: \d+ unreachable: 0 failed: 0 '
|
||||
'skipped: 0 rescued: 1 ignored: 0', text)
|
||||
self.assertLogLine(
|
||||
r'RUN END RESULT_NORMAL: \[untrusted : review.example.com/'
|
||||
r'org/project/playbooks/command.yaml@master]', text)
|
||||
|
@ -210,14 +212,6 @@ class FunctionalZuulStreamMixIn:
|
|||
self.assertLogLine(regex, text)
|
||||
|
||||
|
||||
class TestZuulStream27(AnsibleZuulTestCase, FunctionalZuulStreamMixIn):
|
||||
ansible_version = '2.7'
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self._setUp()
|
||||
|
||||
|
||||
class TestZuulStream28(AnsibleZuulTestCase, FunctionalZuulStreamMixIn):
|
||||
ansible_version = '2.8'
|
||||
|
||||
|
@ -225,88 +219,10 @@ class TestZuulStream28(AnsibleZuulTestCase, FunctionalZuulStreamMixIn):
|
|||
super().setUp()
|
||||
self._setUp()
|
||||
|
||||
def test_command(self):
|
||||
job = self._run_job('command')
|
||||
with self.jobLog(job):
|
||||
build = self.history[-1]
|
||||
self.assertEqual(build.result, 'SUCCESS')
|
||||
|
||||
text = self._get_job_output(build)
|
||||
self.assertLogLine(
|
||||
r'RUN START: \[untrusted : review.example.com/org/project/'
|
||||
r'playbooks/command.yaml@master\]', text)
|
||||
self.assertLogLine(r'PLAY \[all\]', text)
|
||||
self.assertLogLine(
|
||||
r'Ansible version={}'.format(self.ansible_version), text)
|
||||
self.assertLogLine(r'TASK \[Show contents of first file\]', text)
|
||||
self.assertLogLine(r'controller \| command test one', text)
|
||||
self.assertLogLine(
|
||||
r'controller \| ok: Runtime: \d:\d\d:\d\d\.\d\d\d\d\d\d', text)
|
||||
self.assertLogLine(r'TASK \[Show contents of second file\]', text)
|
||||
self.assertLogLine(r'compute1 \| command test two', text)
|
||||
self.assertLogLine(r'controller \| command test two', text)
|
||||
self.assertLogLine(r'compute1 \| This is a rescue task', text)
|
||||
self.assertLogLine(r'controller \| This is a rescue task', text)
|
||||
self.assertLogLine(r'compute1 \| This is an always task', text)
|
||||
self.assertLogLine(r'controller \| This is an always task', text)
|
||||
self.assertLogLine(r'compute1 \| This is a handler', text)
|
||||
self.assertLogLine(r'controller \| This is a handler', text)
|
||||
self.assertLogLine(r'controller \| First free task', text)
|
||||
self.assertLogLine(r'controller \| Second free task', text)
|
||||
self.assertLogLine(r'controller \| This is a shell task after an '
|
||||
'included role', text)
|
||||
self.assertLogLine(r'compute1 \| This is a shell task after an '
|
||||
'included role', text)
|
||||
self.assertLogLine(r'controller \| This is a command task after '
|
||||
'an included role', text)
|
||||
self.assertLogLine(r'compute1 \| This is a command task after an '
|
||||
'included role', text)
|
||||
self.assertLogLine(r'controller \| This is a shell task with '
|
||||
'delegate compute1', text)
|
||||
self.assertLogLine(r'controller \| This is a shell task with '
|
||||
'delegate controller', text)
|
||||
self.assertLogLine(r'compute1 \| item_in_loop1', text)
|
||||
self.assertLogLine(r'compute1 \| ok: Item: item_in_loop1 '
|
||||
r'Runtime: \d:\d\d:\d\d\.\d\d\d\d\d\d', text)
|
||||
self.assertLogLine(r'compute1 \| item_in_loop2', text)
|
||||
self.assertLogLine(r'compute1 \| ok: Item: item_in_loop2 '
|
||||
r'Runtime: \d:\d\d:\d\d\.\d\d\d\d\d\d', text)
|
||||
self.assertLogLine(r'compute1 \| failed_in_loop1', text)
|
||||
self.assertLogLine(r'compute1 \| ok: Item: failed_in_loop1 '
|
||||
r'Result: 1', text)
|
||||
self.assertLogLine(r'compute1 \| failed_in_loop2', text)
|
||||
self.assertLogLine(r'compute1 \| ok: Item: failed_in_loop2 '
|
||||
r'Result: 1', text)
|
||||
self.assertLogLine(r'compute1 \| .*No such file or directory: .*'
|
||||
r'\'/remote-shelltask/somewhere/'
|
||||
r'that/does/not/exist\'', text)
|
||||
self.assertLogLine(r'controller \| .*No such file or directory: .*'
|
||||
r'\'/remote-shelltask/somewhere/'
|
||||
r'that/does/not/exist\'', text)
|
||||
self.assertLogLine(
|
||||
r'controller \| ok: Runtime: \d:\d\d:\d\d\.\d\d\d\d\d\d', text)
|
||||
self.assertLogLine('PLAY RECAP', text)
|
||||
# NOTE(pabelanger): Ansible 2.8 added new stats
|
||||
# skipped, rescued, ignored.
|
||||
self.assertLogLine(
|
||||
r'controller \| ok: \d+ changed: \d+ unreachable: 0 failed: 0 '
|
||||
'skipped: 0 rescued: 1 ignored: 0', text)
|
||||
self.assertLogLine(
|
||||
r'RUN END RESULT_NORMAL: \[untrusted : review.example.com/'
|
||||
r'org/project/playbooks/command.yaml@master]', text)
|
||||
|
||||
# Run a pre-defined job that is defined in a trusted repo to test
|
||||
# localhost tasks.
|
||||
job = self._run_job('command-localhost', create=False)
|
||||
with self.jobLog(job):
|
||||
build = self.history[-1]
|
||||
self.assertEqual(build.result, 'SUCCESS')
|
||||
|
||||
text = self._get_job_output(build)
|
||||
self.assertLogLine(r'localhost \| .*No such file or directory: .*'
|
||||
r'\'/local-shelltask/somewhere/'
|
||||
r'that/does/not/exist\'', text)
|
||||
|
||||
|
||||
class TestZuulStream29(TestZuulStream28):
|
||||
class TestZuulStream29(AnsibleZuulTestCase, FunctionalZuulStreamMixIn):
|
||||
ansible_version = '2.9'
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self._setUp()
|
||||
|
|
|
@ -167,30 +167,6 @@ class TestInventoryAutoPython(TestInventoryBase):
|
|||
self.executor_server.release()
|
||||
self.waitUntilSettled()
|
||||
|
||||
def test_auto_python_ansible27_inventory(self):
|
||||
inventory = self._get_build_inventory('ansible-version27-inventory')
|
||||
|
||||
all_nodes = ('ubuntu-xenial',)
|
||||
self.assertIn('all', inventory)
|
||||
self.assertIn('hosts', inventory['all'])
|
||||
self.assertIn('vars', inventory['all'])
|
||||
for node_name in all_nodes:
|
||||
self.assertIn(node_name, inventory['all']['hosts'])
|
||||
node_vars = inventory['all']['hosts'][node_name]
|
||||
self.assertEqual(
|
||||
'/usr/bin/python2', node_vars['ansible_python_interpreter'])
|
||||
|
||||
self.assertIn('zuul', inventory['all']['vars'])
|
||||
z_vars = inventory['all']['vars']['zuul']
|
||||
self.assertIn('executor', z_vars)
|
||||
self.assertIn('src_root', z_vars['executor'])
|
||||
self.assertIn('job', z_vars)
|
||||
self.assertEqual(z_vars['job'], 'ansible-version27-inventory')
|
||||
self.assertEqual(z_vars['message'], 'QQ==')
|
||||
|
||||
self.executor_server.release()
|
||||
self.waitUntilSettled()
|
||||
|
||||
|
||||
class TestInventory(TestInventoryBase):
|
||||
|
||||
|
|
|
@ -2849,10 +2849,6 @@ class FunctionalAnsibleMixIn(object):
|
|||
self._test_plugins(plugin_tests)
|
||||
|
||||
|
||||
class TestAnsible27(AnsibleZuulTestCase, FunctionalAnsibleMixIn):
|
||||
ansible_version = '2.7'
|
||||
|
||||
|
||||
class TestAnsible28(AnsibleZuulTestCase, FunctionalAnsibleMixIn):
|
||||
ansible_version = '2.8'
|
||||
|
||||
|
@ -6597,7 +6593,6 @@ class TestAnsibleVersion(AnsibleZuulTestCase):
|
|||
|
||||
self.assertHistory([
|
||||
dict(name='ansible-default', result='SUCCESS', changes='1,1'),
|
||||
dict(name='ansible-27', result='SUCCESS', changes='1,1'),
|
||||
dict(name='ansible-28', result='SUCCESS', changes='1,1'),
|
||||
dict(name='ansible-29', result='SUCCESS', changes='1,1'),
|
||||
], ordered=False)
|
||||
|
@ -6618,7 +6613,6 @@ class TestDefaultAnsibleVersion(AnsibleZuulTestCase):
|
|||
self.assertHistory([
|
||||
dict(name='ansible-default-zuul-conf', result='SUCCESS',
|
||||
changes='1,1'),
|
||||
dict(name='ansible-27', result='SUCCESS', changes='1,1'),
|
||||
dict(name='ansible-28', result='SUCCESS', changes='1,1'),
|
||||
dict(name='ansible-29', result='SUCCESS', changes='1,1'),
|
||||
], ordered=False)
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
../../base/action/__init__.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/add_host.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/add_host.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/aireos.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/aireos.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/aireos_config.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/aireos_config.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/aruba.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/aruba.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/aruba_config.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/aruba_config.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/asa.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/asa.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/asa_config.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/asa_config.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/asa_template.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/asa_template.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/assemble.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/assemble.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/aws_s3.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/aws_s3.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/ce.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/ce.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/ce_config.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/ce_config.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/ce_template.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/ce_template.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/copy.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/copy.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/dellos10_config.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/dellos10_config.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/dellos6_config.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/dellos6_config.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/dellos9_config.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/dellos9_config.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/eos_config.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/eos_config.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/eos_template.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/eos_template.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/fetch.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/fetch.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/fortios_config.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/fortios_config.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/include_vars.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/include_vars.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/ios_config.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/ios_config.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/ios_template.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/ios_template.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/iosxr_config.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/iosxr_config.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/iosxr_template.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/iosxr_template.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/junos_config.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/junos_config.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/junos_template.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/junos_template.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_banner.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_banner.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_base.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_base.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_config.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_config.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_get.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_get.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_interface.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_interface.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_l2_interface.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_l2_interface.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_l3_interface.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_l3_interface.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_linkagg.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_linkagg.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_lldp.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_lldp.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_lldp_interface.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_lldp_interface.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_logging.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_logging.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_ping.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_ping.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_static_route.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_static_route.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_system.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_system.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_template.py
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_template.pyi
|
|
@ -1 +0,0 @@
|
|||
../../base/action/net_user.py
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue