Skip to content

Commit c1206aa

Browse files
authored
ConfigDB Updates with YANG Validation: Include potential for YANG validation even when adhoc validation is used (sonic-net#2412)
1 parent 57c509a commit c1206aa

File tree

2 files changed

+9
-24
lines changed

2 files changed

+9
-24
lines changed

config/main.py

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2060,15 +2060,13 @@ def add_portchannel(ctx, portchannel_name, min_links, fallback, fast_rate):
20602060
if fallback != 'false':
20612061
fvs['fallback'] = 'true'
20622062

2063+
db = ValidatedConfigDBConnector(ctx.obj['db'])
20632064
if ADHOC_VALIDATION:
2064-
db = ctx.obj['db']
20652065
if is_portchannel_name_valid(portchannel_name) != True:
20662066
ctx.fail("{} is invalid!, name should have prefix '{}' and suffix '{}'"
20672067
.format(portchannel_name, CFG_PORTCHANNEL_PREFIX, CFG_PORTCHANNEL_NO))
20682068
if is_portchannel_present_in_db(db, portchannel_name):
20692069
ctx.fail("{} already exists!".format(portchannel_name)) # TODO: MISSING CONSTRAINT IN YANG MODEL
2070-
else:
2071-
db = ValidatedConfigDBConnector(ctx.obj['db'])
20722070

20732071
try:
20742072
db.set_entry('PORTCHANNEL', portchannel_name, fvs)
@@ -2081,8 +2079,8 @@ def add_portchannel(ctx, portchannel_name, min_links, fallback, fast_rate):
20812079
def remove_portchannel(ctx, portchannel_name):
20822080
"""Remove port channel"""
20832081

2082+
db = ValidatedConfigDBConnector(ctx.obj['db'])
20842083
if ADHOC_VALIDATION:
2085-
db = ctx.obj['db']
20862084
if is_portchannel_name_valid(portchannel_name) != True:
20872085
ctx.fail("{} is invalid!, name should have prefix '{}' and suffix '{}'"
20882086
.format(portchannel_name, CFG_PORTCHANNEL_PREFIX, CFG_PORTCHANNEL_NO))
@@ -2098,8 +2096,6 @@ def remove_portchannel(ctx, portchannel_name):
20982096

20992097
if len([(k, v) for k, v in db.get_table('PORTCHANNEL_MEMBER') if k == portchannel_name]) != 0: # TODO: MISSING CONSTRAINT IN YANG MODEL
21002098
ctx.fail("Error: Portchannel {} contains members. Remove members before deleting Portchannel!".format(portchannel_name))
2101-
else:
2102-
db = ValidatedConfigDBConnector(ctx.obj['db'])
21032099

21042100
try:
21052101
db.set_entry('PORTCHANNEL', portchannel_name, None)
@@ -6177,17 +6173,15 @@ def loopback(ctx, redis_unix_socket_path):
61776173
@click.argument('loopback_name', metavar='<loopback_name>', required=True)
61786174
@click.pass_context
61796175
def add_loopback(ctx, loopback_name):
6176+
config_db = ValidatedConfigDBConnector(ctx.obj['db'])
61806177
if ADHOC_VALIDATION:
6181-
config_db = ctx.obj['db']
61826178
if is_loopback_name_valid(loopback_name) is False:
61836179
ctx.fail("{} is invalid, name should have prefix '{}' and suffix '{}' "
61846180
.format(loopback_name, CFG_LOOPBACK_PREFIX, CFG_LOOPBACK_NO))
61856181

61866182
lo_intfs = [k for k, v in config_db.get_table('LOOPBACK_INTERFACE').items() if type(k) != tuple]
61876183
if loopback_name in lo_intfs:
61886184
ctx.fail("{} already exists".format(loopback_name)) # TODO: MISSING CONSTRAINT IN YANG VALIDATION
6189-
else:
6190-
config_db = ValidatedConfigDBConnector(ctx.obj['db'])
61916185

61926186
try:
61936187
config_db.set_entry('LOOPBACK_INTERFACE', loopback_name, {"NULL" : "NULL"})
@@ -6198,7 +6192,7 @@ def add_loopback(ctx, loopback_name):
61986192
@click.argument('loopback_name', metavar='<loopback_name>', required=True)
61996193
@click.pass_context
62006194
def del_loopback(ctx, loopback_name):
6201-
config_db = ctx.obj['db']
6195+
config_db = ValidatedConfigDBConnector(ctx.obj['db'])
62026196
lo_config_db = config_db.get_table('LOOPBACK_INTERFACE')
62036197

62046198
if ADHOC_VALIDATION:
@@ -6208,8 +6202,6 @@ def del_loopback(ctx, loopback_name):
62086202
lo_intfs = [k for k, v in lo_config_db.items() if type(k) != tuple]
62096203
if loopback_name not in lo_intfs:
62106204
ctx.fail("{} does not exist".format(loopback_name))
6211-
else:
6212-
config_db = ValidatedConfigDBConnector(ctx.obj['db'])
62136205

62146206
ips = [ k[1] for k in lo_config_db if type(k) == tuple and k[0] == loopback_name ]
62156207
for ip in ips:

config/vlan.py

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ def add_vlan(db, vid):
2525
ctx = click.get_current_context()
2626
vlan = 'Vlan{}'.format(vid)
2727

28+
config_db = ValidatedConfigDBConnector(db.cfgdb)
2829
if ADHOC_VALIDATION:
29-
config_db = db.cfgdb
3030
if not clicommon.is_vlanid_in_range(vid):
3131
ctx.fail("Invalid VLAN ID {} (1-4094)".format(vid))
3232

@@ -35,8 +35,6 @@ def add_vlan(db, vid):
3535

3636
if clicommon.check_if_vlanid_exist(db.cfgdb, vlan): # TODO: MISSING CONSTRAINT IN YANG MODEL
3737
ctx.fail("{} already exists".format(vlan))
38-
else:
39-
config_db = ValidatedConfigDBConnector(db.cfgdb)
4038

4139
try:
4240
config_db.set_entry('VLAN', vlan, {'vlanid': str(vid)})
@@ -54,8 +52,8 @@ def del_vlan(db, vid):
5452
ctx = click.get_current_context()
5553
vlan = 'Vlan{}'.format(vid)
5654

55+
config_db = ValidatedConfigDBConnector(db.cfgdb)
5756
if ADHOC_VALIDATION:
58-
config_db = db.cfgdb
5957
if not clicommon.is_vlanid_in_range(vid):
6058
ctx.fail("Invalid VLAN ID {} (1-4094)".format(vid))
6159

@@ -72,12 +70,11 @@ def del_vlan(db, vid):
7270

7371
if keys: # TODO: MISSING CONSTRAINT IN YANG MODEL
7472
ctx.fail("VLAN ID {} can not be removed. First remove all members assigned to this VLAN.".format(vid))
73+
7574
vxlan_table = db.cfgdb.get_table('VXLAN_TUNNEL_MAP')
7675
for vxmap_key, vxmap_data in vxlan_table.items():
7776
if vxmap_data['vlan'] == 'Vlan{}'.format(vid):
7877
ctx.fail("vlan: {} can not be removed. First remove vxlan mapping '{}' assigned to VLAN".format(vid, '|'.join(vxmap_key)) )
79-
else:
80-
config_db = ValidatedConfigDBConnector(db.cfgdb)
8178

8279
try:
8380
config_db.set_entry('VLAN', 'Vlan{}'.format(vid), None)
@@ -141,8 +138,8 @@ def add_vlan_member(db, vid, port, untagged):
141138

142139
vlan = 'Vlan{}'.format(vid)
143140

141+
config_db = ValidatedConfigDBConnector(db.cfgdb)
144142
if ADHOC_VALIDATION:
145-
config_db = db.cfgdb
146143
if not clicommon.is_vlanid_in_range(vid):
147144
ctx.fail("Invalid VLAN ID {} (1-4094)".format(vid))
148145

@@ -180,8 +177,6 @@ def add_vlan_member(db, vid, port, untagged):
180177

181178
if (clicommon.interface_is_untagged_member(db.cfgdb, port) and untagged): # TODO: MISSING CONSTRAINT IN YANG MODEL
182179
ctx.fail("{} is already untagged member!".format(port))
183-
else:
184-
config_db = ValidatedConfigDBConnector(db.cfgdb)
185180

186181
try:
187182
config_db.set_entry('VLAN_MEMBER', (vlan, port), {'tagging_mode': "untagged" if untagged else "tagged" })
@@ -199,8 +194,8 @@ def del_vlan_member(db, vid, port):
199194
log.log_info("'vlan member del {} {}' executing...".format(vid, port))
200195
vlan = 'Vlan{}'.format(vid)
201196

197+
config_db = ValidatedConfigDBConnector(db.cfgdb)
202198
if ADHOC_VALIDATION:
203-
config_db = db.cfgdb
204199
if not clicommon.is_vlanid_in_range(vid):
205200
ctx.fail("Invalid VLAN ID {} (1-4094)".format(vid))
206201

@@ -216,8 +211,6 @@ def del_vlan_member(db, vid, port):
216211

217212
if not clicommon.is_port_vlan_member(db.cfgdb, port, vlan): # TODO: MISSING CONSTRAINT IN YANG MODEL
218213
ctx.fail("{} is not a member of {}".format(port, vlan))
219-
else:
220-
config_db = ValidatedConfigDBConnector(db.cfgdb)
221214

222215
try:
223216
config_db.set_entry('VLAN_MEMBER', (vlan, port), None)

0 commit comments

Comments
 (0)