我编写了一个简单的菜单系统,用于动态创建Anaconda在基于Linux的应用程序框架的部署期间将利用的kickstart脚本。工具:Python 2.7.14,npyscreen,jinja2
我在开发过程中使用了Vagrant进行快速测试。我所有的测试用例都通过测试,菜单退出就可以了。
当我将菜单添加到* .sh文件中以构建自定义ISO时,它会很好地显示菜单系统。我能够按预期使用它。输入完数据后,我在主屏幕上单击“确定”,这应该清除菜单,生成数据并继续进行部署。
单击“确定”时,菜单不会清除屏幕。但是,部署确实会在后台继续进行。切换到第一条VTY行(ctrl + alt + F1),向我显示预期的输出。
我不确定哪方面可以解决。与第一行相比,似乎正在使用新的VTY行,因此用户无需按ctrl + alt + F1即可更改VTY行。
<*.sh || OMITTED CONFIG>
mkdir -p $ISOLINUXDIR/EXTRAS/kickstart-menu
cp -r ../kickstart-menu/{classes.py,jinja2,kickstart.py,kickstarts,markupsafe,menu.py,npyscreen} $ISOLINUXDIR/EXTRAS/kickstart-menu
cp -r ../kickstart-menu/kickstarts/* $ISOLINUXDIR/ks
</OMITTED CONFIG>
然后...
# Some code omitted
class MainForm(npyscreen.ActionFormMinimal):
# Home Screen
def create(self):
self.name = "MyApp!"
self.add(MainMenuWidget)
def on_ok(self):
self.editing = False
self.parentApp.setNextForm(None)
def exit_application(self):
self.editing = False
self.parentApp.setNextForm(None)
if __name__ == '__main__':
try:
KICKSTART_MENU = menuSystem()
KICKSTART_MENU.run()
ksCreator(KICKSTART_MENU)
sys.exit(0)
except KeyboardInterrupt:
logData(KICKSTART_MENU)
sys.exit(0)