code: def create(self, name, **params):
          
          if not isinstance(name, six.string_types):
              raise ValueError("Invalid role name: %s" % str(name))
          name = name.lower()
          self.post(name=name, **params)
          # splunkd doesn't return the user in the POST response body,
          # so we have to make a second round trip to fetch it.
          response = self.get(name)
          entry = _load_atom(response, XNAME_ENTRY).entry
          state = _parse_atom_entry(entry)
          entity = self.item(
              self.service,
              urllib.parse.unquote(state.links.alternate),
              state=state)
          return entity
docs: Creates a new role.
  
          This function makes two roundtrips to the server, plus at most
          two more if
          the ``autologin`` field of :func:`connect` is set to ``True``.
  
          :param name: Name for the role.
          :type name: ``string``
          :param params: Additional arguments (optional). For a list of available
              parameters, see `Roles parameters
              <http://dev.splunk.com/view/SP-CAAAEJ6#rolesparams>`_
              on Splunk Developer Portal.
          :type params: ``dict``
  
          :return: The new role.
          :rtype: :class:`Role`
  
          **Example**::
  
              import splunklib.client as client
              c = client.connect(...)
              roles = c.roles
              paltry = roles.create("paltry", imported_roles="user", defaultApp="search")