Browse Source

Support Ansible 2.8

Ansible has released 2.8 and now zuul also supports it. We've had to
update zuul_console to deal with new tasks stats, along with
gather_facts also now being exposed directly to the job.

Change-Id: Ifa4be7cf408b1f05b0f985fa0c9a5e3947858078
Signed-off-by: Paul Belanger <pabelanger@redhat.com>
changes/33/631933/21
Tobias Henkel 2 years ago
committed by Paul Belanger
parent
commit
5b31159717
210 changed files with 366 additions and 1 deletions
  1. +8
    -0
      .zuul.yaml
  2. +4
    -0
      releasenotes/notes/ansible-2.8-7f3d630503c6192f.yaml
  3. +10
    -0
      tests/fixtures/config/ansible-versions/git/common-config/zuul.yaml
  4. +4
    -0
      tests/remote/test_remote_action_modules.py
  5. +41
    -0
      tests/remote/test_remote_zuul_json.py
  6. +77
    -0
      tests/remote/test_remote_zuul_stream.py
  7. +6
    -0
      tests/unit/test_v3.py
  8. +1
    -0
      zuul/ansible/2.8/action/__init__.py
  9. +1
    -0
      zuul/ansible/2.8/action/add_host.py
  10. +1
    -0
      zuul/ansible/2.8/action/add_host.pyi
  11. +1
    -0
      zuul/ansible/2.8/action/aireos.py
  12. +1
    -0
      zuul/ansible/2.8/action/aireos.pyi
  13. +1
    -0
      zuul/ansible/2.8/action/aireos_config.py
  14. +1
    -0
      zuul/ansible/2.8/action/aireos_config.pyi
  15. +1
    -0
      zuul/ansible/2.8/action/aruba.py
  16. +1
    -0
      zuul/ansible/2.8/action/aruba.pyi
  17. +1
    -0
      zuul/ansible/2.8/action/aruba_config.py
  18. +1
    -0
      zuul/ansible/2.8/action/aruba_config.pyi
  19. +1
    -0
      zuul/ansible/2.8/action/asa.py
  20. +1
    -0
      zuul/ansible/2.8/action/asa.pyi
  21. +1
    -0
      zuul/ansible/2.8/action/asa_config.py
  22. +1
    -0
      zuul/ansible/2.8/action/asa_config.pyi
  23. +1
    -0
      zuul/ansible/2.8/action/asa_template.py
  24. +1
    -0
      zuul/ansible/2.8/action/asa_template.pyi
  25. +1
    -0
      zuul/ansible/2.8/action/assemble.py
  26. +1
    -0
      zuul/ansible/2.8/action/assemble.pyi
  27. +1
    -0
      zuul/ansible/2.8/action/aws_s3.py
  28. +1
    -0
      zuul/ansible/2.8/action/aws_s3.pyi
  29. +1
    -0
      zuul/ansible/2.8/action/ce.py
  30. +1
    -0
      zuul/ansible/2.8/action/ce.pyi
  31. +1
    -0
      zuul/ansible/2.8/action/ce_config.py
  32. +1
    -0
      zuul/ansible/2.8/action/ce_config.pyi
  33. +1
    -0
      zuul/ansible/2.8/action/ce_template.py
  34. +1
    -0
      zuul/ansible/2.8/action/ce_template.pyi
  35. +1
    -0
      zuul/ansible/2.8/action/copy.py
  36. +1
    -0
      zuul/ansible/2.8/action/copy.pyi
  37. +1
    -0
      zuul/ansible/2.8/action/dellos10_config.py
  38. +1
    -0
      zuul/ansible/2.8/action/dellos10_config.pyi
  39. +1
    -0
      zuul/ansible/2.8/action/dellos6_config.py
  40. +1
    -0
      zuul/ansible/2.8/action/dellos6_config.pyi
  41. +1
    -0
      zuul/ansible/2.8/action/dellos9_config.py
  42. +1
    -0
      zuul/ansible/2.8/action/dellos9_config.pyi
  43. +1
    -0
      zuul/ansible/2.8/action/eos_config.py
  44. +1
    -0
      zuul/ansible/2.8/action/eos_config.pyi
  45. +1
    -0
      zuul/ansible/2.8/action/eos_template.py
  46. +1
    -0
      zuul/ansible/2.8/action/eos_template.pyi
  47. +1
    -0
      zuul/ansible/2.8/action/fetch.py
  48. +1
    -0
      zuul/ansible/2.8/action/fetch.pyi
  49. +1
    -0
      zuul/ansible/2.8/action/fortios_config.py
  50. +1
    -0
      zuul/ansible/2.8/action/fortios_config.pyi
  51. +1
    -0
      zuul/ansible/2.8/action/include_vars.py
  52. +1
    -0
      zuul/ansible/2.8/action/include_vars.pyi
  53. +1
    -0
      zuul/ansible/2.8/action/ios_config.py
  54. +1
    -0
      zuul/ansible/2.8/action/ios_config.pyi
  55. +1
    -0
      zuul/ansible/2.8/action/ios_template.py
  56. +1
    -0
      zuul/ansible/2.8/action/ios_template.pyi
  57. +1
    -0
      zuul/ansible/2.8/action/iosxr_config.py
  58. +1
    -0
      zuul/ansible/2.8/action/iosxr_config.pyi
  59. +1
    -0
      zuul/ansible/2.8/action/iosxr_template.py
  60. +1
    -0
      zuul/ansible/2.8/action/iosxr_template.pyi
  61. +1
    -0
      zuul/ansible/2.8/action/junos_config.py
  62. +1
    -0
      zuul/ansible/2.8/action/junos_config.pyi
  63. +1
    -0
      zuul/ansible/2.8/action/junos_template.py
  64. +1
    -0
      zuul/ansible/2.8/action/junos_template.pyi
  65. +1
    -0
      zuul/ansible/2.8/action/net_banner.py
  66. +1
    -0
      zuul/ansible/2.8/action/net_banner.pyi
  67. +1
    -0
      zuul/ansible/2.8/action/net_base.py
  68. +1
    -0
      zuul/ansible/2.8/action/net_base.pyi
  69. +1
    -0
      zuul/ansible/2.8/action/net_config.py
  70. +1
    -0
      zuul/ansible/2.8/action/net_config.pyi
  71. +1
    -0
      zuul/ansible/2.8/action/net_get.py
  72. +1
    -0
      zuul/ansible/2.8/action/net_get.pyi
  73. +1
    -0
      zuul/ansible/2.8/action/net_interface.py
  74. +1
    -0
      zuul/ansible/2.8/action/net_interface.pyi
  75. +1
    -0
      zuul/ansible/2.8/action/net_l2_interface.py
  76. +1
    -0
      zuul/ansible/2.8/action/net_l2_interface.pyi
  77. +1
    -0
      zuul/ansible/2.8/action/net_l3_interface.py
  78. +1
    -0
      zuul/ansible/2.8/action/net_l3_interface.pyi
  79. +1
    -0
      zuul/ansible/2.8/action/net_linkagg.py
  80. +1
    -0
      zuul/ansible/2.8/action/net_linkagg.pyi
  81. +1
    -0
      zuul/ansible/2.8/action/net_lldp.py
  82. +1
    -0
      zuul/ansible/2.8/action/net_lldp.pyi
  83. +1
    -0
      zuul/ansible/2.8/action/net_lldp_interface.py
  84. +1
    -0
      zuul/ansible/2.8/action/net_lldp_interface.pyi
  85. +1
    -0
      zuul/ansible/2.8/action/net_logging.py
  86. +1
    -0
      zuul/ansible/2.8/action/net_logging.pyi
  87. +1
    -0
      zuul/ansible/2.8/action/net_ping.py
  88. +1
    -0
      zuul/ansible/2.8/action/net_ping.pyi
  89. +1
    -0
      zuul/ansible/2.8/action/net_static_route.py
  90. +1
    -0
      zuul/ansible/2.8/action/net_static_route.pyi
  91. +1
    -0
      zuul/ansible/2.8/action/net_system.py
  92. +1
    -0
      zuul/ansible/2.8/action/net_system.pyi
  93. +1
    -0
      zuul/ansible/2.8/action/net_template.py
  94. +1
    -0
      zuul/ansible/2.8/action/net_template.pyi
  95. +1
    -0
      zuul/ansible/2.8/action/net_user.py
  96. +1
    -0
      zuul/ansible/2.8/action/net_user.pyi
  97. +1
    -0
      zuul/ansible/2.8/action/net_vlan.py
  98. +1
    -0
      zuul/ansible/2.8/action/net_vlan.pyi
  99. +1
    -0
      zuul/ansible/2.8/action/net_vrf.py
  100. +1
    -0
      zuul/ansible/2.8/action/net_vrf.pyi

+ 8
- 0
.zuul.yaml View File

@ -45,6 +45,12 @@
vars:
zuul_ansible_version: 2.7
- job:
name: zuul-stream-functional-2.8
parent: zuul-stream-functional
vars:
zuul_ansible_version: 2.8
- job:
name: zuul-tox-remote
parent: tox
@ -187,6 +193,7 @@
- zuul-stream-functional-2.5
- zuul-stream-functional-2.6
- zuul-stream-functional-2.7
- zuul-stream-functional-2.8
- zuul-tox-remote
- zuul-quick-start:
dependencies: zuul-build-image
@ -223,6 +230,7 @@
- zuul-stream-functional-2.5
- zuul-stream-functional-2.6
- zuul-stream-functional-2.7
- zuul-stream-functional-2.8
- zuul-tox-remote
- zuul-quick-start:
dependencies: zuul-upload-image


+ 4
- 0
releasenotes/notes/ansible-2.8-7f3d630503c6192f.yaml View File

@ -0,0 +1,4 @@
---
features:
- |
Zuul now supports ansible 2.8 for running jobs.

+ 10
- 0
tests/fixtures/config/ansible-versions/git/common-config/zuul.yaml View File

@ -60,6 +60,14 @@
test_ansible_version_major: 2
test_ansible_version_minor: 7
- job:
name: ansible-28
parent: ansible-version
ansible-version: 2.8
vars:
test_ansible_version_major: 2
test_ansible_version_minor: 8
- project:
name: common-config
@ -69,6 +77,7 @@
- ansible-25
- ansible-26
- ansible-27
- ansible-28
- project:
name: org/project
@ -78,3 +87,4 @@
- ansible-25
- ansible-26
- ansible-27
- ansible-28

+ 4
- 0
tests/remote/test_remote_action_modules.py View File

@ -219,3 +219,7 @@ class TestActionModules26(TestActionModules25):
class TestActionModules27(TestActionModules25):
ansible_version = '2.7'
class TestActionModules28(TestActionModules25):
ansible_version = '2.8'

+ 41
- 0
tests/remote/test_remote_zuul_json.py View File

@ -150,3 +150,44 @@ class TestZuulJSON26(TestZuulJSON25):
class TestZuulJSON27(TestZuulJSON25):
ansible_version = '2.7'
class TestZuulJSON28(TestZuulJSON25):
ansible_version = '2.8'
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))

+ 77
- 0
tests/remote/test_remote_zuul_stream.py View File

@ -192,3 +192,80 @@ class TestZuulStream26(TestZuulStream25):
class TestZuulStream27(TestZuulStream25):
ansible_version = '2.7'
class TestZuulStream28(TestZuulStream25):
ansible_version = '2.8'
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'localhost \| .*No such file or directory: .*'
r'\'/local-shelltask/somewhere/'
r'that/does/not/exist\'', 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)

+ 6
- 0
tests/unit/test_v3.py View File

@ -2731,6 +2731,10 @@ class TestAnsible27(TestAnsible25):
ansible_version = '2.7'
class TestAnsible28(TestAnsible25):
ansible_version = '2.8'
class TestPrePlaybooks(AnsibleZuulTestCase):
# A temporary class to hold new tests while others are disabled
@ -5767,6 +5771,7 @@ class TestAnsibleVersion(AnsibleZuulTestCase):
dict(name='ansible-25', result='SUCCESS', changes='1,1'),
dict(name='ansible-26', result='SUCCESS', changes='1,1'),
dict(name='ansible-27', result='SUCCESS', changes='1,1'),
dict(name='ansible-28', result='SUCCESS', changes='1,1'),
], ordered=False)
@ -5788,6 +5793,7 @@ class TestDefaultAnsibleVersion(AnsibleZuulTestCase):
dict(name='ansible-25', result='SUCCESS', changes='1,1'),
dict(name='ansible-26', result='SUCCESS', changes='1,1'),
dict(name='ansible-27', result='SUCCESS', changes='1,1'),
dict(name='ansible-28', result='SUCCESS', changes='1,1'),
], ordered=False)


+ 1
- 0
zuul/ansible/2.8/action/__init__.py View File

@ -0,0 +1 @@
../../base/action/__init__.py

+ 1
- 0
zuul/ansible/2.8/action/add_host.py View File

@ -0,0 +1 @@
../../base/action/add_host.py

+ 1
- 0
zuul/ansible/2.8/action/add_host.pyi View File

@ -0,0 +1 @@
../../base/action/add_host.pyi

+ 1
- 0
zuul/ansible/2.8/action/aireos.py View File

@ -0,0 +1 @@
../../base/action/aireos.py

+ 1
- 0
zuul/ansible/2.8/action/aireos.pyi View File

@ -0,0 +1 @@
../../base/action/aireos.pyi

+ 1
- 0
zuul/ansible/2.8/action/aireos_config.py View File

@ -0,0 +1 @@
../../base/action/aireos_config.py

+ 1
- 0
zuul/ansible/2.8/action/aireos_config.pyi View File

@ -0,0 +1 @@
../../base/action/aireos_config.pyi

+ 1
- 0
zuul/ansible/2.8/action/aruba.py View File

@ -0,0 +1 @@
../../base/action/aruba.py

+ 1
- 0
zuul/ansible/2.8/action/aruba.pyi View File

@ -0,0 +1 @@
../../base/action/aruba.pyi

+ 1
- 0
zuul/ansible/2.8/action/aruba_config.py View File

@ -0,0 +1 @@
../../base/action/aruba_config.py

+ 1
- 0
zuul/ansible/2.8/action/aruba_config.pyi View File

@ -0,0 +1 @@
../../base/action/aruba_config.pyi

+ 1
- 0
zuul/ansible/2.8/action/asa.py View File

@ -0,0 +1 @@
../../base/action/asa.py

+ 1
- 0
zuul/ansible/2.8/action/asa.pyi View File

@ -0,0 +1 @@
../../base/action/asa.pyi

+ 1
- 0
zuul/ansible/2.8/action/asa_config.py View File

@ -0,0 +1 @@
../../base/action/asa_config.py

+ 1
- 0
zuul/ansible/2.8/action/asa_config.pyi View File

@ -0,0 +1 @@
../../base/action/asa_config.pyi

+ 1
- 0
zuul/ansible/2.8/action/asa_template.py View File

@ -0,0 +1 @@
../../base/action/asa_template.py

+ 1
- 0
zuul/ansible/2.8/action/asa_template.pyi View File

@ -0,0 +1 @@
../../base/action/asa_template.pyi

+ 1
- 0
zuul/ansible/2.8/action/assemble.py View File

@ -0,0 +1 @@
../../base/action/assemble.py

+ 1
- 0
zuul/ansible/2.8/action/assemble.pyi View File

@ -0,0 +1 @@
../../base/action/assemble.pyi

+ 1
- 0
zuul/ansible/2.8/action/aws_s3.py View File

@ -0,0 +1 @@
../../base/action/aws_s3.py

+ 1
- 0
zuul/ansible/2.8/action/aws_s3.pyi View File

@ -0,0 +1 @@
../../base/action/aws_s3.pyi

+ 1
- 0
zuul/ansible/2.8/action/ce.py View File

@ -0,0 +1 @@
../../base/action/ce.py

+ 1
- 0
zuul/ansible/2.8/action/ce.pyi View File

@ -0,0 +1 @@
../../base/action/ce.pyi

+ 1
- 0
zuul/ansible/2.8/action/ce_config.py View File

@ -0,0 +1 @@
../../base/action/ce_config.py

+ 1
- 0
zuul/ansible/2.8/action/ce_config.pyi View File

@ -0,0 +1 @@
../../base/action/ce_config.pyi

+ 1
- 0
zuul/ansible/2.8/action/ce_template.py View File

@ -0,0 +1 @@
../../base/action/ce_template.py

+ 1
- 0
zuul/ansible/2.8/action/ce_template.pyi View File

@ -0,0 +1 @@
../../base/action/ce_template.pyi

+ 1
- 0
zuul/ansible/2.8/action/copy.py View File

@ -0,0 +1 @@
../../base/action/copy.py

+ 1
- 0
zuul/ansible/2.8/action/copy.pyi View File

@ -0,0 +1 @@
../../base/action/copy.pyi

+ 1
- 0
zuul/ansible/2.8/action/dellos10_config.py View File

@ -0,0 +1 @@
../../base/action/dellos10_config.py

+ 1
- 0
zuul/ansible/2.8/action/dellos10_config.pyi View File

@ -0,0 +1 @@
../../base/action/dellos10_config.pyi

+ 1
- 0
zuul/ansible/2.8/action/dellos6_config.py View File

@ -0,0 +1 @@
../../base/action/dellos6_config.py

+ 1
- 0
zuul/ansible/2.8/action/dellos6_config.pyi View File

@ -0,0 +1 @@
../../base/action/dellos6_config.pyi

+ 1
- 0
zuul/ansible/2.8/action/dellos9_config.py View File

@ -0,0 +1 @@
../../base/action/dellos9_config.py

+ 1
- 0
zuul/ansible/2.8/action/dellos9_config.pyi View File

@ -0,0 +1 @@
../../base/action/dellos9_config.pyi

+ 1
- 0
zuul/ansible/2.8/action/eos_config.py View File

@ -0,0 +1 @@
../../base/action/eos_config.py

+ 1
- 0
zuul/ansible/2.8/action/eos_config.pyi View File

@ -0,0 +1 @@
../../base/action/eos_config.pyi

+ 1
- 0
zuul/ansible/2.8/action/eos_template.py View File

@ -0,0 +1 @@
../../base/action/eos_template.py

+ 1
- 0
zuul/ansible/2.8/action/eos_template.pyi View File

@ -0,0 +1 @@
../../base/action/eos_template.pyi

+ 1
- 0
zuul/ansible/2.8/action/fetch.py View File

@ -0,0 +1 @@
../../base/action/fetch.py

+ 1
- 0
zuul/ansible/2.8/action/fetch.pyi View File

@ -0,0 +1 @@
../../base/action/fetch.pyi

+ 1
- 0
zuul/ansible/2.8/action/fortios_config.py View File

@ -0,0 +1 @@
../../base/action/fortios_config.py

+ 1
- 0
zuul/ansible/2.8/action/fortios_config.pyi View File

@ -0,0 +1 @@
../../base/action/fortios_config.pyi

+ 1
- 0
zuul/ansible/2.8/action/include_vars.py View File

@ -0,0 +1 @@
../../base/action/include_vars.py

+ 1
- 0
zuul/ansible/2.8/action/include_vars.pyi View File

@ -0,0 +1 @@
../../base/action/include_vars.pyi

+ 1
- 0
zuul/ansible/2.8/action/ios_config.py View File

@ -0,0 +1 @@
../../base/action/ios_config.py

+ 1
- 0
zuul/ansible/2.8/action/ios_config.pyi View File

@ -0,0 +1 @@
../../base/action/ios_config.pyi

+ 1
- 0
zuul/ansible/2.8/action/ios_template.py View File

@ -0,0 +1 @@
../../base/action/ios_template.py

+ 1
- 0
zuul/ansible/2.8/action/ios_template.pyi View File

@ -0,0 +1 @@
../../base/action/ios_template.pyi

+ 1
- 0
zuul/ansible/2.8/action/iosxr_config.py View File

@ -0,0 +1 @@
../../base/action/iosxr_config.py

+ 1
- 0
zuul/ansible/2.8/action/iosxr_config.pyi View File

@ -0,0 +1 @@
../../base/action/iosxr_config.pyi

+ 1
- 0
zuul/ansible/2.8/action/iosxr_template.py View File

@ -0,0 +1 @@
../../base/action/iosxr_template.py

+ 1
- 0
zuul/ansible/2.8/action/iosxr_template.pyi View File

@ -0,0 +1 @@
../../base/action/iosxr_template.pyi

+ 1
- 0
zuul/ansible/2.8/action/junos_config.py View File

@ -0,0 +1 @@
../../base/action/junos_config.py

+ 1
- 0
zuul/ansible/2.8/action/junos_config.pyi View File

@ -0,0 +1 @@
../../base/action/junos_config.pyi

+ 1
- 0
zuul/ansible/2.8/action/junos_template.py View File

@ -0,0 +1 @@
../../base/action/junos_template.py

+ 1
- 0
zuul/ansible/2.8/action/junos_template.pyi View File

@ -0,0 +1 @@
../../base/action/junos_template.pyi

+ 1
- 0
zuul/ansible/2.8/action/net_banner.py View File

@ -0,0 +1 @@
../../base/action/net_banner.py

+ 1
- 0
zuul/ansible/2.8/action/net_banner.pyi View File

@ -0,0 +1 @@
../../base/action/net_banner.pyi

+ 1
- 0
zuul/ansible/2.8/action/net_base.py View File

@ -0,0 +1 @@
../../base/action/net_base.py

+ 1
- 0
zuul/ansible/2.8/action/net_base.pyi View File

@ -0,0 +1 @@
../../base/action/net_base.pyi

+ 1
- 0
zuul/ansible/2.8/action/net_config.py View File

@ -0,0 +1 @@
../../base/action/net_config.py

+ 1
- 0
zuul/ansible/2.8/action/net_config.pyi View File

@ -0,0 +1 @@
../../base/action/net_config.pyi

+ 1
- 0
zuul/ansible/2.8/action/net_get.py View File

@ -0,0 +1 @@
../../base/action/net_get.py

+ 1
- 0
zuul/ansible/2.8/action/net_get.pyi View File

@ -0,0 +1 @@
../../base/action/net_get.pyi

+ 1
- 0
zuul/ansible/2.8/action/net_interface.py View File

@ -0,0 +1 @@
../../base/action/net_interface.py

+ 1
- 0
zuul/ansible/2.8/action/net_interface.pyi View File

@ -0,0 +1 @@
../../base/action/net_interface.pyi

+ 1
- 0
zuul/ansible/2.8/action/net_l2_interface.py View File

@ -0,0 +1 @@
../../base/action/net_l2_interface.py

+ 1
- 0
zuul/ansible/2.8/action/net_l2_interface.pyi View File

@ -0,0 +1 @@
../../base/action/net_l2_interface.pyi

+ 1
- 0
zuul/ansible/2.8/action/net_l3_interface.py View File

@ -0,0 +1 @@
../../base/action/net_l3_interface.py

+ 1
- 0
zuul/ansible/2.8/action/net_l3_interface.pyi View File

@ -0,0 +1 @@
../../base/action/net_l3_interface.pyi

+ 1
- 0
zuul/ansible/2.8/action/net_linkagg.py View File

@ -0,0 +1 @@
../../base/action/net_linkagg.py

+ 1
- 0
zuul/ansible/2.8/action/net_linkagg.pyi View File

@ -0,0 +1 @@
../../base/action/net_linkagg.pyi

+ 1
- 0
zuul/ansible/2.8/action/net_lldp.py View File

@ -0,0 +1 @@
../../base/action/net_lldp.py

+ 1
- 0
zuul/ansible/2.8/action/net_lldp.pyi View File

@ -0,0 +1 @@
../../base/action/net_lldp.pyi

+ 1
- 0
zuul/ansible/2.8/action/net_lldp_interface.py View File

@ -0,0 +1 @@
../../base/action/net_lldp_interface.py

+ 1
- 0
zuul/ansible/2.8/action/net_lldp_interface.pyi View File

@ -0,0 +1 @@
../../base/action/net_lldp_interface.pyi

+ 1
- 0
zuul/ansible/2.8/action/net_logging.py View File

@ -0,0 +1 @@
../../base/action/net_logging.py

+ 1
- 0
zuul/ansible/2.8/action/net_logging.pyi View File

@ -0,0 +1 @@
../../base/action/net_logging.pyi

+ 1
- 0
zuul/ansible/2.8/action/net_ping.py View File

@ -0,0 +1 @@
../../base/action/net_ping.py

+ 1
- 0
zuul/ansible/2.8/action/net_ping.pyi View File

@ -0,0 +1 @@
../../base/action/net_ping.pyi

+ 1
- 0
zuul/ansible/2.8/action/net_static_route.py View File

@ -0,0 +1 @@
../../base/action/net_static_route.py

+ 1
- 0
zuul/ansible/2.8/action/net_static_route.pyi View File

@ -0,0 +1 @@
../../base/action/net_static_route.pyi

+ 1
- 0
zuul/ansible/2.8/action/net_system.py View File

@ -0,0 +1 @@
../../base/action/net_system.py

+ 1
- 0
zuul/ansible/2.8/action/net_system.pyi View File

@ -0,0 +1 @@
../../base/action/net_system.pyi

+ 1
- 0
zuul/ansible/2.8/action/net_template.py View File

@ -0,0 +1 @@
../../base/action/net_template.py

+ 1
- 0
zuul/ansible/2.8/action/net_template.pyi View File

@ -0,0 +1 @@
../../base/action/net_template.pyi

+ 1
- 0
zuul/ansible/2.8/action/net_user.py View File

@ -0,0 +1 @@
../../base/action/net_user.py

+ 1
- 0
zuul/ansible/2.8/action/net_user.pyi View File

@ -0,0 +1 @@
../../base/action/net_user.pyi

+ 1
- 0
zuul/ansible/2.8/action/net_vlan.py View File

@ -0,0 +1 @@
../../base/action/net_vlan.py

+ 1
- 0
zuul/ansible/2.8/action/net_vlan.pyi View File

@ -0,0 +1 @@
../../base/action/net_vlan.pyi

+ 1
- 0
zuul/ansible/2.8/action/net_vrf.py View File

@ -0,0 +1 @@
../../base/action/net_vrf.py

+ 1
- 0
zuul/ansible/2.8/action/net_vrf.pyi View File

@ -0,0 +1 @@
../../base/action/net_vrf.pyi

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save