1# Test code for the MSO modules 2# Copyright: (c) 2018, Dag Wieers (@dagwieers) <dag@wieers.com> 3 4# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 5 6- name: Test that we have an ACI MultiSite host, username and password 7 fail: 8 msg: 'Please define the following variables: mso_hostname, mso_username and mso_password.' 9 when: mso_hostname is not defined or mso_username is not defined or mso_password is not defined 10 11 12# CLEAN ENVIRONMENT 13- name: Remove site 2 14 mso_site: &site_absent 15 host: '{{ mso_hostname }}' 16 username: '{{ mso_username }}' 17 password: '{{ mso_password }}' 18 validate_certs: '{{ mso_validate_certs | default(false) }}' 19 use_ssl: '{{ mso_use_ssl | default(true) }}' 20 use_proxy: '{{ mso_use_proxy | default(true) }}' 21 output_level: '{{ mso_output_level | default("info") }}' 22 site: '{{ mso_site | default("ansible_test") }}_2' 23 state: absent 24 25- name: Remove site 26 mso_site: 27 <<: *site_absent 28 site: '{{ mso_site | default("ansible_test") }}' 29 register: cm_remove_site 30 31 32# ADD SITE 33- name: Add site (check_mode) 34 mso_site: &site_present 35 host: '{{ mso_hostname }}' 36 username: '{{ mso_username }}' 37 password: '{{ mso_password }}' 38 validate_certs: '{{ mso_validate_certs | default(false) }}' 39 use_ssl: '{{ mso_use_ssl | default(true) }}' 40 use_proxy: '{{ mso_use_proxy | default(true) }}' 41 output_level: '{{ mso_output_level | default("info") }}' 42 site: '{{ mso_site | default("ansible_test") }}' 43 apic_username: admin 44 apic_password: '{{ apic_password }}' 45 apic_site_id: 101 46 urls: 47 - https://{{ apic_hostname }} 48 location: 49 latitude: 50.887318 50 longitude: 4.447084 51 labels: 52 - Diegem 53 - EMEA 54 - POD51 55 state: present 56 check_mode: yes 57 register: cm_add_site 58 59- name: Verify cm_add_site 60 assert: 61 that: 62 - cm_add_site is changed 63 - cm_add_site.previous == {} 64 - cm_add_site.current.id is not defined 65 - cm_add_site.current.name == mso_site|default("ansible_test") 66 67- name: Add site (normal mode) 68 mso_site: *site_present 69 register: nm_add_site 70 71- name: nm_Verify add_site 72 assert: 73 that: 74 - nm_add_site is changed 75 - nm_add_site.previous == {} 76 - nm_add_site.current.id is defined 77 - nm_add_site.current.name == mso_site|default("ansible_test") 78 79- name: Add site again (check_mode) 80 mso_site: *site_present 81 check_mode: yes 82 register: cm_add_site_again 83 84- name: Verify cm_add_site_again 85 assert: 86 that: 87 - cm_add_site_again is not changed 88 - cm_add_site_again.previous.name == mso_site|default("ansible_test") 89 - cm_add_site_again.current.id == nm_add_site.current.id 90 - cm_add_site_again.current.name == mso_site|default("ansible_test") 91 92- name: Add site again (normal mode) 93 mso_site: *site_present 94 register: nm_add_site_again 95 96- name: Verify nm_add_site_again 97 assert: 98 that: 99 - nm_add_site_again is not changed 100 - nm_add_site_again.previous.name == mso_site|default("ansible_test") 101 - nm_add_site_again.current.id == nm_add_site.current.id 102 - nm_add_site_again.current.name == mso_site|default("ansible_test") 103 104 105# CHANGE SITE 106- name: Change site (check_mode) 107 mso_site: 108 <<: *site_present 109 site_id: '{{ nm_add_site.current.id }}' 110 site: '{{ mso_site | default("ansible_test") }}_2' 111 check_mode: yes 112 register: cm_change_site 113 114- name: Verify cm_change_site 115 assert: 116 that: 117 - cm_change_site is changed 118 - cm_change_site.current.id == nm_add_site.current.id 119 - cm_change_site.current.name == '{{ mso_site | default("ansible_test") }}_2' 120 121- name: Change site (normal mode) 122 mso_site: 123 <<: *site_present 124 site_id: '{{ nm_add_site.current.id }}' 125 site: '{{ mso_site | default("ansible_test") }}_2' 126 output_level: debug 127 register: nm_change_site 128 129- name: Verify nm_change_site 130 assert: 131 that: 132 - nm_change_site is changed 133 - nm_change_site.current.id == nm_add_site.current.id 134 - nm_change_site.current.name == '{{ mso_site | default("ansible_test") }}_2' 135 136- name: Change site again (check_mode) 137 mso_site: 138 <<: *site_present 139 site_id: '{{ nm_add_site.current.id }}' 140 site: '{{ mso_site | default("ansible_test") }}_2' 141 check_mode: yes 142 register: cm_change_site_again 143 144- name: Verify cm_change_site_again 145 assert: 146 that: 147 - cm_change_site_again is not changed 148 - cm_change_site_again.current.id == nm_add_site.current.id 149 - cm_change_site_again.current.name == '{{ mso_site | default("ansible_test") }}_2' 150 151- name: Change site again (normal mode) 152 mso_site: 153 <<: *site_present 154 site_id: '{{ nm_add_site.current.id }}' 155 site: '{{ mso_site | default("ansible_test") }}_2' 156 register: nm_change_site_again 157 158- name: Verify nm_change_site_again 159 assert: 160 that: 161 - nm_change_site_again is not changed 162 - nm_change_site_again.current.id == nm_add_site.current.id 163 - nm_change_site_again.current.name == '{{ mso_site | default("ansible_test") }}_2' 164 165 166# QUERY ALL SITES 167- name: Query all sites (check_mode) 168 mso_site: &site_query 169 host: '{{ mso_hostname }}' 170 username: '{{ mso_username }}' 171 password: '{{ mso_password }}' 172 validate_certs: '{{ mso_validate_certs | default(false) }}' 173 use_ssl: '{{ mso_use_ssl | default(true) }}' 174 use_proxy: '{{ mso_use_proxy | default(true) }}' 175 output_level: '{{ mso_output_level | default("info") }}' 176 state: query 177 check_mode: yes 178 register: cm_query_all_sites 179 180- name: Query all sites (normal mode) 181 mso_site: *site_query 182 register: nm_query_all_sites 183 184- name: Verify query_all_sites 185 assert: 186 that: 187 - cm_query_all_sites is not changed 188 - nm_query_all_sites is not changed 189 # NOTE: Order of sites is not stable between calls 190 #- cm_query_all_sites == nm_query_all_sites 191 192 193# QUERY A SITE 194- name: Query our site 195 mso_site: 196 <<: *site_query 197 site: '{{ mso_site | default("ansible_test") }}_2' 198 check_mode: yes 199 register: cm_query_site 200 201- name: Query our site 202 mso_site: 203 <<: *site_query 204 site: '{{ mso_site | default("ansible_test") }}_2' 205 register: nm_query_site 206 207- name: Verify query_site 208 assert: 209 that: 210 - cm_query_site is not changed 211 - cm_query_site.current.id == nm_add_site.current.id 212 - cm_query_site.current.name == '{{ mso_site | default("ansible_test") }}_2' 213 - nm_query_site is not changed 214 - nm_query_site.current.id == nm_add_site.current.id 215 - nm_query_site.current.name == '{{ mso_site | default("ansible_test") }}_2' 216 - cm_query_site == nm_query_site 217 218 219# REMOVE SITE 220- name: Remove site (check_mode) 221 mso_site: *site_absent 222 check_mode: yes 223 register: cm_remove_site 224 225- name: Verify cm_remove_site 226 assert: 227 that: 228 - cm_remove_site is changed 229 - cm_remove_site.current == {} 230 231- name: Remove site (normal mode) 232 mso_site: *site_absent 233 register: nm_remove_site 234 235- name: Verify nm_remove_site 236 assert: 237 that: 238 - nm_remove_site is changed 239 - nm_remove_site.current == {} 240 241- name: Remove site again (check_mode) 242 mso_site: *site_absent 243 check_mode: yes 244 register: cm_remove_site_again 245 246- name: Verify cm_remove_site_again 247 assert: 248 that: 249 - cm_remove_site_again is not changed 250 - cm_remove_site_again.current == {} 251 252- name: Remove site again (normal mode) 253 mso_site: *site_absent 254 register: nm_remove_site_again 255 256- name: Verify nm_remove_site_again 257 assert: 258 that: 259 - nm_remove_site_again is not changed 260 - nm_remove_site_again.current == {} 261 262 263# QUERY NON-EXISTING SITE 264- name: Query non-existing site (check_mode) 265 mso_site: 266 <<: *site_query 267 site: '{{ mso_site | default("ansible_test") }}' 268 check_mode: yes 269 register: cm_query_non_site 270 271- name: Query non-existing site (normal mode) 272 mso_site: 273 <<: *site_query 274 site: '{{ mso_site | default("ansible_test") }}' 275 register: nm_query_non_site 276 277# TODO: Implement more tests 278- name: Verify query_non_site 279 assert: 280 that: 281 - cm_query_non_site is not changed 282 - nm_query_non_site is not changed 283 - cm_query_non_site == nm_query_non_site 284