code: def sign_request(self, url, method, body, headers):
          
          # The use of PLAINTEXT here was copied from MAAS, but we should switch
          # to HMAC once it works server-side.
          client = oauth1.Client(
              self.consumer_key, self.consumer_secret, self.token_key,
              self.token_secret, signature_method=oauth1.SIGNATURE_PLAINTEXT,
              realm=self.realm)
          # To preserve API backward compatibility convert an empty string body
          # to `None`. The old "oauth" library would treat the empty string as
          # "no body", but "oauthlib" requires `None`.
          body = None if body is None or len(body) == 0 else body
          uri, signed_headers, body = client.sign(url, method, body, headers)
          headers.update(signed_headers)
docs: Sign a request.
  
          :param url: The URL to which the request is to be sent.
          :param headers: The headers in the request. These will be updated with
              the signature.