假设有个开头
nova.api.openstack.compute.servers.py
中的create()
函数写道虚拟机的adminPass
来自一个名为password
的变量。而这个变量是通过_get_server_admin_password
函数产生的。
假设有个过程
看一下create
函数:
password = self._get_server_admin_password(server_dict)
再看一下_get_server_admin_password
函数:
def _get_server_admin_password(self, server):
"""Determine the admin password for a server on creation."""
try:
password = server['adminPass']
self._validate_admin_password(password)
except KeyError:
password = utils.generate_password()
except ValueError:
raise exc.HTTPBadRequest(explanation=_("Invalid adminPass"))
return password
由此可见,_get_server_admin_password
函数已经具备判断并选择自定义密码的能力,于是只要传入一个adminPass
到server_dict
里即可。
于是对create
函数进行修改,修改后的样子:
meta_dict = body['server'].get('metadata', None)
if meta_dict:
if meta_dict.get('password', None):
server_dict['adminPass'] = meta_dict['password']
del server_dict['metadata']
password = self._get_server_admin_password(server_dict)
调用方法
nova boot ******* --meta password=mypass *****
另一个地址:
http://pages.turtleend.info/2015/03/17/openstack-use-custom-password-f…