python-fuelclient/fuelclient/cli/actions/user.py

66 lines
2.3 KiB
Python

# Copyright 2014 Mirantis, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from getpass import getpass
from fuelclient.cli.actions.base import Action
import fuelclient.cli.arguments as Args
from fuelclient.cli.error import ArgumentException
from fuelclient.client import DefaultAPIClient
from fuelclient import fuelclient_settings
class UserAction(Action):
"""Change password for user
"""
action_name = "user"
def __init__(self):
super(UserAction, self).__init__()
self.args = (
Args.get_new_password_arg(
"WARNING: This method of changing the "
"password is dangerous - it may be saved in bash history."),
Args.get_change_password_arg(
"Change user password using interactive prompt")
)
self.flag_func_map = (
("change-password", self.change_password),
)
def _get_password_from_prompt(self):
password1 = getpass("Changing password for Fuel User.\nNew Password:")
password2 = getpass("Retype new Password:")
if password1 != password2:
raise ArgumentException("Passwords are not the same.")
return password1
def change_password(self, params):
"""To change user password:
fuel user change-password
"""
if params.newpass:
password = params.newpass
else:
password = self._get_password_from_prompt()
DefaultAPIClient.update_own_password(password)
settings = fuelclient_settings.get_settings()
self.serializer.print_to_output(
None, "\nPassword changed.\nPlease note that configuration "
"is not automatically updated.\nYou may want to update "
"{0}.".format(
settings.user_settings))