•Create
omultiple flash probes for device
osupport compound variable
osupport reference variable of the feature as parser parameter
osupport reference GB dynamic rule
•Trigger
otrigger flash probe of the same device
flash_probes: # Definition for generating Flash Probe.
- name: BGP_Flapping#{ $ip1 }
display_name: BGP_Flapping#{ $ip1 } # display name, optional
description: xxxx
target_type: Interface # Device or Interface
target_interface: $intfName # target interface name, valid for target_type=Interface, null means all interfaces
qulification: | # qulification to filter the Device/Interface
$device.subTypeName=="Cisco Router" && $intf.name!="e0" && $intf.xxx=="xx"
conflict_mode: Skip # support values: Override and Skip, the default value is Skip
type: Primary # Primary or Secondary or External
trigger_type: AlertBased # AlertBased or TimerBased, AlertBased is the default value, valid for type=Primary
alert_source: ServiceNow # valid for type=External, such as ServiceNow...
frequency_multiple: 16 # multiple of the period of the base frequency valid for target_type=Device&&type=Primary&&trigger_type=TimerBased
variable_defines: # the variables that may be used in rule or alert_message, valid for type=Primary|Secondary&&trigger_type=AlertBased
- parser: "Built-in Files/CLI Command/Cisco IOS/Ping [Cisco IOS]"
parameters:
vrf: $xx
ip: $ip1
variables: # the variables that want to use in rule or alert_message
- name: status # variable full name
alias: status # alias that is actually used when referenced in Rule and alert_Message, same as 'name' if alias have no value
monitor: # fill in this flag to indicate that this variable needs to be monitored
display_name: xxx_status # display name which show up on the map data view.
unit: xxx_status # unit which show up on the map data view.
- parser: "Built-in Files/CLI Command/Cisco IOS/Interface xxx"
variables:
- name: intf.status
alias: intfStatus
- compound_variable: xxx1
expression: $status
- compound_variable: xxx2
expression: $status+3
rule: # valid for type=Primary|Secondary&&trigger_type=AlertBased
loop_table_rows: false
conditions:
- operand1: $status
operator: NotEqual # 1. UseGB, 2...
operand2: "Success"
- operand1: $status
operator: NotEqual
operand2: $status[last]
boolean_expression: A or B
alert_message: have bgp flapping alert $status # alert meessage, support variables, valid for type=Primary|Secondary&&trigger_type=AlertBased
triggered_by: # flash probe list that triggered by, valid for type=Secondary&&trigger_type=AlertBased
- name: FlashProbe1 # flash probe name, device level, same device&interface
target_type: Device # Device or SameLevel, SameLevel is the default value
enable: true # whether to enable
send_email: # send email when alert occurs.
enable: true
emails:
- [email protected]; [email protected]
trigger_event_template: New Template # optional, name of event template that will trigger when send email
enable: true # whether to enable, the default is true
Property Name |
Type |
Required |
Definition |
name |
string |
Y |
Flash name |
display_name |
string |
N |
It shows in IE Probe Flash UI. The default is the same with the name parameter. |
description |
string |
N |
The flash probe description |
target_type |
enum |
N |
There are 2 target types: •Device(default) •Interface |
target_interface |
string |
N |
If the target type is Interface, this parameter is available. It also references the feature variable as the value, such as $IntfName. |
qualification |
string |
N |
The qualification of the flash probe. It can use the GDR variable or feature variable as a condition, such as :$device.subTypeName=="Cisco Router" && $intf.name!="e0" && $intf.xxx=="xx" It supports device GDR attribute and physical interface GDR attribute. |
conflict_mode |
string |
N |
Override or Skip(default) |
type |
string |
N |
Primary(default), Secondary and External are supported. |
trigger_type |
string |
N |
This parameter is valid if the type parameter is Primary. It supports AlertBased (default)and TimerBased. |
alert_source |
string |
N |
This parameter is valid if the type parameter is External, such as 'ServiceNow'. |
frequency_multiple |
int |
Y |
Multiple of the period of the base frequency. It is valid for target_type=Device&&type=Primary&&trigger_type=TimerBased |
variables_defines |
object |
N |
It may be used in rule or alert_message. It is valid for type=Primary|Secondary&&trigger_type=AlertBased. |
variables_defines.parser |
list |
N |
Parser path |
variable_defines.parameters.{var1} |
string |
N |
The parser parameter variable,and {var1} is the variable name. |
variable_defines.variables |
object |
N |
The variables to be used in rule or alert_message |
variable_defines.variables.name |
string |
N |
The variable of the parser full name |
variable_defines.variables.alias |
string |
N |
The alias actually used when referenced in rule and alert_Message, same as 'name' if alias has no value. |
variable_defines.varaibles.monitor |
object |
N |
It indicates that this variable needs to be monitored. |
variable_defines.varaibles.monitor.display_name |
string |
N |
Display the name which shows up on the map data view. |
variable_defines.varaibles.monitor.unit |
string |
N |
As a variable unit and shows up on the map data view. |
variable_defines.compound_variable |
object |
N |
The compound variable name, and defining multiple compound variables is supported. |
variable_defines.compound_variable.expression |
string |
N |
Define the compound variable expression such as $var > 0 and $var2 !=None. |
rule |
object |
N |
Define rule for the flash probe . It is valid for type=Primary|Secondary&&trigger_type=AlertBased |
rule.loop_table_rows |
bool |
N |
The default is true. It will be set as true if the variable is the table. |
rule.conditions |
object |
N |
The rule condition |
rule.conditions.operand1 |
string |
N |
|
rule.conditions.operator |
object |
N |
The rule condition operator expression, such as Equal, Not Equal. It supports dynamic GB rule as well. |
rule.conditions.operand2 |
string |
N |
|
rule.conditions.boolean_expression |
string |
N |
The rule bool expression |
alert_message |
string |
N |
The alert message, which supports variable input such as $status. It is valid for type=Primary|Secondary&&trigger_type=AlertBased. |
triggered_by |
object |
N |
The triggered flash probe list It is valid for type=Secondary&&trigger_type=AlertBased. |
triggered_by.name |
string |
N |
The triggered flash probe name |
triggered_by.target_type |
string |
N |
Device#Device or SameLevel(default) |
enable |
bool |
N |
Whether to enable the flash probe being created or not The default is true. |
send_mail |
object |
N |
Setting email content for flash probe. |
send_mail.enable |
bool |
N |
The default is true when there is the send_email tag and at least one valid email address is filled in. |
emails |
list |
N |
The email address list |
trigger_event_template |
string |
N |
The name of the event template to be triggered when sending an email . |
•Create
ocreate a NI by feature decode
ocreate a default NI if do not have NI template
•Trigger
YAML Sample
network_intents: # Definition for generating NI.
path: All Network Intents/General_BGP_{$crossRelationHash} # the path to generate NI, here can use variables of FIG level
conflict_mode: Skip # support values: Override and Skip, the default is Skip
lock_after_created: true # the default is false
create_default_NI: true # Whether to create Default NI for the FIG, the default is false.
cli_baseline_update_type: LatestFromDE # support values: LatestFromDE(Relative to the time of running FID), LiveFromNextRun, the default is LatestFromDE.
ni_template: "./NI_template1.ni" # Relative path of the NI Template file, NI will be generated from the NITemplate when create_default_NI=false.
ni_inputs:
devices:
R1:
# repeat: false # Whether to generate the Device in NI for all Device of FIG replication that meets the criteria, the default is false.
device_condition: order('$bgp')==1 # FIG Device to NI Device Mapping condition.
# If repeat=true and there are multiple devices that meet this condition, the NI Device will be copied to generate.
parameters:
intf: $intfName1
ip: $ip1
# here can use variables and functions of device level
# line pattern variables and GDR variables are available here
# line pattern variable write like this: $bgp, without a prefix.
# GDR variable write like this, $device.subType, with prefix $device.
R2:
device_condition: order('$bgp')==2
parameters:
intf: $intfName1
ip: $ip1
Property Name |
Type |
Required |
Definition |
path |
string |
Y |
The path to generate the Network Intent. Only use the crossRelationHash variable here. |
conflict_mode |
string |
N |
Skip(default) or Override Verify if the asset being created already existed. |
create_default_NI |
bool |
N |
Whether to create the Default Network Intent for the FIG. The default value is false. The parameter is valid if the the Network Intent template does not exist or None |
lock_after_created |
bool |
N |
Lock the created Network Intent. The default value is false. |
cli_baseline_update_type |
string |
N |
LatestFromDE(compared to the time of running FID) or LiveFromNextRun, The default value is LatestFromDE. |
ni_template |
string |
N |
The relative path of the Network Intent Template file. The NI will be generated from the Network Intent Template when create_default_NI=false. |
ni_inputs |
object |
N |
Devices included in the Network Intent. |
ni_inputs.devices.R1 |
string |
N |
Satisfy R1 condition. |
ni_inputs.devices.R1.device_condition |
string |
N |
FIG Device to NI Device Mapping condition. |
ni_inputs.devices.R1.parameter |
string |
N |
•Install Triggered Automation
oCreate trigger automation asset:
▪The Network Intent
▪The Flash Probe
triggered_automation:
- description: xxxx
automation:
network_intents:
- Public NIs/BGP/General HSRP
auto_append_created_NI: true # Whether to automatically add the created NI by this FID
triggered_by_flash_probes: # flash probe list that triggered by
- name: FlashProbe1 # flash probe name
qualification: | # qulification to filter the Device/Interface
$device.subTypeName=="Cisco Router" && $intf.name!="e0" && $intf.xxx=="xx"
note_on_decision_tree: Check bgp # note on decision tree
playbooks: [BGP, HSRP] # note on decision tree
trigger_rule:
run_type: Once # Once or Continuously
frequency: # run frequency for Continuously
interval: 20
times: 3
suppression:
enable: true
wont_run_twice_within: 15
conflict_mode: Skip # support values: Override and Skip, the default value is Skip
Property Name |
Type |
Required |
Definition |
description |
string |
N |
The triggered automation description |
automation |
object |
Y |
Include the NI definition. Supports to reference current YAML created NI. |
automation.network_intents |
list |
Y |
References the NI path. Supports multiple NIs. |
auto_append_created_NI.auto_append_created_NI |
bool |
N |
Whether to automatically add the created NI by this FID The default is true. |
triggered_by_flash_probes |
list object |
Y |
The triggered Flash Probe list. |
triggered_by_flash_probes.name |
string |
Y |
The Flash probe name |
triggered_by_flash_probes.qualification |
string |
N |
The qualification can use the GDR variable or feature variable as a condition, such as :$device.subTypeName=="Cisco Router" && $intf.name!="e0" && $intf.xxx=="xx" It supports device GDR attribute and physical interface GDR attribute. |
triggered_by_flash_probes.note_on_decision_tree |
string |
N |
A note displayed on decision tree |
triggered_by_flash_probes.playbook_tags |
list |
N |
The playbook tags for decision tree, such as [BGP,] |
triggered_by_flash_probes.trigger_rule |
object |
Y |
The Trigger rule definition |
triggered_by_flash_probes.trigger_rule.run_type |
string |
Y |
Once or Continuously |
triggered_by_flash_probes.trigger_rule.frequency |
object |
Y |
The run frequency for Continuously |
triggered_by_flash_probes.trigger_rule.frequency.interval |
int |
Y |
The unit is minute. |
triggered_by_flash_probes.trigger_rule.frequency.times |
int |
Y |
Repeat run times. |
triggered_by_flash_probes.trigger_rule.suppression |
object |
N |
The unit is minute. |
triggered_by_flash_probes.trigger_rule.suppression.enable |
bool |
N |
|
triggered_by_flash_probes.trigger_rule.suppression.wont_run_twice_within |
string |
N |
|
conflict_mode |
string |
N |
To verify if the triggered automation has a conflict. Override or Skip (default) |
enable |
bool |
N |
Boolean value: true (default) or false |
send_mail |
object |
N |
Setting email content. |
send_mail.enable |
bool |
N |
The default is true when there is the send_email tag and at least one valid email address is filled in. |
emails |
list |
N |
The email address list |
trigger_event_template |
string |
N |
The name of the event template to be triggered when an email is sent. |
•Install Recommended Automation
oInstall recommended automation asset:
▪Network Intent
▪Runbook Template
▪CLI Command
recommended_automation: # support NI,DVT,RBT,Qapp and CLI
- description: xxx
automation:
network_intents:
- "Public NIs/BGP/General HSRP"
runbook_templates:
- "Built-in RBTs/BGP/General HSRP"
commands:
- "show version"
auto_append_created_NI: true # Whether to automatically add the created NI by this FID
auto_append_created_RBT: true # Whether to automatically add the created RBT by this FID
auto_append_feature_commands: true
recommended_by_flash_probes: # flash probe list that triggered by
- name: BGP_Flapping#{ $ip1 } # flash probe name
alert_type: NetBrain # NetBrain or External.
qulification: | # qulification to filter the Device/Interface
$device.subTypeName=="Cisco Router" && $intf.name!="e0" && $intf.xxx=="xx"
note_on_decision_tree: Check bgp # note on decision tree
playbooks: [BGP, HSRP] # note on decision tre
recommended_by_hypotheses:
- name: BGP_Flapping
qualification: $device.subType=1024 && $xxx!=null
note_on_decision_tree: Check bgp # note on decision tree
playbooks: [BGP, HSRP] # note on decision tree
conflict_mode: Skip # support values: Override and Skip, the default value is Skip
Property Name |
Type |
Required |
Definition |
automation |
object |
Y |
Recommend automation object . It includes NI, DVT, Qapp, Runbook Template, and CLI Command. |
description |
string |
N |
|
automation.network_intents |
list |
N |
Add the NI path. It supports multiple NI |
automation.runbook_templates |
list |
N |
Add the Runbook Template path. It supports multiple Runbook Template. |
automation.commands |
list |
N |
Add the CLI command. It supports multiple CLI commands. |
automation.auto_append_created_NI |
bool |
N |
Whether to automatically add the created NI by this FID The default is false. |
automation.auto_append_created_RBT |
bool |
N |
Whether to automatically add the created RBT by this FID The default is false. |
automation.auto_append_feature_commands |
bool |
N |
Append the feature CLI command. The default is false. |
recommended_by_flash_probes |
list |
N |
The triggered Flash Probe list. |
recommended_by_flash_probes.name |
string |
N |
The Flash probe name can contain variables. |
recommended_by_flash_probes.alert_type |
string |
N |
NetBrain or External |
recommended_by_flash_probes.qulification |
string |
N |
The qualification It can use the GDR variable or feature variable as a condition, such as :$device.subTypeName=="Cisco Router" && $intf.name!="e0" && $intf.xxx=="xx" It supports device GDR attribute and physical interface GDR attribute. |
recommended_by_flash_probes.note_on_decision_tree |
string |
N |
A note displayed on decision tree |
recommended_by_flash_probes.playbooks |
list |
N |
The playbook tags are for decision tree, such as [BGP,]. |
recommended_by_devices |
list |
N |
The recommend target devices |
recommended_by_devices.qualification |
string |
N |
The qualification can use the GDR variable or feature variable as a condition, such as :$device.subTypeName=="Cisco Router" && $intf.name!="e0" && $intf.xxx=="xx" It supports device GDR attribute and physical interface GDR attribute. |
recommended_by_devices.note_on_decision_tree |
string |
N |
A note displayed on decision tree |
recommended_by_devices.playbooks |
list |
N |
The playbook tags are for decision tree, such as [BGP,]. |
recommended_by_hypotheses |
string |
N |
Create the hypotheses property. |
recommended_by_hypotheses.qualification |
object |
N |
|
recommended_by_hypotheses.note_on_decision_tree |
string |
N |
|
recommended_by_hypotheses.playbooks |
list |
N |
|
conflict_mode |
string |
N |
Verify if the recommended automation has a conflict. Support values: Override or Skip(default) |
enable |
bool |
N |
Boolean value: true(default) or false |
•Create
oCreate a Data View Template.
•Schedule
oScheduled a Data View Template.
•Install Recommended Automation
oRecommend Automation of installing Data View Template.
dataview_templates: # DVTs that need to create
- path: ">>Data View Templates>Public Data View Templates>xxxx"
drill_down_actions: # dvt level drill down action
- name: Basic Commands
type: CLI # support types: CLI, RunbookTemplate
commands: # cli commands
- "show verson"
- "show standby"
description: xxxx
- name: Multicast Source Tree Health Check
type: RunbookTemplate # support types: CLI, RunbookTemplate
path: "Built-in Runbook Templates/Troubleshooting/Multicast Source Tree Health Check" # runbook template path
description: xxxx
filter_criteria:
device_types:
- Cisco IOS Switch
- Cisco Router
feature_names: #FID name
- xxxx
device_positions:
- parser: "Built-in Files/CLI Command/Cisco IOS/Version [Cisco IOS]"
variable: cpu
- parser: "Built-in Files/CLI Command/Cisco IOS/Interface [Cisco IOS]"
variable: intfs_table
index: 5 # the dataview position index, if not set, the positions are set in array order by default.
interface_positions:
- interface_type: IPv4 Interface
positions:
- parser: "Built-in Files/CLI Command/Cisco IOS/Interface [Cisco IOS]"
variable: intfs_table.status
index: 5
Property Name |
Type |
Required |
Definition |
path |
string |
Y |
The Data View Template full path |
node_type |
enum |
N |
In current version, node_type only supports Legacy. In the future, we will consider more node type: •Fabric Node. •EPG •Bridge Domain •VRF •L2Out •L3Out •Contract •Cluster Virtual Standard Switch •Virtual Standard Switch •Vmware Distributed Virtual Switch etc. |
drill_down_actions |
object |
N |
•Execute CLI Commands. •Runbook Template. |
drill_down_actions.commands |
list - string |
N |
Show commands. |
drill_down_actions.runbook_templates |
list - string |
N |
The Runbook template full path. |
filter_criteria |
object |
N |
Filter Criteria, see https://www.netbraintech.com/docs/ie80/help/index.html?advanced-search.htm#dynamic-search |
filter_criteria.device_types |
list - string |
N |
Device Type name list: •Cisco IOS Switch •Cisco Router For all device types, please see Device Type Name |
filter_criteria.feature_names |
string |
N |
Match with GDR property: "_nb_features" |
device_positions |
object |
N |
|
device_positions.parser |
string |
N |
The parser path |
device_positions.variable |
string |
N |
The variable name |
device_positions.index |
enum |
N |
The data view position: 0, 1, 2 or 3, ...19. |
interface_positions |
object |
N |
|
interface_positions.interface_type |
enum |
N |
•IPv4 Interface •Interface •IPv6 Interface •IPsec VPN Interface •GRE VPN Interface |
interface_positions.positions |
object |
N |
|
interface_positions.positions.parser |
string |
N |
The parser path |
interface_positions.positions.variable |
string |
N |
The variable name |
interface_positions.positions.index |
enum |
N |
The data view position: 0, 1, 2 or 3, ...23. |
•Create
oCreate Golden Baseline, Define a Golden Baseline Template. When running YAML, the matched device or interface will be automatically instanced. Note that all GB rules defined here are Auto and do not support Manual Rule in current version.
golden_baselines:
- parser: Built-in Files/Network Vendors/Cisco/Cisco IOS/show standby [Cisco IOS]
variable: intfs.state
enable_dynamic: true
- parser: Built-in Files/Network Vendors/Cisco/Cisco Nexus/show hsrp [Cisco Nexus Switch]
variable: intfs.priority
enable_dynamic: true
Property Name |
Type |
Required |
Definition |
parser |
string |
Y |
The parser path |
variable |
string |
Y |
The variable name |
enable_dynamic |
bool |
N |
Boolean value: true(default) or false |
•Schedule
oScheduled CLI command in the backend.
schedule_cli_tasks: # create Schedule CLI Task
- command: show interface {$ip1}
frequency_type: Low # Heigh or Medium or Low
description: FID-General HSRP-Schedule CLI
playbook_tags: [BGP, HSRP] # note on decision tree
enable: true # whether to enable, true is default value
conflict_mode: Skip # support values: Override and Skip, the default value is Skip
Property Name |
Type |
Required |
Definition |
command |
string |
Y |
Show the command. |
frequency_type |
enum |
N |
High, Medium or Low(default) |
description |
string |
N |
Describe the scheduled command. |
playbook_tags |
list-string |
N |
The Playbook tags |
enable |
bool |
N |
Boolean value: true(default) or false |
conflict_mode |
enum |
N |
Override or Skip(default) |
•Schedule
oScheduled Parser or data view template task.
schedule_tasks: # create Schedule Task
- name: FID-General HSRP-Schedule Task
auto_append_created_DVT: true # Whether to automatically add the created DVT by this FID
dataview_templates: # the DVTs that need to install by schdule task
- ">>Data View Templates>Built-in Data View Templates>Cisco ACI>Fabric Health and Faults [Cisco ACI]"
- ">>Data View Templates>Built-in Data View Templates>GeneralHSRP"
parsers: # the parsers that need to install by schdule task
- "Built-in Files/Configuration/Cisco IOS/EIGRP Configuration [Cisco IOS]"
frequency:
type: Daily # support values: Hourly, Daily and Weekly.
time: 20:58:25
day_of_week: Monday # support values: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday and Sunday, valid when type=Weekly.
timezone: Eastern Standard Time # see time zone: https://www.timeanddate.com/time/zones/
Property Name |
Type |
Required |
Definition |
name |
string |
Y |
The schedule task name |
auto_append_created_DVT |
bool |
N |
Boolean value: true or false(default) |
dataview_templates |
list |
N |
The list of Data View Templates |
parsers |
list |
N |
The list of parsers |
frequency |
object |
Y |
|
frequency.type |
enum |
Y |
It supports values: Hourly, Daily, and Weekly. |
frequency.time |
string |
Y |
An example: 20:58:25 |
frequency.day_of_week |
enum |
Y |
It is valid when the type is 'Weekly'. It supports values: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, and Sunday. |
frequency.timezone |
enum |
Y |
See time zone: https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-time-zones |
•Create
oCreate a Runbook template.
•Install Recommended Automation
oRecommend Automation of installing Runbook Template.
runbook_templates:
- path: "Public Runbook Templates/FID/xxx"
auto_append_feature_commands: true # whether to automatically append the commands of feature to RunbookTemplate Nodes, only for the commands that not include line pattern variables
conflict_mode: Skip # support values: Override and Skip, the default value is Skip
Property Name |
Type |
Required |
Definition |
path |
string |
Y |
The Runbook Template full path |
auto_append_feature_commands |
bool |
N |
Whether to automatically append the commands of feature to RunbookTemplate Nodes; only applies to the commands that do not include the line pattern variables. It supports value: true(default) or false |
conflict_mode |
enum |
N |
It supports value: Override or Skip(default) |