docs: def handle_set_services(self, req):
          """Handles the POST v2/<account>/.services call for setting services
          information. Can only be called by a reseller .admin.
  
          In the :func:`handle_get_account` (GET v2/<account>) call, a section of
          the returned JSON dict is `services`. This section looks something like
          this::
  
                "services": {"storage": {"default": "local",
                              "local": "http://127.0.0.1:8080/v1/AUTH_018c3946"}}
  
          Making use of this section is described in :func:`handle_get_token`.
  
          This function allows setting values within this section for the
          <account>, allowing the addition of new service end points or updating
          existing ones.
  
          The body of the POST request should contain a JSON dict with the
          following format::
  
              {"service_name": {"end_point_name": "end_point_value"}}
  
          There can be multiple services and multiple end points in the same
          call.
  
          Any new services or end points will be added to the existing set of
          services and end points. Any existing services with the same service
          name will be merged with the new end points. Any existing end points
          with the same end point name will have their values updated.
  
          The updated services dictionary will be returned on success.
  
          :param req: The swob.Request to process.
          :returns: swob.Response, 2xx on success with the udpated services JSON
                    dict as described above
          """
          if not self.is_reseller_admin(req):
              return self.denied_response(req)
          account = req.path_info_pop()
          if req.path_info != '/.services' or not account or account[0] == '.':
              return HTTPBadRequest(request=req)
          try:
              new_services = json.loads(req.body)
          except ValueError as err:
              return HTTPBadRequest(body=str(err))
          # Get the current services information
          path = quote('/v1/%s/%s/.services' % (self.auth_account, account))
          resp = self.make_pre_authed_request(
              req.environ, 'GET', path).get_response(self.app)
          if resp.status_int == 404:
              return HTTPNotFound(request=req)
          if resp.status_int // 100 != 2:
              raise Exception('Could not obtain services info: %s %s' %
                              (path, resp.status))
          services = json.loads(resp.body)
          for new_service, value in new_services.iteritems():
              if new_service in services:
                  services[new_service].update(value)
              else:
                  services[new_service] = value
          # Save the new services information
          services = json.dumps(services)
          resp = self.make_pre_authed_request(
              req.environ, 'PUT', path, services).get_response(self.app)
          if resp.status_int // 100 != 2:
              raise Exception('Could not save .services object: %s %s' %
                              (path, resp.status))
          return Response(request=req, body=services,
                          content_type=CONTENT_TYPE_JSON)