Browse Source

Drop support for ansible 2.7

Ansible 2.7 is in security fix only maintenance mode since quite some
time and will be end of life soon. It further blocks upgrade of zuul
to Python 2.8 due to incompatibilities. Thus drop support.

Change-Id: I13802db3314450ad149fdadacd1e2e70dd8468ef
Depends-On: https://review.opendev.org/727345
changes/73/727373/9
Tobias Henkel 9 months ago
parent
commit
9843436311
No known key found for this signature in database GPG Key ID: 3750DEC158E5FA2
213 changed files with 27 additions and 416 deletions
  1. +0
    -2
      .zuul.yaml
  2. +4
    -0
      releasenotes/notes/ansible-2.7-4b6504e46c18cc57.yaml
  3. +1
    -11
      tests/fixtures/config/ansible-versions/git/common-config/zuul.yaml
  4. +0
    -9
      tests/fixtures/config/inventory/git/common-config/zuul.yaml
  5. +0
    -1
      tests/fixtures/config/inventory/git/org_project/.zuul.yaml
  6. +0
    -1
      tests/fixtures/config/inventory/git/org_project3/.zuul.yaml
  7. +1
    -1
      tests/fixtures/zuul-default-ansible-version.conf
  8. +0
    -8
      tests/remote/test_remote_action_modules.py
  9. +12
    -48
      tests/remote/test_remote_zuul_json.py
  10. +8
    -92
      tests/remote/test_remote_zuul_stream.py
  11. +0
    -24
      tests/unit/test_inventory.py
  12. +0
    -6
      tests/unit/test_v3.py
  13. +0
    -1
      zuul/ansible/2.7/action/__init__.py
  14. +0
    -1
      zuul/ansible/2.7/action/add_host.py
  15. +0
    -1
      zuul/ansible/2.7/action/add_host.pyi
  16. +0
    -1
      zuul/ansible/2.7/action/aireos.py
  17. +0
    -1
      zuul/ansible/2.7/action/aireos.pyi
  18. +0
    -1
      zuul/ansible/2.7/action/aireos_config.py
  19. +0
    -1
      zuul/ansible/2.7/action/aireos_config.pyi
  20. +0
    -1
      zuul/ansible/2.7/action/aruba.py
  21. +0
    -1
      zuul/ansible/2.7/action/aruba.pyi
  22. +0
    -1
      zuul/ansible/2.7/action/aruba_config.py
  23. +0
    -1
      zuul/ansible/2.7/action/aruba_config.pyi
  24. +0
    -1
      zuul/ansible/2.7/action/asa.py
  25. +0
    -1
      zuul/ansible/2.7/action/asa.pyi
  26. +0
    -1
      zuul/ansible/2.7/action/asa_config.py
  27. +0
    -1
      zuul/ansible/2.7/action/asa_config.pyi
  28. +0
    -1
      zuul/ansible/2.7/action/asa_template.py
  29. +0
    -1
      zuul/ansible/2.7/action/asa_template.pyi
  30. +0
    -1
      zuul/ansible/2.7/action/assemble.py
  31. +0
    -1
      zuul/ansible/2.7/action/assemble.pyi
  32. +0
    -1
      zuul/ansible/2.7/action/aws_s3.py
  33. +0
    -1
      zuul/ansible/2.7/action/aws_s3.pyi
  34. +0
    -1
      zuul/ansible/2.7/action/ce.py
  35. +0
    -1
      zuul/ansible/2.7/action/ce.pyi
  36. +0
    -1
      zuul/ansible/2.7/action/ce_config.py
  37. +0
    -1
      zuul/ansible/2.7/action/ce_config.pyi
  38. +0
    -1
      zuul/ansible/2.7/action/ce_template.py
  39. +0
    -1
      zuul/ansible/2.7/action/ce_template.pyi
  40. +0
    -1
      zuul/ansible/2.7/action/copy.py
  41. +0
    -1
      zuul/ansible/2.7/action/copy.pyi
  42. +0
    -1
      zuul/ansible/2.7/action/dellos10_config.py
  43. +0
    -1
      zuul/ansible/2.7/action/dellos10_config.pyi
  44. +0
    -1
      zuul/ansible/2.7/action/dellos6_config.py
  45. +0
    -1
      zuul/ansible/2.7/action/dellos6_config.pyi
  46. +0
    -1
      zuul/ansible/2.7/action/dellos9_config.py
  47. +0
    -1
      zuul/ansible/2.7/action/dellos9_config.pyi
  48. +0
    -1
      zuul/ansible/2.7/action/eos_config.py
  49. +0
    -1
      zuul/ansible/2.7/action/eos_config.pyi
  50. +0
    -1
      zuul/ansible/2.7/action/eos_template.py
  51. +0
    -1
      zuul/ansible/2.7/action/eos_template.pyi
  52. +0
    -1
      zuul/ansible/2.7/action/fetch.py
  53. +0
    -1
      zuul/ansible/2.7/action/fetch.pyi
  54. +0
    -1
      zuul/ansible/2.7/action/fortios_config.py
  55. +0
    -1
      zuul/ansible/2.7/action/fortios_config.pyi
  56. +0
    -1
      zuul/ansible/2.7/action/include_vars.py
  57. +0
    -1
      zuul/ansible/2.7/action/include_vars.pyi
  58. +0
    -1
      zuul/ansible/2.7/action/ios_config.py
  59. +0
    -1
      zuul/ansible/2.7/action/ios_config.pyi
  60. +0
    -1
      zuul/ansible/2.7/action/ios_template.py
  61. +0
    -1
      zuul/ansible/2.7/action/ios_template.pyi
  62. +0
    -1
      zuul/ansible/2.7/action/iosxr_config.py
  63. +0
    -1
      zuul/ansible/2.7/action/iosxr_config.pyi
  64. +0
    -1
      zuul/ansible/2.7/action/iosxr_template.py
  65. +0
    -1
      zuul/ansible/2.7/action/iosxr_template.pyi
  66. +0
    -1
      zuul/ansible/2.7/action/junos_config.py
  67. +0
    -1
      zuul/ansible/2.7/action/junos_config.pyi
  68. +0
    -1
      zuul/ansible/2.7/action/junos_template.py
  69. +0
    -1
      zuul/ansible/2.7/action/junos_template.pyi
  70. +0
    -1
      zuul/ansible/2.7/action/net_banner.py
  71. +0
    -1
      zuul/ansible/2.7/action/net_banner.pyi
  72. +0
    -1
      zuul/ansible/2.7/action/net_base.py
  73. +0
    -1
      zuul/ansible/2.7/action/net_base.pyi
  74. +0
    -1
      zuul/ansible/2.7/action/net_config.py
  75. +0
    -1
      zuul/ansible/2.7/action/net_config.pyi
  76. +0
    -1
      zuul/ansible/2.7/action/net_get.py
  77. +0
    -1
      zuul/ansible/2.7/action/net_get.pyi
  78. +0
    -1
      zuul/ansible/2.7/action/net_interface.py
  79. +0
    -1
      zuul/ansible/2.7/action/net_interface.pyi
  80. +0
    -1
      zuul/ansible/2.7/action/net_l2_interface.py
  81. +0
    -1
      zuul/ansible/2.7/action/net_l2_interface.pyi
  82. +0
    -1
      zuul/ansible/2.7/action/net_l3_interface.py
  83. +0
    -1
      zuul/ansible/2.7/action/net_l3_interface.pyi
  84. +0
    -1
      zuul/ansible/2.7/action/net_linkagg.py
  85. +0
    -1
      zuul/ansible/2.7/action/net_linkagg.pyi
  86. +0
    -1
      zuul/ansible/2.7/action/net_lldp.py
  87. +0
    -1
      zuul/ansible/2.7/action/net_lldp.pyi
  88. +0
    -1
      zuul/ansible/2.7/action/net_lldp_interface.py
  89. +0
    -1
      zuul/ansible/2.7/action/net_lldp_interface.pyi
  90. +0
    -1
      zuul/ansible/2.7/action/net_logging.py
  91. +0
    -1
      zuul/ansible/2.7/action/net_logging.pyi
  92. +0
    -1
      zuul/ansible/2.7/action/net_ping.py
  93. +0
    -1
      zuul/ansible/2.7/action/net_ping.pyi
  94. +0
    -1
      zuul/ansible/2.7/action/net_static_route.py
  95. +0
    -1
      zuul/ansible/2.7/action/net_static_route.pyi
  96. +0
    -1
      zuul/ansible/2.7/action/net_system.py
  97. +0
    -1
      zuul/ansible/2.7/action/net_system.pyi
  98. +0
    -1
      zuul/ansible/2.7/action/net_template.py
  99. +0
    -1
      zuul/ansible/2.7/action/net_template.pyi
  100. +0
    -1
      zuul/ansible/2.7/action/net_user.py

+ 0
- 2
.zuul.yaml View File

@ -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:


+ 4
- 0
releasenotes/notes/ansible-2.7-4b6504e46c18cc57.yaml View File

@ -0,0 +1,4 @@
---
upgrade:
- |
Support for Ansible 2.7 has been removed.

+ 1
- 11
tests/fixtures/config/ansible-versions/git/common-config/zuul.yaml View File

@ -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

+ 0
- 9
tests/fixtures/config/inventory/git/common-config/zuul.yaml View File

@ -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:


+ 0
- 1
tests/fixtures/config/inventory/git/org_project/.zuul.yaml View File

@ -7,5 +7,4 @@
- executor-only-inventory
- group-inventory
- hostvars-inventory
- ansible-version27-inventory
- ansible-version28-inventory

+ 0
- 1
tests/fixtures/config/inventory/git/org_project3/.zuul.yaml View File

@ -6,5 +6,4 @@
- executor-only-inventory
- group-inventory
- hostvars-inventory
- ansible-version27-inventory
- ansible-version28-inventory

+ 1
- 1
tests/fixtures/zuul-default-ansible-version.conf View File

@ -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


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

@ -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'


+ 12
- 48
tests/remote/test_remote_zuul_json.py View File

@ -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,58 +148,17 @@ class FunctionalZuulJSONMixIn:
dateutil.parser.parse(play_end_time)
class TestZuulJSON27(AnsibleZuulTestCase, FunctionalZuulJSONMixIn):
ansible_version = '2.7'
class TestZuulJSON28(AnsibleZuulTestCase, FunctionalZuulJSONMixIn):
ansible_version = '2.8'
def setUp(self):
super().setUp()
self._setUp()
class TestZuulJSON28(AnsibleZuulTestCase, FunctionalZuulJSONMixIn):
ansible_version = '2.8'
class TestZuulJSON29(AnsibleZuulTestCase, FunctionalZuulJSONMixIn):
ansible_version = '2.9'
def setUp(self):
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):
ansible_version = '2.9'

+ 8
- 92
tests/remote/test_remote_zuul_stream.py View File

@ -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,103 +212,17 @@ class FunctionalZuulStreamMixIn:
self.assertLogLine(regex, text)
class TestZuulStream27(AnsibleZuulTestCase, FunctionalZuulStreamMixIn):
ansible_version = '2.7'
class TestZuulStream28(AnsibleZuulTestCase, FunctionalZuulStreamMixIn):
ansible_version = '2.8'
def setUp(self):
super().setUp()
self._setUp()
class TestZuulStream28(AnsibleZuulTestCase, FunctionalZuulStreamMixIn):
ansible_version = '2.8'
class TestZuulStream29(AnsibleZuulTestCase, FunctionalZuulStreamMixIn):
ansible_version = '2.9'
def setUp(self):
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):
ansible_version = '2.9'

+ 0
- 24
tests/unit/test_inventory.py View File

@ -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):


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

@ -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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Loading…
Cancel
Save