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…