docs: def handle_put_account(self, req):
          """Handles the PUT v2/<account> call for adding an account to the auth
          system. Can only be called by a .reseller_admin.
  
          By default, a newly created UUID4 will be used with the reseller prefix
          as the account id used when creating corresponding service accounts.
          However, you can provide an X-Account-Suffix header to replace the
          UUID4 part.
  
          :param req: The swob.Request to process.
          :returns: swob.Response, 2xx on success.
          """
          if not self.is_reseller_admin(req):
              return self.denied_response(req)
          account = req.path_info_pop()
          if req.path_info or not account or account[0] == '.':
              return HTTPBadRequest(request=req)
  
          account_suffix = req.headers.get('x-account-suffix')
          if not account_suffix:
              account_suffix = str(uuid4())
          # Create the new account in the Swift cluster
          path = quote('%s/%s%s' % (self.dsc_parsed2.path,
                                    self.reseller_prefix, account_suffix))
          try:
              conn = self.get_conn()
              conn.request('PUT', path,
                          headers={'X-Auth-Token': self.get_itoken(req.environ),
                                   'Content-Length': '0'})
              resp = conn.getresponse()
              resp.read()
              if resp.status // 100 != 2:
                  raise Exception('Could not create account on the Swift '
                      'cluster: %s %s %s' % (path, resp.status, resp.reason))
          except (Exception, TimeoutError):
              self.logger.error(_('ERROR: Exception while trying to communicate '
                  'with %(scheme)s://%(host)s:%(port)s/%(path)s'),
                  {'scheme': self.dsc_parsed2.scheme,
                   'host': self.dsc_parsed2.hostname,
                   'port': self.dsc_parsed2.port, 'path': path})
              raise
          # Ensure the container in the main auth account exists (this
          # container represents the new account)
          path = quote('/v1/%s/%s' % (self.auth_account, account))
          resp = self.make_pre_authed_request(
              req.environ, 'HEAD', path).get_response(self.app)
          if resp.status_int == 404:
              resp = self.make_pre_authed_request(
                  req.environ, 'PUT', path).get_response(self.app)
              if resp.status_int // 100 != 2:
                  raise Exception('Could not create account within main auth '
                      'account: %s %s' % (path, resp.status))
          elif resp.status_int // 100 == 2:
              if 'x-container-meta-account-id' in resp.headers:
                  # Account was already created
                  return HTTPAccepted(request=req)
          else:
              raise Exception('Could not verify account within main auth '
                  'account: %s %s' % (path, resp.status))
          # Record the mapping from account id back to account name
          path = quote('/v1/%s/.account_id/%s%s' %
                       (self.auth_account, self.reseller_prefix, account_suffix))
          resp = self.make_pre_authed_request(
              req.environ, 'PUT', path, account).get_response(self.app)
          if resp.status_int // 100 != 2:
              raise Exception('Could not create account id mapping: %s %s' %
                              (path, resp.status))
          # Record the cluster url(s) for the account
          path = quote('/v1/%s/%s/.services' % (self.auth_account, account))
          services = {'storage': {}}
          services['storage'][self.dsc_name] = '%s/%s%s' % (self.dsc_url,
              self.reseller_prefix, account_suffix)
          services['storage']['default'] = self.dsc_name
          resp = self.make_pre_authed_request(
              req.environ, 'PUT', path,
              json.dumps(services)).get_response(self.app)
          if resp.status_int // 100 != 2:
              raise Exception('Could not create .services object: %s %s' %
                              (path, resp.status))
          # Record the mapping from account name to the account id
          path = quote('/v1/%s/%s' % (self.auth_account, account))
          resp = self.make_pre_authed_request(
              req.environ, 'POST', path,
              headers={'X-Container-Meta-Account-Id': '%s%s' % (
                  self.reseller_prefix, account_suffix)}).get_response(self.app)
          if resp.status_int // 100 != 2:
              raise Exception('Could not record the account id on the account: '
                              '%s %s' % (path, resp.status))
          return HTTPCreated(request=req)