in google_guest_agent/windows_accounts.go [120:148]
func createOrResetPwd(ctx context.Context, k metadata.WindowsKey) (*credsJSON, error) {
pwd, err := newPwd(k.PasswordLength)
if err != nil {
return nil, fmt.Errorf("error creating password: %v", err)
}
if _, err := userExists(k.UserName); err == nil {
logger.Infof("Resetting password for user %s", k.UserName)
if err := resetPwd(k.UserName, pwd); err != nil {
return nil, fmt.Errorf("error running resetPwd: %v", err)
}
if k.AddToAdministrators != nil && *k.AddToAdministrators {
if err := addUserToGroup(ctx, k.UserName, "Administrators"); err != nil {
return nil, fmt.Errorf("error running addUserToGroup: %v", err)
}
}
} else {
logger.Infof("Creating user %s", k.UserName)
if err := createUser(ctx, k.UserName, pwd, ""); err != nil {
return nil, fmt.Errorf("error running createUser: %v", err)
}
if k.AddToAdministrators == nil || *k.AddToAdministrators {
if err := addUserToGroup(ctx, k.UserName, "Administrators"); err != nil {
return nil, fmt.Errorf("error running addUserToGroup: %v", err)
}
}
}
return createcredsJSON(k, pwd)
}