mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-05-06 21:32:49 +00:00
Docker swarm service integration tests (#45674)
* integration test for docker_swarm_service * ensure stack de-initialization * Set default value for 'configs' parameter to None Docker-py uses None as a default value for configs. Using the same default here allows to create services on older docker setups (docker_api<1.30). * Set default value for 'update_order' parameter to None Docker-py uses None as a default value for update_order. Using the same default here allows to create services on older docker setups (docker_api<1.29) * Set default value for 'publish.mode' parameter to None Docker-py uses None as a default value for publish_mode. Using the same default here allows to create services on older docker setups (docker_api<1.32) * Allow tests to run on older version of docker. * remove workarounds for old docker versions * test correct swarm cleanup * changelog fragment for docker_swarm_service defaults change
This commit is contained in:
committed by
John R Barker
parent
bba8c23585
commit
2162d7d4de
4
test/integration/targets/docker_swarm_service/aliases
Normal file
4
test/integration/targets/docker_swarm_service/aliases
Normal file
@@ -0,0 +1,4 @@
|
||||
shippable/posix/group2
|
||||
skip/osx
|
||||
skip/freebsd
|
||||
destructive
|
||||
@@ -0,0 +1,3 @@
|
||||
---
|
||||
dependencies:
|
||||
- setup_docker
|
||||
@@ -0,0 +1,4 @@
|
||||
- include_tasks: test_swarm_service.yml
|
||||
when:
|
||||
- ansible_os_family != 'RedHat' or ansible_distribution_major_version != '6'
|
||||
- ansible_distribution != 'Fedora' or ansible_distribution_major_version|int >= 26
|
||||
@@ -0,0 +1,122 @@
|
||||
- name: Create a Swarm cluster
|
||||
docker_swarm:
|
||||
state: present
|
||||
advertise_addr: "{{ansible_default_ipv4.address}}"
|
||||
|
||||
- name: Create a swarm service without name
|
||||
register: output
|
||||
docker_swarm_service:
|
||||
state: present
|
||||
ignore_errors: yes
|
||||
|
||||
- name: assert failure when name not set
|
||||
assert:
|
||||
that:
|
||||
- output is failed
|
||||
- 'output.msg == "missing required arguments: name"'
|
||||
|
||||
- name: Remove an non-existing service
|
||||
register: output
|
||||
docker_swarm_service:
|
||||
state: absent
|
||||
name: non_existing_service
|
||||
|
||||
- name: assert output not changed when deleting non-existing service
|
||||
assert:
|
||||
that:
|
||||
- output is not changed
|
||||
|
||||
- name: create sample service
|
||||
register: output
|
||||
docker_swarm_service:
|
||||
name: test_service
|
||||
endpoint_mode: dnsrr
|
||||
image: busybox
|
||||
args:
|
||||
- sleep
|
||||
- "3600"
|
||||
|
||||
- name: assert sample service is created
|
||||
assert:
|
||||
that:
|
||||
- output is changed
|
||||
|
||||
- name: change service args
|
||||
register: output
|
||||
docker_swarm_service:
|
||||
name: test_service
|
||||
image: busybox
|
||||
args:
|
||||
- sleep
|
||||
- "1800"
|
||||
|
||||
- name: assert service args are correct
|
||||
assert:
|
||||
that:
|
||||
- output.ansible_docker_service.args == ['sleep', '1800']
|
||||
|
||||
- name: set service mode to global
|
||||
register: output
|
||||
docker_swarm_service:
|
||||
name: test_service
|
||||
image: busybox
|
||||
endpoint_mode: vip
|
||||
mode: global
|
||||
args:
|
||||
- sleep
|
||||
- "1800"
|
||||
|
||||
- name: assert service mode changed caused service rebuild
|
||||
assert:
|
||||
that:
|
||||
- output.rebuilt
|
||||
|
||||
- name: add published ports to service
|
||||
register: output
|
||||
docker_swarm_service:
|
||||
name: test_service
|
||||
image: busybox
|
||||
mode: global
|
||||
args:
|
||||
- sleep
|
||||
- "1800"
|
||||
endpoint_mode: vip
|
||||
publish:
|
||||
- protocol: tcp
|
||||
published_port: 60001
|
||||
target_port: 60001
|
||||
- protocol: udp
|
||||
published_port: 60001
|
||||
target_port: 60001
|
||||
|
||||
- name: assert service matches expectations
|
||||
assert:
|
||||
that:
|
||||
- output.ansible_docker_service == service_expected_output
|
||||
|
||||
- name: delete sample service
|
||||
register: output
|
||||
docker_swarm_service:
|
||||
name: test_service
|
||||
state: absent
|
||||
|
||||
- name: assert service deletion returns changed
|
||||
assert:
|
||||
that:
|
||||
- output is success
|
||||
- output is changed
|
||||
|
||||
- name: Remove the Swarm cluster
|
||||
docker_swarm:
|
||||
state: absent
|
||||
force: true
|
||||
|
||||
- name: Try reitializing the swarm cluster
|
||||
docker_swarm:
|
||||
state: present
|
||||
advertise_addr: "{{ansible_default_ipv4.address}}"
|
||||
|
||||
- name: Clean the docker daemon status
|
||||
docker_swarm:
|
||||
state: absent
|
||||
force: true
|
||||
38
test/integration/targets/docker_swarm_service/vars/main.yml
Normal file
38
test/integration/targets/docker_swarm_service/vars/main.yml
Normal file
@@ -0,0 +1,38 @@
|
||||
service_expected_output:
|
||||
args: [sleep, '1800']
|
||||
configs: null
|
||||
constraints: []
|
||||
container_labels: {}
|
||||
dns: []
|
||||
dns_options: []
|
||||
dns_search: []
|
||||
endpoint_mode: vip
|
||||
env: []
|
||||
force_update: null
|
||||
hostname: ''
|
||||
image: busybox
|
||||
labels: {}
|
||||
limit_cpu: 0.0
|
||||
limit_memory: 0
|
||||
log_driver: json-file
|
||||
log_driver_options: {}
|
||||
mode: global
|
||||
mounts: []
|
||||
networks: []
|
||||
publish:
|
||||
- {mode: null, protocol: tcp, published_port: 60001, target_port: 60001}
|
||||
- {mode: null, protocol: udp, published_port: 60001, target_port: 60001}
|
||||
replicas: null
|
||||
reserve_cpu: 0.0
|
||||
reserve_memory: 0
|
||||
restart_policy: none
|
||||
restart_policy_attempts: 0
|
||||
restart_policy_delay: 0
|
||||
restart_policy_window: 0
|
||||
tty: false
|
||||
update_delay: 10
|
||||
update_failure_action: continue
|
||||
update_max_failure_ratio: 0.0
|
||||
update_monitor: 5000000000
|
||||
update_order: null
|
||||
update_parallelism: 1
|
||||
Reference in New Issue
Block a user