cisco_node_utils 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (151) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +66 -0
  4. data/Gemfile +1 -0
  5. data/README.md +44 -43
  6. data/bin/.rubocop.yml +18 -0
  7. data/bin/show_running_yang.rb +233 -0
  8. data/cisco_node_utils.gemspec +1 -1
  9. data/docs/README-maintainers.md +1 -0
  10. data/docs/README-utilities.md +14 -0
  11. data/lib/.rubocop.yml +1 -1
  12. data/lib/cisco_node_utils/aaa_authentication_login_service.rb +8 -3
  13. data/lib/cisco_node_utils/aaa_authorization_service.rb +6 -0
  14. data/lib/cisco_node_utils/bfd_global.rb +300 -0
  15. data/lib/cisco_node_utils/bgp.rb +6 -4
  16. data/lib/cisco_node_utils/bgp_af.rb +2 -0
  17. data/lib/cisco_node_utils/bgp_neighbor.rb +14 -0
  18. data/lib/cisco_node_utils/bgp_neighbor_af.rb +4 -1
  19. data/lib/cisco_node_utils/cisco_cmn_utils.rb +126 -0
  20. data/lib/cisco_node_utils/client/client.rb +6 -2
  21. data/lib/cisco_node_utils/client/grpc/client.rb +120 -36
  22. data/lib/cisco_node_utils/client/nxapi/client.rb +6 -2
  23. data/lib/cisco_node_utils/cmd_ref/DEPRECATED.yaml +118 -0
  24. data/lib/cisco_node_utils/cmd_ref/aaa_authorization_service.yaml +14 -0
  25. data/lib/cisco_node_utils/cmd_ref/bfd_global.yaml +117 -0
  26. data/lib/cisco_node_utils/cmd_ref/bgp.yaml +7 -7
  27. data/lib/cisco_node_utils/cmd_ref/bgp_neighbor.yaml +7 -0
  28. data/lib/cisco_node_utils/cmd_ref/dhcp_relay_global.yaml +125 -0
  29. data/lib/cisco_node_utils/cmd_ref/feature.yaml +10 -0
  30. data/lib/cisco_node_utils/cmd_ref/interface.yaml +141 -49
  31. data/lib/cisco_node_utils/cmd_ref/interface_ospf.yaml +44 -0
  32. data/lib/cisco_node_utils/cmd_ref/interface_portchannel.yaml +6 -0
  33. data/lib/cisco_node_utils/cmd_ref/ospf.yaml +6 -0
  34. data/lib/cisco_node_utils/cmd_ref/ospf_area.yaml +91 -0
  35. data/lib/cisco_node_utils/cmd_ref/ospf_area_vlink.yaml +88 -0
  36. data/lib/cisco_node_utils/cmd_ref/overlay_global.yaml +0 -3
  37. data/lib/cisco_node_utils/cmd_ref/show_version.yaml +3 -3
  38. data/lib/cisco_node_utils/cmd_ref/snmp_community.yaml +39 -15
  39. data/lib/cisco_node_utils/cmd_ref/snmp_notification_receiver.yaml +43 -21
  40. data/lib/cisco_node_utils/cmd_ref/snmp_server.yaml +48 -19
  41. data/lib/cisco_node_utils/cmd_ref/snmp_user.yaml +0 -0
  42. data/lib/cisco_node_utils/cmd_ref/tacacs_global.yaml +30 -0
  43. data/lib/cisco_node_utils/cmd_ref/tacacs_server.yaml +18 -6
  44. data/lib/cisco_node_utils/cmd_ref/vdc.yaml +4 -0
  45. data/lib/cisco_node_utils/cmd_ref/virtual_service.yaml +1 -0
  46. data/lib/cisco_node_utils/cmd_ref/vlan.yaml +23 -10
  47. data/lib/cisco_node_utils/cmd_ref/vxlan_vtep.yaml +8 -2
  48. data/lib/cisco_node_utils/cmd_ref/yang.yaml +7 -0
  49. data/lib/cisco_node_utils/cmd_ref/yum.yaml +10 -1
  50. data/lib/cisco_node_utils/constants.rb +8 -1
  51. data/lib/cisco_node_utils/dhcp_relay_global.rb +302 -0
  52. data/lib/cisco_node_utils/exceptions.rb +29 -0
  53. data/lib/cisco_node_utils/feature.rb +28 -0
  54. data/lib/cisco_node_utils/interface.rb +493 -402
  55. data/lib/cisco_node_utils/interface_DEPRECATED.rb +513 -0
  56. data/lib/cisco_node_utils/interface_ospf.rb +126 -0
  57. data/lib/cisco_node_utils/interface_portchannel.rb +16 -0
  58. data/lib/cisco_node_utils/logger.rb +3 -0
  59. data/lib/cisco_node_utils/node.rb +29 -1
  60. data/lib/cisco_node_utils/overlay_global.rb +1 -12
  61. data/lib/cisco_node_utils/pim.rb +1 -0
  62. data/lib/cisco_node_utils/pim_group_list.rb +1 -0
  63. data/lib/cisco_node_utils/pim_rp_address.rb +1 -0
  64. data/lib/cisco_node_utils/platform.rb +9 -2
  65. data/lib/cisco_node_utils/router_ospf.rb +1 -1
  66. data/lib/cisco_node_utils/router_ospf_area.rb +416 -0
  67. data/lib/cisco_node_utils/router_ospf_area_vlink.rb +313 -0
  68. data/lib/cisco_node_utils/router_ospf_vrf.rb +17 -0
  69. data/lib/cisco_node_utils/snmp_notification_receiver.rb +27 -9
  70. data/lib/cisco_node_utils/snmpcommunity.rb +34 -8
  71. data/lib/cisco_node_utils/snmpserver.rb +4 -4
  72. data/lib/cisco_node_utils/snmpuser.rb +0 -0
  73. data/lib/cisco_node_utils/tacacs_global.rb +102 -0
  74. data/lib/cisco_node_utils/tacacs_server.rb +8 -7
  75. data/lib/cisco_node_utils/vdc.rb +25 -7
  76. data/lib/cisco_node_utils/version.rb +1 -1
  77. data/lib/cisco_node_utils/vlan.rb +30 -56
  78. data/lib/cisco_node_utils/vlan_DEPRECATED.rb +108 -0
  79. data/lib/cisco_node_utils/yang.rb +160 -0
  80. data/lib/cisco_node_utils/yum.rb +25 -32
  81. data/tests/.rubocop.yml +3 -0
  82. data/tests/ciscotest.rb +136 -19
  83. data/tests/cmd_config_invalid.yaml +1 -1
  84. data/tests/noop.rb +7 -0
  85. data/tests/tacacs_server.yaml.example +6 -0
  86. data/tests/test_aaa_authentication_login.rb +24 -1
  87. data/tests/test_aaa_authentication_login_service.rb +9 -16
  88. data/tests/test_aaa_authorization_service.rb +111 -84
  89. data/tests/test_bfd_global.rb +278 -0
  90. data/tests/test_bgp_neighbor.rb +20 -0
  91. data/tests/test_bridge_domain_vni.rb +2 -9
  92. data/tests/test_cmn_utils.rb +76 -0
  93. data/tests/test_dhcp_relay_global.rb +284 -0
  94. data/tests/test_dns_domain.rb +4 -4
  95. data/tests/test_domain_name.rb +2 -2
  96. data/tests/test_encapsulation.rb +2 -4
  97. data/tests/test_evpn_vni.rb +14 -7
  98. data/tests/test_fabricpath_global.rb +12 -13
  99. data/tests/test_feature.rb +35 -17
  100. data/tests/test_interface.rb +352 -127
  101. data/tests/test_interface_bdi.rb +2 -2
  102. data/tests/test_interface_channel_group.rb +1 -1
  103. data/tests/test_interface_ospf.rb +153 -23
  104. data/tests/test_interface_portchannel.rb +15 -6
  105. data/tests/test_interface_private_vlan.rb +200 -576
  106. data/tests/test_interface_svi.rb +5 -52
  107. data/tests/test_interface_switchport.rb +80 -240
  108. data/tests/test_itd_device_group.rb +2 -2
  109. data/tests/test_itd_device_group_node.rb +2 -2
  110. data/tests/test_itd_service.rb +1 -1
  111. data/tests/test_name_server.rb +3 -3
  112. data/tests/test_node_ext.rb +15 -17
  113. data/tests/test_ntp_config.rb +1 -1
  114. data/tests/test_ntp_server.rb +3 -3
  115. data/tests/test_nxapi.rb +1 -0
  116. data/tests/test_overlay_global.rb +15 -19
  117. data/tests/test_pim.rb +5 -5
  118. data/tests/test_pim_group_list.rb +1 -37
  119. data/tests/test_pim_rp_address.rb +1 -1
  120. data/tests/test_platform.rb +9 -11
  121. data/tests/test_portchannel_global.rb +43 -3
  122. data/tests/test_radius_server.rb +1 -1
  123. data/tests/test_radius_server_group.rb +1 -1
  124. data/tests/test_router_bgp.rb +17 -30
  125. data/tests/test_router_ospf_area.rb +433 -0
  126. data/tests/test_router_ospf_area_vlink.rb +298 -0
  127. data/tests/test_router_ospf_vrf.rb +17 -0
  128. data/tests/test_snmp_notification_receiver.rb +11 -11
  129. data/tests/test_snmpcommunity.rb +177 -69
  130. data/tests/test_snmpgroup.rb +7 -7
  131. data/tests/test_snmpserver.rb +164 -253
  132. data/tests/test_snmpuser.rb +73 -69
  133. data/tests/test_stp_global.rb +15 -15
  134. data/tests/test_syslog_settings.rb +1 -1
  135. data/tests/test_tacacs_global.rb +80 -0
  136. data/tests/test_tacacs_server.rb +129 -51
  137. data/tests/test_tacacs_server_group.rb +3 -29
  138. data/tests/test_tacacs_server_host.rb +24 -27
  139. data/tests/test_vlan.rb +57 -59
  140. data/tests/test_vlan_private.rb +271 -284
  141. data/tests/test_vpc.rb +10 -4
  142. data/tests/test_vrf.rb +2 -0
  143. data/tests/test_vrf_af.rb +2 -5
  144. data/tests/test_vtp.rb +5 -2
  145. data/tests/test_vxlan_vtep.rb +20 -44
  146. data/tests/test_vxlan_vtep_vni.rb +23 -16
  147. data/tests/test_yang.rb +369 -0
  148. data/tests/test_yum.rb +34 -42
  149. data/tests/yum_package.yaml +35 -0
  150. metadata +31 -4
  151. data/tests/test_vlan_mt_full.rb +0 -85
@@ -1,23 +1,29 @@
1
1
  # snmp_server
2
2
  ---
3
- _exclude: [ios_xr]
4
3
 
5
4
  aaa_user_cache_timeout:
6
- nexus:
7
- kind: int
8
- get_command: "show snmp internal globals"
9
- get_value: '/AAA Cache Timeout :(\d+)/'
10
- set_value: "%s snmp-server aaa-user cache-timeout %d"
11
- default_value: 3600
5
+ _exclude: [ios_xr]
6
+ kind: int
7
+ get_command: "show snmp internal globals"
8
+ get_value: '/AAA Cache Timeout :(\d+)/'
9
+ set_value: "%s snmp-server aaa-user cache-timeout %d"
10
+ default_value: 3600
12
11
 
13
12
  contact:
14
- get_data_format: nxapi_structured
15
- get_command: "show snmp"
16
- get_value: "sys_contact"
17
- set_value: "%s snmp-server contact %s"
18
- default_value: ""
13
+ nexus:
14
+ get_data_format: nxapi_structured
15
+ get_command: "show snmp"
16
+ get_value: "sys_contact"
17
+ set_value: "<state> snmp-server contact <contact>"
18
+ default_value: ""
19
+ ios_xr:
20
+ get_command: 'show running-config snmp'
21
+ get_value: '/^snmp-server contact (\S+)$/'
22
+ set_value: "<state> snmp-server contact <contact>"
23
+ default_value: ""
19
24
 
20
25
  global_enforce_priv:
26
+ _exclude: [ios_xr]
21
27
  kind: boolean
22
28
  get_command: "show run snmp all"
23
29
  get_value: '/^(?:no )?snmp-server globalEnforcePriv/'
@@ -25,28 +31,51 @@ global_enforce_priv:
25
31
  default_value: false
26
32
 
27
33
  location:
28
- get_data_format: nxapi_structured
29
- get_command: "show snmp"
30
- get_value: "sys_location"
31
- set_value: "%s snmp-server location %s"
32
- default_value: ""
34
+ nexus:
35
+ get_data_format: nxapi_structured
36
+ get_command: "show snmp"
37
+ get_value: "sys_location"
38
+ set_value: "<state> snmp-server location <location>"
39
+ default_value: ""
40
+ ios_xr:
41
+ get_command: 'show running-config snmp'
42
+ get_value: '/^snmp-server location (\S+)$/'
43
+ set_value: "<state> snmp-server location <location>"
44
+ default_value: ""
33
45
 
34
46
  packet_size:
47
+ _exclude: [ios_xr]
35
48
  kind: int
36
49
  get_command: "show snmp internal globals"
37
50
  get_value: '/SNMP Max packet size :(\d+)/'
38
51
  set_value: "%s snmp-server packetsize %d"
39
- default_value: 1500
52
+ N3k: &n3k_default_packet_size
53
+ # Prior to the 7.0(3)I4(1) release, the default packet size
54
+ # was incorrectly displayed as 0. CSCuz14217 fixed this to
55
+ # corectly display 1500.
56
+ default_value: 1500
57
+ N9k: *n3k_default_packet_size
58
+ N5k: &n5k_default_packet_size
59
+ # N5|6|7k platforms still incorrectly display the packet
60
+ # size as 0. This value is therefore still used as the
61
+ # default. This yaml entry will be changed to match
62
+ # the n3|9k behavior when the issue is resolved.
63
+ default_value: 0
64
+ N6k: *n5k_default_packet_size
65
+ N7k: *n5k_default_packet_size
66
+ N8k: *n5k_default_packet_size
40
67
 
41
68
  protocol:
69
+ _exclude: [ios_xr]
42
70
  kind: boolean
43
71
  auto_default: false
44
- get_command: "show running-config snmp all"
72
+ get_command: 'show running-config snmp all'
45
73
  get_value: '/^snmp.server protocol enable/'
46
74
  set_value: "%s snmp-server protocol enable"
47
75
  default_value: true
48
76
 
49
77
  tcp_session_auth:
78
+ _exclude: [ios_xr]
50
79
  kind: boolean
51
80
  auto_default: false
52
81
  get_command: "show running-config snmp all"
File without changes
@@ -0,0 +1,30 @@
1
+ # tacacs_global.yaml
2
+ ---
3
+ encryption:
4
+ set_value: "<state> tacacs-server key <option> <key>"
5
+
6
+ key:
7
+ get_value: '/^tacacs-server key (\d+)\s+(\S+)/'
8
+ default_value: ""
9
+ nexus:
10
+ get_command: "show run tacacs all"
11
+ ios_xr:
12
+ get_command: "show running-config tacacs-server"
13
+
14
+ key_format:
15
+ get_value: '/^tacacs-server key (\d+)\s+(\S+)/'
16
+ default_value: 0
17
+ nexus:
18
+ get_command: "show run tacacs all"
19
+ ios_xr:
20
+ get_command: "show running-config tacacs-server"
21
+
22
+ timeout:
23
+ kind: int
24
+ get_value: '/tacacs-server timeout\s+(\d+)/'
25
+ set_value: "<state> tacacs-server timeout <timeout>"
26
+ default_value: 5
27
+ nexus:
28
+ get_command: "show run tacacs all"
29
+ ios_xr:
30
+ get_command: "show running-config tacacs-server"
@@ -1,8 +1,8 @@
1
1
  # tacacs_server
2
2
  ---
3
- _exclude: [ios_xr]
4
3
 
5
4
  deadtime:
5
+ _exclude: [ios_xr]
6
6
  kind: int
7
7
  get_command: "show run tacacs all"
8
8
  get_value: '/^tacacs-server deadtime\s+(\d+)/'
@@ -10,6 +10,7 @@ deadtime:
10
10
  default_value: 0
11
11
 
12
12
  directed_request:
13
+ _exclude: [ios_xr]
13
14
  kind: boolean
14
15
  # oddly, directed request must be retrieved from aaa output
15
16
  get_command: "show running aaa all"
@@ -18,26 +19,34 @@ directed_request:
18
19
  default_value: false
19
20
 
20
21
  encryption:
21
- set_value: "%s tacacs-server key %d %s"
22
+ set_value: "<state> tacacs-server key <option> <key>"
22
23
 
23
24
  encryption_password:
24
- get_command: "show run tacacs all"
25
25
  get_value: '/^tacacs-server key (\d+)\s+(\S+)/'
26
26
  default_value: ""
27
+ nexus:
28
+ get_command: "show run tacacs all"
29
+ ios_xr:
30
+ get_command: "show running-config tacacs-server"
27
31
 
28
32
  encryption_type:
29
33
  auto_default: false
30
- get_command: "show run tacacs all"
31
34
  get_value: '/^tacacs-server key (\d+)\s+(\S+)/'
32
35
  default_value: 0
36
+ nexus:
37
+ get_command: "show run tacacs all"
38
+ ios_xr:
39
+ get_command: "show running-config tacacs-server"
33
40
 
34
41
  feature:
42
+ _exclude: [ios_xr]
35
43
  kind: boolean
36
44
  get_command: "show run tacacs all"
37
45
  get_value: '/^feature tacacs/'
38
46
  set_value: "%s feature tacacs+"
39
47
 
40
48
  source_interface:
49
+ _exclude: [ios_xr]
41
50
  get_command: "show run tacacs all"
42
51
  get_value: '/(no)?\s*ip tacacs source-interface\s+(\S+)?/'
43
52
  set_value: "%s ip tacacs source-interface %s"
@@ -45,7 +54,10 @@ source_interface:
45
54
 
46
55
  timeout:
47
56
  kind: int
48
- get_command: "show run tacacs all"
49
57
  get_value: '/tacacs-server timeout\s+(\d+)/'
50
- set_value: "%s tacacs-server timeout %d"
58
+ set_value: "<state> tacacs-server timeout <timeout>"
51
59
  default_value: 5
60
+ nexus:
61
+ get_command: "show run tacacs all"
62
+ ios_xr:
63
+ get_command: "show running-config tacacs-server"
@@ -16,6 +16,10 @@ all_vdcs:
16
16
  get_context: ~
17
17
  get_value: '/^vdc (\S+) id/'
18
18
 
19
+ allocate_interface:
20
+ get_value: '/^allocate interface (.*)/'
21
+ default_value: ~
22
+
19
23
  allocate_interface_unallocated:
20
24
  kind: boolean
21
25
  set_value: 'allocate interface unallocated-interfaces'
@@ -3,5 +3,6 @@
3
3
  services:
4
4
  _exclude: [ios_xr]
5
5
  multiple: true
6
+ get_data_format: nxapi_structured
6
7
  get_command: 'show virtual-service detail'
7
8
  get_context: ["TABLE_detail", "ROW_detail"]
@@ -24,15 +24,28 @@ fabric_control:
24
24
  default_value: false
25
25
 
26
26
  mapped_vni:
27
- N3k: &mapped_vni_n3k_n9k
28
- kind: int
27
+ _exclude: [N7k]
28
+ N3k: &mapped_vni_n3_8_9k
29
29
  get_command: 'show running vlan'
30
- get_context: ['/^vlan <vlan>$/']
31
- get_value: '/^vn-segment (\d+)$/'
32
- set_context: ['vlan <vlan>']
33
- set_value: '<state> vn-segment <vni> ; end'
34
- default_value: ''
35
- N9k: *mapped_vni_n3k_n9k
30
+ N8k: *mapped_vni_n3_8_9k
31
+ N9k: *mapped_vni_n3_8_9k
32
+ N5k: &mapped_vni_n5_6k
33
+ get_command: 'show running vlan 1-4094'
34
+ N6k: *mapped_vni_n5_6k
35
+ kind: int
36
+ get_context: ['/^vlan <vlan>$/']
37
+ get_value: '/^vn-segment (\d+)$/'
38
+ set_context: ['vlan <vlan>']
39
+ set_value: '<state> vn-segment <vni> ; end'
40
+ default_value: ''
41
+
42
+ mapped_vni_requires_nv_overlay:
43
+ kind: boolean
44
+ N5k: &requires_nv_overlay_true
45
+ default_only: true
46
+ N6k: *requires_nv_overlay_true
47
+ else:
48
+ default_only: false
36
49
 
37
50
  mode:
38
51
  _exclude: [N3k, N9k]
@@ -51,7 +64,7 @@ name:
51
64
  set_context: ["vlan %d"]
52
65
  set_value: "%s name %s ; end"
53
66
 
54
- private_vlan_association:
67
+ pvlan_association:
55
68
  _exclude: [N8k]
56
69
  multiple: true
57
70
  get_command: "show vlan private-vlan"
@@ -60,7 +73,7 @@ private_vlan_association:
60
73
  set_value: "<state> private-vlan association <vlans> ; end"
61
74
  default_value: []
62
75
 
63
- private_vlan_type:
76
+ pvlan_type:
64
77
  _exclude: [N8k]
65
78
  kind: string
66
79
  get_command: 'show vlan private-vlan type'
@@ -50,11 +50,17 @@ source_intf:
50
50
  default_value: ''
51
51
 
52
52
  source_intf_hold_down_time:
53
- _exclude: [N5k, N6k, N7k, N8k]
53
+ _exclude: [N5k, N6k, N7k]
54
54
  kind: int
55
55
  get_value: '/^source-interface hold-down-time (\d+)$/'
56
56
  set_value: '<state> source-interface hold-down-time <time>'
57
- default_value: ''
57
+ # This property is dependent on 'source-intf' and will not nvgen unless that
58
+ # command is also present. In I4 and older images the default_value was ''
59
+ # because the command did not nvgen with 'sh run int nve1 all'; in I4+ images
60
+ # this was changed and now the command appears (with 'show run all') with
61
+ # a value of 180. This is the correct behavior but it means that I4 and older
62
+ # images may experience an idempotence problem.
63
+ default_value: 180
58
64
 
59
65
  vni:
60
66
  set_value: '<state> member vni <vni> <assoc_vrf>'
@@ -0,0 +1,7 @@
1
+ # yang
2
+ #
3
+ ---
4
+ _exclude: [nexus]
5
+ support:
6
+ get_value: ''
7
+
@@ -2,6 +2,9 @@
2
2
  ---
3
3
  _exclude: [ios_xr]
4
4
 
5
+ deactivate:
6
+ set_value: "install deactivate %s"
7
+
5
8
  install:
6
9
  set_value: "install add %s %s activate"
7
10
 
@@ -11,5 +14,11 @@ query:
11
14
  # pass in the pkg name, retrieve version
12
15
  get_value: '/^%s\S*\s+(\S+)\s+(?:installed|@\S+)/'
13
16
 
17
+ query_all:
18
+ multiple: true
19
+ get_command: "show install packages"
20
+ get_value: '/^(\S+)\s+(\S+)\s+(\S+)$/'
21
+ default_value: []
22
+
14
23
  remove:
15
- set_value: "install deactivate %s"
24
+ set_value: "install remove %s forced"
@@ -28,6 +28,13 @@ module Cisco
28
28
  :cli,
29
29
  # Structured data format specific to NX-API
30
30
  :nxapi_structured,
31
- # TODO: :yang,
31
+ # YANG JSON
32
+ :yang_json,
33
+ ]
34
+
35
+ YANG_SET_MODE = [
36
+ :merge_config,
37
+ :replace_config,
38
+ :delete_config,
32
39
  ]
33
40
  end
@@ -0,0 +1,302 @@
1
+ # September 2016, Sai Chintalapudi
2
+ #
3
+ # Copyright (c) 2016 Cisco and/or its affiliates.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ require_relative 'node_util'
18
+
19
+ module Cisco
20
+ # node_utils class for dhcp_relay_global
21
+ class DhcpRelayGlobal < NodeUtil
22
+ attr_reader :name
23
+
24
+ def initialize(instantiate=true)
25
+ Feature.dhcp_enable if instantiate
26
+ set_args_keys_default
27
+ end
28
+
29
+ def self.globals
30
+ hash = {}
31
+ hash['default'] = DhcpRelayGlobal.new(false) if Feature.dhcp_enabled?
32
+ hash
33
+ end
34
+
35
+ # Helper method to delete @set_args hash keys
36
+ def set_args_keys_default
37
+ @set_args = {}
38
+ @get_args = @set_args
39
+ end
40
+
41
+ # rubocop:disable Style/AccessorMethodName
42
+ def set_args_keys(hash={})
43
+ set_args_keys_default
44
+ @set_args = @get_args.merge!(hash) unless hash.empty?
45
+ end
46
+
47
+ def destroy
48
+ return unless Feature.dhcp_enabled?
49
+ [:ipv4_information_option,
50
+ :ipv4_information_option_trust,
51
+ :ipv4_information_option_vpn,
52
+ :ipv4_information_trust_all,
53
+ :ipv4_relay,
54
+ :ipv4_smart_relay,
55
+ :ipv4_src_addr_hsrp,
56
+ :ipv4_src_intf,
57
+ :ipv4_sub_option_circuit_id_custom,
58
+ :ipv4_sub_option_circuit_id_string,
59
+ :ipv4_sub_option_cisco,
60
+ :ipv6_option_cisco,
61
+ :ipv6_option_vpn,
62
+ :ipv6_relay,
63
+ :ipv6_src_intf,
64
+ ].each do |prop|
65
+ send("#{prop}=", send("default_#{prop}")) if send prop
66
+ end
67
+ set_args_keys_default
68
+ end
69
+
70
+ ########################################################
71
+ # PROPERTIES #
72
+ ########################################################
73
+
74
+ def ipv4_information_option
75
+ config_get('dhcp_relay_global', 'ipv4_information_option')
76
+ end
77
+
78
+ def ipv4_information_option=(val)
79
+ state = val ? '' : 'no'
80
+ set_args_keys(state: state)
81
+ config_set('dhcp_relay_global', 'ipv4_information_option', @set_args)
82
+ end
83
+
84
+ def default_ipv4_information_option
85
+ config_get_default('dhcp_relay_global', 'ipv4_information_option')
86
+ end
87
+
88
+ def ipv4_information_option_trust
89
+ config_get('dhcp_relay_global', 'ipv4_information_option_trust')
90
+ end
91
+
92
+ def ipv4_information_option_trust=(val)
93
+ state = val ? '' : 'no'
94
+ set_args_keys(state: state)
95
+ config_set('dhcp_relay_global', 'ipv4_information_option_trust',
96
+ @set_args)
97
+ end
98
+
99
+ def default_ipv4_information_option_trust
100
+ config_get_default('dhcp_relay_global', 'ipv4_information_option_trust')
101
+ end
102
+
103
+ def ipv4_information_option_vpn
104
+ config_get('dhcp_relay_global', 'ipv4_information_option_vpn')
105
+ end
106
+
107
+ def ipv4_information_option_vpn=(val)
108
+ state = val ? '' : 'no'
109
+ set_args_keys(state: state)
110
+ config_set('dhcp_relay_global', 'ipv4_information_option_vpn', @set_args)
111
+ end
112
+
113
+ def default_ipv4_information_option_vpn
114
+ config_get_default('dhcp_relay_global', 'ipv4_information_option_vpn')
115
+ end
116
+
117
+ def ipv4_information_trust_all
118
+ config_get('dhcp_relay_global', 'ipv4_information_trust_all')
119
+ end
120
+
121
+ def ipv4_information_trust_all=(val)
122
+ state = val ? '' : 'no'
123
+ set_args_keys(state: state)
124
+ config_set('dhcp_relay_global', 'ipv4_information_trust_all', @set_args)
125
+ end
126
+
127
+ def default_ipv4_information_trust_all
128
+ config_get_default('dhcp_relay_global', 'ipv4_information_trust_all')
129
+ end
130
+
131
+ def ipv4_relay
132
+ config_get('dhcp_relay_global', 'ipv4_relay')
133
+ end
134
+
135
+ def ipv4_relay=(val)
136
+ state = val ? '' : 'no'
137
+ set_args_keys(state: state)
138
+ config_set('dhcp_relay_global', 'ipv4_relay', @set_args)
139
+ end
140
+
141
+ def default_ipv4_relay
142
+ config_get_default('dhcp_relay_global', 'ipv4_relay')
143
+ end
144
+
145
+ def ipv4_smart_relay
146
+ config_get('dhcp_relay_global', 'ipv4_smart_relay')
147
+ end
148
+
149
+ def ipv4_smart_relay=(val)
150
+ state = val ? '' : 'no'
151
+ set_args_keys(state: state)
152
+ config_set('dhcp_relay_global', 'ipv4_smart_relay', @set_args)
153
+ end
154
+
155
+ def default_ipv4_smart_relay
156
+ config_get_default('dhcp_relay_global', 'ipv4_smart_relay')
157
+ end
158
+
159
+ def ipv4_src_addr_hsrp
160
+ config_get('dhcp_relay_global', 'ipv4_src_addr_hsrp')
161
+ end
162
+
163
+ def ipv4_src_addr_hsrp=(val)
164
+ state = val ? '' : 'no'
165
+ set_args_keys(state: state)
166
+ config_set('dhcp_relay_global', 'ipv4_src_addr_hsrp', @set_args)
167
+ end
168
+
169
+ def default_ipv4_src_addr_hsrp
170
+ config_get_default('dhcp_relay_global', 'ipv4_src_addr_hsrp')
171
+ end
172
+
173
+ def ipv4_src_intf
174
+ intf = config_get('dhcp_relay_global', 'ipv4_src_intf')
175
+ # Normalize by downcasing and removing white space
176
+ intf = intf.downcase.delete(' ') if intf
177
+ intf
178
+ end
179
+
180
+ def ipv4_src_intf=(val)
181
+ state = val == default_ipv4_src_intf ? 'no' : ''
182
+ intf = val == default_ipv4_src_intf ? '' : val
183
+ set_args_keys(state: state, intf: intf)
184
+ config_set('dhcp_relay_global', 'ipv4_src_intf', @set_args)
185
+ end
186
+
187
+ def default_ipv4_src_intf
188
+ config_get_default('dhcp_relay_global', 'ipv4_src_intf')
189
+ end
190
+
191
+ def ipv4_sub_option_circuit_id_custom
192
+ config_get('dhcp_relay_global', 'ipv4_sub_option_circuit_id_custom')
193
+ end
194
+
195
+ def ipv4_sub_option_circuit_id_custom=(val)
196
+ state = val ? '' : 'no'
197
+ set_args_keys(state: state)
198
+ config_set('dhcp_relay_global', 'ipv4_sub_option_circuit_id_custom',
199
+ @set_args)
200
+ end
201
+
202
+ def default_ipv4_sub_option_circuit_id_custom
203
+ config_get_default('dhcp_relay_global',
204
+ 'ipv4_sub_option_circuit_id_custom')
205
+ end
206
+
207
+ def ipv4_sub_option_circuit_id_string
208
+ str = config_get('dhcp_relay_global', 'ipv4_sub_option_circuit_id_string')
209
+ # Normalize by removing white space
210
+ str.strip! if str
211
+ str
212
+ end
213
+
214
+ def ipv4_sub_option_circuit_id_string=(val)
215
+ state = val == default_ipv4_sub_option_circuit_id_string ? 'no' : ''
216
+ format = val == default_ipv4_sub_option_circuit_id_string ? '' : 'format'
217
+ word = val == default_ipv4_sub_option_circuit_id_string ? '' : val
218
+ set_args_keys(state: state, format: format, word: word)
219
+ config_set('dhcp_relay_global', 'ipv4_sub_option_circuit_id_string',
220
+ @set_args)
221
+ end
222
+
223
+ def default_ipv4_sub_option_circuit_id_string
224
+ config_get_default('dhcp_relay_global',
225
+ 'ipv4_sub_option_circuit_id_string')
226
+ end
227
+
228
+ def ipv4_sub_option_cisco
229
+ config_get('dhcp_relay_global', 'ipv4_sub_option_cisco')
230
+ end
231
+
232
+ def ipv4_sub_option_cisco=(val)
233
+ state = val ? '' : 'no'
234
+ set_args_keys(state: state)
235
+ config_set('dhcp_relay_global', 'ipv4_sub_option_cisco', @set_args)
236
+ end
237
+
238
+ def default_ipv4_sub_option_cisco
239
+ config_get_default('dhcp_relay_global', 'ipv4_sub_option_cisco')
240
+ end
241
+
242
+ def ipv6_option_cisco
243
+ config_get('dhcp_relay_global', 'ipv6_option_cisco')
244
+ end
245
+
246
+ def ipv6_option_cisco=(val)
247
+ state = val ? '' : 'no'
248
+ set_args_keys(state: state)
249
+ config_set('dhcp_relay_global', 'ipv6_option_cisco', @set_args)
250
+ end
251
+
252
+ def default_ipv6_option_cisco
253
+ config_get_default('dhcp_relay_global', 'ipv6_option_cisco')
254
+ end
255
+
256
+ def ipv6_option_vpn
257
+ config_get('dhcp_relay_global', 'ipv6_option_vpn')
258
+ end
259
+
260
+ def ipv6_option_vpn=(val)
261
+ state = val ? '' : 'no'
262
+ set_args_keys(state: state)
263
+ config_set('dhcp_relay_global', 'ipv6_option_vpn', @set_args)
264
+ end
265
+
266
+ def default_ipv6_option_vpn
267
+ config_get_default('dhcp_relay_global', 'ipv6_option_vpn')
268
+ end
269
+
270
+ def ipv6_relay
271
+ config_get('dhcp_relay_global', 'ipv6_relay')
272
+ end
273
+
274
+ def ipv6_relay=(val)
275
+ state = val ? '' : 'no'
276
+ set_args_keys(state: state)
277
+ config_set('dhcp_relay_global', 'ipv6_relay', @set_args)
278
+ end
279
+
280
+ def default_ipv6_relay
281
+ config_get_default('dhcp_relay_global', 'ipv6_relay')
282
+ end
283
+
284
+ def ipv6_src_intf
285
+ intf = config_get('dhcp_relay_global', 'ipv6_src_intf')
286
+ # Normalize by downcasing and removing white space
287
+ intf = intf.downcase.delete(' ') if intf
288
+ intf
289
+ end
290
+
291
+ def ipv6_src_intf=(val)
292
+ state = val == default_ipv6_src_intf ? 'no' : ''
293
+ intf = val == default_ipv6_src_intf ? '' : val
294
+ set_args_keys(state: state, intf: intf)
295
+ config_set('dhcp_relay_global', 'ipv6_src_intf', @set_args)
296
+ end
297
+
298
+ def default_ipv6_src_intf
299
+ config_get_default('dhcp_relay_global', 'ipv6_src_intf')
300
+ end
301
+ end # class
302
+ end # module