Skip to content

Commit 2bce9ce

Browse files
Make configlet application script idempotent for updates. (sonic-net#728)
* Make script idempotent, for updates. Delete of non-existing table/keys is a no-op, hence can be ignored. * Name change
1 parent 4740617 commit 2bce9ce

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

scripts/configlet

+18-5
Original file line numberDiff line numberDiff line change
@@ -100,14 +100,27 @@ def init():
100100

101101
def db_update(t, k, lst):
102102
init()
103-
db.mod_entry(t, k, lst)
103+
to_upd = False
104+
data = db.get_entry(t, k)
105+
for i in lst.keys():
106+
if not data.has_key(i) or data[i] != lst[i]:
107+
to_upd = True
108+
break
104109

105-
def db_filtered_upd(t, k, lst):
110+
if to_upd:
111+
db.mod_entry(t, k, lst)
112+
113+
def db_delete_fields(t, k, lst):
106114
init()
115+
to_set = False
107116
data = db.get_entry(t, k)
108117
for i in lst.keys():
109-
data.pop(i)
110-
db.set_entry(t, k, data)
118+
if data.has_key(i):
119+
data.pop(i)
120+
to_set = True
121+
122+
if to_set:
123+
db.set_entry(t, k, data)
111124

112125

113126
def db_delete_deep(t, k):
@@ -119,7 +132,7 @@ def db_delete_deep(t, k):
119132
def db_delete(t, k, lst):
120133
init()
121134
if lst:
122-
db_filtered_upd(t, k, lst)
135+
db_delete_fields(t, k, lst)
123136
else:
124137
db_delete_deep(t, k)
125138

0 commit comments

Comments
 (0)