1

假设有个开头

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函数已经具备判断并选择自定义密码的能力,于是只要传入一个adminPassserver_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...


鲈鱼浪游者
3 声望0 粉丝

thereisnospoon