Simplified users[0] detection, and ensured compatability with previous user password control code

This commit is contained in:
Ben Howard 2012-08-22 16:32:18 -06:00
parent 126b011fe3
commit 78b81eb44d
4 changed files with 24 additions and 24 deletions

View File

@ -50,8 +50,16 @@ def handle(_name, cfg, cloud, log, args):
expire = util.get_cfg_option_bool(chfg, 'expire', expire)
if not plist and password:
user = util.get_cfg_option_str(cfg, "user", "ubuntu")
plist = "%s:%s" % (user, password)
user = cloud.distro.get_default_user()
if 'users' in cfg:
user_zero = cfg['users'].keys()[0]
if user_zero != "default":
user = user_zero
if user:
plist = "%s:%s" % (user, password)
errors = []
if plist:

View File

@ -32,12 +32,13 @@ def handle(name, cfg, cloud, log, args):
if len(args) > 1:
ids = args[1:]
else:
user = None
user = cloud.distro.get_default_user()
try:
user = cloud.distro.get_configured_user()
except NotImplementedError:
pass
if 'users' in cfg:
user_zero = cfg['users'].keys()[0]
if user_zero != "default":
user = user_zero
ids = util.get_cfg_option_list(cfg, "ssh_import_id", [])

View File

@ -78,7 +78,3 @@ def handle(name, cfg, cloud, log, _args):
new_opts[opt.replace('-', '')] = user_config[opt]
cloud.distro.create_user(name, **new_opts)
if user_zero:
cloud.distro.set_configured_user(user_zero)
log.info("Set configured user for this instance to %s" % user_zero)

View File

@ -49,15 +49,12 @@ class Distro(object):
self._paths = paths
self._cfg = cfg
self.name = name
self.default_user = None
@abc.abstractmethod
def add_default_user(self):
raise NotImplementedError()
@abc.abstractmethod
def get_default_user(self):
raise NotImplementedError()
@abc.abstractmethod
def install_packages(self, pkglist):
raise NotImplementedError()
@ -172,11 +169,9 @@ class Distro(object):
def set_configured_user(self, name):
self.default_user = name
def get_configured_user(self):
try:
return getattr(self, 'default_user')
except:
return None
def get_default_user(self):
return None
def create_user(self, name, **kwargs):
"""
@ -241,7 +236,7 @@ class Distro(object):
util.subp(adduser_cmd, logstring=x_adduser_cmd)
except Exception as e:
util.logexc(LOG, "Failed to create user %s due to error.", e)
return False
raise e
# Set password if plain-text password provided
if 'plain_text_passwd' in kwargs and kwargs['plain_text_passwd']:
@ -256,7 +251,7 @@ class Distro(object):
except Exception as e:
util.logexc(LOG, ("Failed to disable password logins for"
"user %s" % name), e)
return False
raise e
# Configure sudo access
if 'sudo' in kwargs:
@ -280,7 +275,7 @@ class Distro(object):
util.subp(cmd, pass_string, logstring="chpasswd for %s" % user)
except Exception as e:
util.logexc(LOG, "Failed to set password for %s" % user)
return False
raise e
return True
@ -306,9 +301,9 @@ class Distro(object):
try:
with open(sudo_file, 'a') as f:
f.write(content)
f.close()
except IOError as e:
util.logexc(LOG, "Failed to write %s" % sudo_file, e)
raise e
def isgroup(self, name):
try: