code: def assignPrivilege(self, rolename, privilege="ACCESS"):
          
          aURL = self._url + "/roles/assignPrivilege"
          params = {
              "f" : "json",
              "rolename" : rolename,
              "privilege" : privilege
          }
          return self._post(url=aURL,
                               param_dict=params,
                               securityHandler=self._securityHandler,
                               proxy_url=self._proxy_url,
                               proxy_port=self._proxy_port)
docs: Administrative access to ArcGIS Server is modeled as three broad
             tiers of privileges:
                 ADMINISTER - A role that possesses this privilege has
                             unrestricted administrative access to ArcGIS
                            Server.
                 PUBLISH - A role with PUBLISH privilege can only publish GIS
                         services to ArcGIS Server.
                 ACCESS-No administrative access. A role with this privilege
                        can only be granted permission to access one or more
                        GIS services.
             By assigning these privileges to one or more roles in the role
             store, ArcGIS Server's security model supports role-based access
             control to its administrative functionality.
             These privilege assignments are stored independent of ArcGIS
             Server's role store. As a result, you don't need to update your
             enterprise identity stores (like Active Directory).
             Inputs:
                rolename - The name of the role.
                privilege - The capability to assign to the role. The default
                            capability is ACCESS.
                            Values: ADMINISTER | PUBLISH | ACCESS
             Output:
                JSON Message