code: async def grant(self, username, acl='login'):
          
          controller_facade = client.ControllerFacade.from_connection(
              self.connection())
          user = tag.user(username)
          changes = client.ModifyControllerAccess(acl, 'grant', user)
          try:
              await controller_facade.ModifyControllerAccess([changes])
              return True
          except errors.JujuError as e:
              if 'user already has' in str(e):
                  return False
              else:
                  raise
docs: Grant access level of the given user on the controller.
          Note that if the user already has higher permissions than the
          provided ACL, this will do nothing (see revoke for a way to
          remove permissions).
          :param str username: Username
          :param str acl: Access control ('login', 'add-model' or 'superuser')
          :returns: True if new access was granted, False if user already had
              requested access or greater.  Raises JujuError if failed.