@@ -81,8 +81,7 @@ def _parse_permission_rules(self, perms):
8181 rule_group ["resourceNames" ] = [parts [1 ].strip ()]
8282 else :
8383 rule_group ["resources" ] = [resource ]
84- if rule_group :
85- rule_list .append (rule_group )
84+ rule_list .append (rule_group )
8685 return rule_list , resources
8786
8887 def _read_perm_configmap_resources (self , sa , namespace , kubeconfig ):
@@ -651,14 +650,13 @@ def _apply_provider_rbac(self, sa, namespace, kubeconfig):
651650 def _update_rbac (self , permissionfile , sa , namespace , kubeconfig ):
652651 """Add permissions from JSON/YAML file to provider (update command)."""
653652 perms = self ._load_permission_data (permissionfile )
654- # Keep old update parser path inline as source of truth.
655- old_rule_list = []
656- old_resources = []
653+ rule_list = []
654+ new_resources = []
657655 for api_group , res_actions in perms .items ():
658656 for res in res_actions :
659657 for resource , verbs in res .items ():
660- if resource not in old_resources :
661- old_resources .append (resource .strip ())
658+ if resource not in new_resources :
659+ new_resources .append (resource .strip ())
662660 rule_group = {}
663661 if api_group == "non-apigroup" :
664662 if "nonResourceURL" in resource :
@@ -675,13 +673,7 @@ def _update_rbac(self, permissionfile, sa, namespace, kubeconfig):
675673 rule_group ["resourceNames" ] = [parts [1 ].strip ()]
676674 else :
677675 rule_group ["resources" ] = [resource ]
678- old_rule_list .append (rule_group )
679- new_rule_list , new_resources = self ._parse_permission_rules (perms )
680- if os .getenv ("KUBEPLUS_UPDATE_EQ_CHECK" , "0" ) == "1" :
681- self ._assert_rule_parity ("update-parser" , old_rule_list , new_rule_list )
682- self ._assert_all_resources_parity ("update-parser" , old_resources , new_resources )
683- rule_list = old_rule_list
684- new_resources = old_resources
676+ rule_list .append (rule_group )
685677
686678 role = {
687679 "apiVersion" : "rbac.authorization.k8s.io/v1" ,
@@ -712,21 +704,22 @@ def _revoke_rbac(self, permissionfile, sa, namespace, kubeconfig):
712704
713705 role_name = sa + "-update"
714706 out , _ = run_command ("kubectl get clusterrole " + role_name + " -o json" + kubeconfig )
715- if out :
716- role_obj = json .loads (out )
717- existing_rules = role_obj .get ("rules" , [])
718- remaining_rules = []
719- for rule in existing_rules :
720- norm = self ._normalize_rule (rule )
721- norm_key = tuple (sorted (norm .items ()))
722- if norm_key not in revoke_norm :
723- remaining_rules .append (rule )
724- if remaining_rules :
725- role_obj ["rules" ] = remaining_rules
726- create_role_rolebinding (role_obj , sa + "-update-role.yaml" , kubeconfig )
727- else :
728- run_command ("kubectl delete clusterrole " + role_name + kubeconfig )
729- run_command ("kubectl delete clusterrolebinding " + role_name + kubeconfig )
707+ if not out :
708+ return
709+ role_obj = json .loads (out )
710+ existing_rules = role_obj .get ("rules" , [])
711+ remaining_rules = []
712+ for rule in existing_rules :
713+ norm = self ._normalize_rule (rule )
714+ norm_key = tuple (sorted (norm .items ()))
715+ if norm_key not in revoke_norm :
716+ remaining_rules .append (rule )
717+ if remaining_rules :
718+ role_obj ["rules" ] = remaining_rules
719+ create_role_rolebinding (role_obj , sa + "-update-role.yaml" , kubeconfig )
720+ else :
721+ run_command ("kubectl delete clusterrole " + role_name + kubeconfig )
722+ run_command ("kubectl delete clusterrolebinding " + role_name + kubeconfig )
730723
731724 current_resources = self ._read_perm_configmap_resources (sa , namespace , kubeconfig )
732725 remaining_resources = [res for res in current_resources if res not in set (revoke_resources )]
0 commit comments