Skip to content

Commit 70f282e

Browse files
committed
host specific defaults and diff model changes
1 parent c0beee6 commit 70f282e

File tree

6 files changed

+110
-13
lines changed

6 files changed

+110
-13
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,3 +138,4 @@ roles/dtc/create/files
138138
roles/dtc/deploy/files
139139
roles/dtc/remove/files
140140
roles/validate/files/*
141+
roles/validate/defaults/*
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
from __future__ import absolute_import, division, print_function
2+
3+
4+
__metaclass__ = type
5+
6+
from ansible import constants as C
7+
from ansible.utils.display import Display
8+
from ansible.plugins.action import ActionBase
9+
10+
from ..helper_functions import do_something
11+
12+
from pprint import pprint
13+
14+
display = Display()
15+
16+
class ActionModule(ActionBase):
17+
18+
def run(self, tmp=None, task_vars=None):
19+
# self._supports_async = True
20+
results = super(ActionModule, self).run(tmp, task_vars)
21+
results['save_previous'] = False
22+
23+
roles = self._task.args['role_list']
24+
for role in ['cisco.nac_dc_vxlan.create', 'cisco.nac_dc_vxlan.remove']:
25+
if role in roles:
26+
results['save_previous'] = True
27+
28+
return results

plugins/action/dtc/vpc_pair_check.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ def run(self, tmp=None, task_vars=None):
4242
# vpc_data['results'][1]['response'][0]['isVpcConfigured']
4343
# vpc_data['results'][1]['response'][1]['isVpcConfigured']
4444

45-
import epdb; epdb.set_trace()
4645

4746
if fabric_data.get('global').get('auth_proto') is None:
4847
results['failed'] = True

roles/validate/tasks/main.yml

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
- name: Validate NDFC Service Model Data
33
vars:
44
schema_path: "{{ role_path }}/files/fabric_schema.yaml"
5-
rules_path: "{{ role_path }}/files/rules/"
65
data_path: "{{ inventory_dir }}/host_vars/{{ inventory_hostname }}"
6+
rules_path: "{{ role_path }}/files/rules/"
77

88
block:
99
- debug: msg="Calling Role Validate - nac_dc_vxlan.validate"
@@ -38,14 +38,24 @@
3838
ansible.builtin.set_fact:
3939
MD_Extended: "{{ smd['model_extended'] }}"
4040

41-
- name: Copy Service Model Data to Host
42-
ansible.builtin.copy:
43-
content: "{{ MD | to_nice_json }}"
44-
dest: "{{ role_path }}/files/service_model_golden.json"
45-
force: yes
46-
47-
- name: Copy Extended Service Model Data to Host
48-
ansible.builtin.copy:
49-
content: "{{ MD_Extended | to_nice_json }}"
50-
dest: "{{ role_path }}/files/service_model_extended.json"
51-
force: yes
41+
- name: "Check Roles"
42+
cisco.nac_dc_vxlan.common.check_roles:
43+
role_list: "{{ role_names }}"
44+
register: check_roles
45+
46+
- name: Manage Previous Service Model Data Files
47+
ansible.builtin.include_tasks: manage_model_files_previous.yml
48+
when: check_roles['save_previous']
49+
50+
- name: Manage Current Service Model Data Files
51+
ansible.builtin.include_tasks: manage_model_files_current.yml
52+
when: check_roles['save_previous']
53+
54+
- name: Stat Host Specific Defaults
55+
ansible.builtin.stat: path="{{ role_path }}/defaults/{{ inventory_hostname }}/defaults.yml"
56+
register: host_defaults
57+
58+
- name: Include Host Specific Defaults if Available
59+
ansible.builtin.include_vars:
60+
file: "{{ role_path }}/defaults/{{ inventory_hostname }}/defaults.yml"
61+
when: host_defaults.stat.exists
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
3+
# Copy the current golden and extended service model data to the host
4+
- name: Copy Service Model Data to Host
5+
ansible.builtin.copy:
6+
content: "{{ MD | to_nice_json }}"
7+
dest: "{{ role_path }}/files/{{ MD.fabric.global.name }}_service_model_golden.json"
8+
force: yes
9+
10+
# Copy the extended golden and extended service model data to the host
11+
- name: Copy Extended Service Model Data to Host
12+
ansible.builtin.copy:
13+
content: "{{ MD_Extended | to_nice_json }}"
14+
dest: "{{ role_path }}/files/{{ MD.fabric.global.name }}_service_model_extended.json"
15+
force: yes
16+
17+
# Read current golden service model data into a variable called 'smd_golden_current'
18+
- name: Read Current Service Model Data from Host
19+
ansible.builtin.include_vars:
20+
file: "{{ role_path }}/files/{{ MD.fabric.global.name }}_service_model_golden.json"
21+
register: smd_golden_current
22+
23+
- name: Display Model File Changes
24+
ansible.utils.fact_diff:
25+
before: "{{ smd_golden_previous }}"
26+
after: "{{ smd_golden_current }}"
27+
when: check_roles['save_previous']
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
---
2+
3+
- name: "Check Roles"
4+
cisco.nac_dc_vxlan.common.check_roles:
5+
role_list: "{{ role_names }}"
6+
register: check_roles
7+
8+
# Check if golden and extended service model data files exist from previous runs
9+
- name: Stat the Golden Service Model Data
10+
ansible.builtin.stat: path="{{ role_path }}/files/{{ MD.fabric.global.name }}_service_model_golden.json"
11+
register: golden_stat
12+
13+
- name: Stat the Extended Service Model Data
14+
ansible.builtin.stat: path="{{ role_path }}/files/{{ MD.fabric.global.name }}_service_model_extended.json"
15+
register: extended_stat
16+
17+
# Read and store previous golden service model data into a variable called 'smd_golden_previous'
18+
- name: Read Previous Golden Service Model Data from Host
19+
ansible.builtin.include_vars:
20+
file: "{{ role_path }}/files/{{ MD.fabric.global.name }}_service_model_golden.json"
21+
register: smd_golden_previous
22+
when: golden_stat.stat.exists and check_roles['save_previous']
23+
24+
# Rename golden file from previous run to append '_previous' to the filename
25+
- name: Move Golden Service Model Data Previous
26+
ansible.builtin.command: mv "{{ role_path }}/files/{{ MD.fabric.global.name }}_service_model_golden.json" "{{ role_path }}/files/{{ MD.fabric.global.name }}_service_model_golden_previous.json"
27+
when: golden_stat.stat.exists and check_roles['save_previous']
28+
29+
# Rename extended file from previous run to append '_previous' to the filename
30+
- name: Move Extended Service Model Data Previous
31+
ansible.builtin.command: mv "{{ role_path }}/files/{{ MD.fabric.global.name }}_service_model_extended.json" "{{ role_path }}/files/{{ MD.fabric.global.name }}_service_model_extended_previous.json"
32+
when: extended_stat.stat.exists and check_roles['save_previous']

0 commit comments

Comments
 (0)