天天看点

通过nova.utils.execute 执行shell命令

下面这段code 其实是执行rm -rf 这个命令,来删除一个路径下的东西  
      target = libvirt_utils.get_instance_path(instance) + '_resize'

        if os.path.exists(target):
            # Deletion can fail over NFS, so retry the deletion as required.
            # Set maximum attempt as 5, most test can remove the directory
            # for the second time.
            utils.execute('rm', '-rf', target, delay_on_retry=True,
                          attempts=5)
这件这里是通过utils.execute来执行shell 命令
可以看到这里的utils的来自from nova import utils
在nova/utils中可以看到原来也是调用processutils.execute来执行shell脚本
from oslo_concurrency import processutils
def execute(*cmd, **kwargs):
    """Convenience wrapper around oslo's execute() method."""
    if 'run_as_root' in kwargs and kwargs.get('run_as_root'):
        if CONF.use_rootwrap_daemon:
            return RootwrapDaemonHelper(CONF.rootwrap_config).execute(
                *cmd, **kwargs)
        else:
            return RootwrapProcessHelper().execute(*cmd, **kwargs)
    return processutils.execute(*cmd, **kwargs)
           

继续阅读