当前位置: 主页 > 科技 >

OpenStack Ussuri只支持Python3,你该怎么办?

时间:2020-05-29来源:互联网 作者:编辑 点击:
原标题:OpenStackUssuri只支持Python3,你该怎么办? 在Ussuri的发布周期中,OpenStack放弃了对Python2的所有支持。所有的项目都已经完成了CI作业的更新,使它们能在Python3下工作。这一成果使

原标题:OpenStackUssuri只支持Python3,你该怎么办?

在Ussuri的发布周期中,OpenStack放弃了对Python2的所有支持。所有的项目都已经完成了CI作业的更新,使它们能在Python3下工作。这一成果使软件能够删除所有Python2测试以及随之进行的配置。

Python2->Python3

Python2.0于2000年正式发布,OpenStack于2010年成立,此后一直使用Python2.0作为基础语言。Python基金会意识到,为了防止用户不得不以落后或困难的方式执行任务,需要对软件进行大的改进。

“我们在2000年发布了Python2.0。几年后,我们意识到需要做出重大改变来改进Python。所以在2006年,我们启动了Python3.0。很多人没有升级,我们也不想伤害他们。因此,多年来,我们一直在改进和发布Python2和Python3。”

2015年,Python基金会在多个平台上非常明确地宣布,将迁移到Python3并停止使用Python2。最后期限是2020年。

OpenStack启动对Python3的支持

很明显,OpenStack也不能支持Python2太久了。因为不可能修复Python2上的安全漏洞,OpenStack最好完全放弃,转而专注于Python3。

OpenStack对Python3的支持始于2013年,许多开发人员做出了贡献。在社区付出了这么多努力之后,在Stein发布周期(2018年9月)中,社区达成共识要在Python3下运行OpenStack。这意味着许多开发人员的大量艰苦工作。

OpenStackTrain(2019年10月):默认Python3

在OpenStackTrain发行版(2019年10月)中,OpenStack默认在Python3上测试。这意味着你可以满怀信心地将云升级到Python3环境。OpenStackTrain发布时支持经过测试的Python3,但仍然支持Python2.7。同时,继续测试最新的Python3版本,OpenStack技术委员会(TC)开始为每个发布周期定义测试运行时。OpenStack将在即将开始的下一个发布周期中瞄准Python3.8。

OpenStackUssuri(2020年5月):仅支持Python3,放弃Python2

在Ussuri发布周期中,OpenStack放弃了对Python2的所有支持。所有的项目都已经完成了CI作业的更新,使它们能够在Python3下工作。这一成果使软件能够删除所有的Python2测试以及随之而来的配置。

在Ussuri发布周期中,我们首先开始计划放弃对Python2.7的支持。当许多项目相互依赖并集成CI/CD时,删除Python2.7并不是一件容易的事情。例如,如果Nova放弃了对Python2.7的支持,只支持Python3,它就会打破Cinder和许多其他项目的CI/CD。我们准备了一个时间表,并将工作分为三个阶段,首先放弃服务的支持,然后放弃库或测试工具。

第一阶段:Ussuri开始->Ussuri-1里程碑:要启动的OpenStack服务放弃py2.7支持。第二阶段:里程碑1->里程碑2:通用库和测试工具

第三阶段:里程碑2:最终审计。

尽管如此,在最初的工作中还是有一些东西搞砸了。因此,我们默认DevStackasPython3,这确实有帮助。在第二阶段,当我们开始将Tempest和其他测试工具变成仅支持Python3时,很多原本稳定的分支测试开始崩溃。这是显而易见的,因为Tempest和许多其他测试工具都是无分支的,这意味着master版本将用于测试OpenStack的当前版本和旧版本。所以所有的Python2.7测试工作都在使用Tempestmaster版本。最后,在py3env上安装的Tempest进行capping和fixing,使所有稳定的分支和master测试通过。

就在Ussuri发布的前几周,我们完成了这项工作,让OpenStack只支持Python3,并更新了wiki页面。Swift和Storlet这两个项目将继续支持Python2.7一到两个周期。

“OpenStack仅支持Python3”对用户/升级意味着什么?

如果你现在的云位于Python3env上,那么根本不需要担心。如果它在Python2.7上,并且你正在升级到Ussuri,那么你需要检查env是否有Python3.6或更高版本可用。从Ussuri版本开始,OpenStack将只在Python3.6或更高版本上工作。例如,如果你想安装NovaUssuri版本,那么如果Python3.6或更高版本不可用,它将报错。这是通过安装配置文件中的元数据(“pythonrequires=>=3.6”)完成的。以下是Ussuri版本中安装配置文件的截图:

python-requires=>=3.6

classifier=

Environment::OpenStack

IntendedAudience::InformationTechnology

IntendedAudience::SystemAdministrators

License::OSIApproved::ApacheSoftwareLicense

OperatingSystem::POSIX::Linux

ProgrammingLanguage::Python

ProgrammingLanguage::Python::3

ProgrammingLanguage::Python::3.6

ProgrammingLanguage::Python::3.7

ProgrammingLanguage::Python::3::Only

ProgrammingLanguage::Python::Implementation::CPython

如果你使用的发行版没有Python3.6或更高版本,则需要先升级。在Python2.7上没有解决方法或任何兼容的方法来继续运行OpenStack。唯一的方法就是升级Python版本。下面的FAQ部分将介绍一些关于Python升级的问题。

FAQ

Q:Python2到Python3的升级是否在上游CI/CD中测试过?

A:不是直接的,但正在间接地测试。我们没有进行py2setup到py3setup的上游升级测试。然而,以前的OpenStack版本,如Stein和Train,都在这两个python版本上进行了测试。如果你要将OpenStack从Stein或Train升级到Ussuri,那么应该没有任何问题。

Q:从Ussuri到旧稳定分支的backport变化将如何与Python2.7兼容?

A:我们仍然运行Python2.7作业,直到进行稳定的Train测试,这样来自Ussuri或更高版本(仅在Python3上测试)的任何backport都将在Train或更早的稳定分支上进行,同时也在Python2.7上测试。如果Python2.7上有任何中断,将在backport之前修复。这样我们就可以使Python2.7支持所有的稳定分支。

Q:像Tempest这样的无分支测试框架(使用master版本进行旧版本的测试)是否也能在Python2.7中继续工作?

答:不能。我们已经发布了最新的兼容版本Python2.7,用于Tempest和其他无分支的交付。无分支意味着工具master版本正被用来测试当前或较旧的OpenStack版本。例如,Tempest23.0.0可以用作Python2.7支持的版本,Tempest24.0.0或master只能用作Python3的。但是有一种方法可以继续测试旧的Python2.7版本(直到你升级云并希望Tempestmaster测试云)。你可以在Python3节点或虚拟env上运行Tempest,并继续使用主版本测试Python2.7云。只要API可以从单独的测试节点访问,或者虚拟envTempest正在运行,Tempest不需要与其他OpenStack服务安装在同一个系统上。

https://superuser.openstack.org/articles/openstack-ussuri-is-python3-only-upgrade-impact/

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
文章导航
推荐内容