def commit(self, uci):
"""
Commint uci package to openwrt.
"""
buffer = StringIO()
buffer.write('uci import {package} <<UCI\n'.format(
package=uci.package
))
uci.dump(buffer)
buffer.write('\nUCI\n')
# command = buffer.getvalue()
with settings(shell=self.WRT_SHELL, abort_exception=UCIError):
buffer.seek(0)
chunk = buffer.read(WRITE_CHUNK_SIZE)
if len(chunk) < WRITE_CHUNK_SIZE:
j.sal.process.execute(chunk)
return
# Write chunks into file
tmp = os.tempnam()
try:
j.sal.process.execute(
'echo -n > {tmp} "{chunk}"'.format(
tmp=tmp,
chunk=chunk
)
)
while True:
chunk = buffer.read(WRITE_CHUNK_SIZE)
if not chunk:
break
j.sal.process.execute(
'echo -n >> {tmp} "{chunk}"'.format(
tmp=tmp,
chunk=chunk
)
)
j.sal.process.execute('chmod +x %s' % tmp)
j.sal.process.execute(tmp)
finally:
j.sal.process.execute('rm -f %s')
评论列表
文章目录