def METHOD_NAME(self, nodename, thr=None, **kwargs):
    options = self.parse_options(kwargs)
    name, namespace, kind = split_path(options.path)
    if options.action in GUEST_ACTIONS:
        role = "guest"
    elif options.action in OPERATOR_ACTIONS:
        role = "operator"
    elif options.action in ADMIN_ACTIONS:
        role = "admin"
    else:
        role = "root"
    if options.action == "set":
        # load current config
        try:
            cf = shared.SERVICES[options.path].print_config_data()
        except Exception:
            cf = {}
        # purge unwanted sections
        try:
            del cf["metadata"]
        except Exception:
            pass
        # merge changes in current config
        for buff in options.options.get("kw", []):
            k, v = buff.split("=", 1)
            if k[-1] in ("+", "-"):
                k = k[:-1]
            k = k.strip()
            try:
                s, k = k.split(".", 1)
            except Exception:
                s = "DEFAULT"
            if s not in cf:
                cf[s] = {}
            cf[s][k] = v
        # apply object create rbac to the amended config
        payload = {options.path: cf}
        errors = self.rbac_create_data(payload=payload, thr=thr, **kwargs)
        if errors:
            raise ex.HTTP(403, errors)
    else:
        thr.rbac_requires(roles=[role], namespaces=[namespace], **kwargs)
    if options.cmd:
        # compat, requires root
        kwargs["roles"] = ["root"]
        thr.rbac_requires(**kwargs)