1010 PermissionQuayOrgTeamV1 ,
1111 UserV1 ,
1212)
13- from reconcile .quay_base import (
14- QuayApiStore ,
15- get_quay_api_for_org ,
16- get_quay_api_store ,
17- )
13+ from reconcile .quay_base import QuayApiStore
1814from reconcile .status import ExitCodes
1915from reconcile .utils import (
2016 expiration ,
@@ -66,30 +62,29 @@ def fetch_current_state(quay_api_store: QuayApiStore) -> AggregatedList:
6662 if not teams :
6763 continue
6864
69- # Create QuayApi instance on-demand and close immediately after use
70- with get_quay_api_for_org (org_key , org_data ) as quay_api :
71- for team in teams :
72- try :
73- members = quay_api .list_team_members (team )
74- except QuayTeamNotFoundError :
75- logging .warning (
76- "Attempted to list members for team %s in "
77- "org %s/%s, but it doesn't exist" ,
78- team ,
79- org_key .instance ,
80- org_key .org_name ,
81- )
82- else :
83- # Teams are only added to the state if they exist so that
84- # there is a proper diff between the desired and current state.
85- state .add (
86- {
87- "service" : "quay-membership" ,
88- "org" : org_key .org_name ,
89- "team" : team ,
90- },
91- members ,
92- )
65+ quay_api = org_data ["api" ]
66+ for team in teams :
67+ try :
68+ members = quay_api .list_team_members (team )
69+ except QuayTeamNotFoundError :
70+ logging .warning (
71+ "Attempted to list members for team %s in "
72+ "org %s/%s, but it doesn't exist" ,
73+ team ,
74+ org_key .instance ,
75+ org_key .org_name ,
76+ )
77+ else :
78+ # Teams are only added to the state if they exist so that
79+ # there is a proper diff between the desired and current state.
80+ state .add (
81+ {
82+ "service" : "quay-membership" ,
83+ "org" : org_key .org_name ,
84+ "team" : team ,
85+ },
86+ members ,
87+ )
9388 return state
9489
9590
@@ -128,19 +123,18 @@ def action(params: dict, items: list) -> bool:
128123 org = params ["org" ]
129124 team = params ["team" ]
130125 org_data = self .quay_api_store [org ]
126+ quay_api = org_data ["api" ]
131127
132128 missing_users = False
133- # Create QuayApi instance on-demand and close immediately after use
134- with get_quay_api_for_org (org , org_data ) as quay_api :
135- for member in items :
136- logging .info ([label , member , org , team ])
137- user_exists = quay_api .user_exists (member )
138- if user_exists :
139- if not self .dry_run :
140- quay_api .add_user_to_team (member , team )
141- else :
142- missing_users = True
143- logging .error (f"quay user { member } does not exist." )
129+ for member in items :
130+ logging .info ([label , member , org , team ])
131+ user_exists = quay_api .user_exists (member )
132+ if user_exists :
133+ if not self .dry_run :
134+ quay_api .add_user_to_team (member , team )
135+ else :
136+ missing_users = True
137+ logging .error (f"quay user { member } does not exist." )
144138
145139 # This will be evaluated by AggregatedDiffRunner.run(). The happy
146140 # case is to return True: no missing users
@@ -172,9 +166,8 @@ def action(params: dict, items: list) -> bool:
172166 logging .info ([label , org , team ])
173167
174168 if not self .dry_run :
175- # Create QuayApi instance on-demand and close immediately after use
176- with get_quay_api_for_org (org , org_data ) as quay_api :
177- quay_api .create_or_update_team (team )
169+ quay_api = org_data ["api" ]
170+ quay_api .create_or_update_team (team )
178171
179172 return True
180173
@@ -188,39 +181,38 @@ def action(params: dict, items: list) -> bool:
188181 team = params ["team" ]
189182 org_data = self .quay_api_store [org ]
190183
184+ quay_api = org_data ["api" ]
191185 if self .dry_run :
192186 for member in items :
193187 logging .info ([label , member , org , team ])
194188 else :
195- # Create QuayApi instance on-demand and close immediately after use
196- with get_quay_api_for_org (org , org_data ) as quay_api :
197- for member in items :
198- logging .info ([label , member , org , team ])
199- quay_api .remove_user_from_team (member , team )
189+ for member in items :
190+ logging .info ([label , member , org , team ])
191+ quay_api .remove_user_from_team (member , team )
200192
201193 return True
202194
203195 return action
204196
205197
206198def run (dry_run : bool ) -> None :
207- quay_api_store = get_quay_api_store ()
208- current_state = fetch_current_state (quay_api_store )
209- desired_state = fetch_desired_state ()
210-
211- # calculate diff
212- diff = current_state .diff (desired_state )
213- logging .debug ("State diff: %s" , diff )
214-
215- # Run actions
216- runner_action = RunnerAction (dry_run , quay_api_store )
217- runner = AggregatedDiffRunner (diff )
218-
219- runner .register ("insert" , runner_action .create_team ())
220- runner .register ("update-insert" , runner_action .add_to_team ())
221- runner .register ("update-delete" , runner_action .del_from_team ())
222- runner .register ("delete" , runner_action .del_from_team ())
223-
224- status = runner .run ()
225- if not status :
226- sys .exit (ExitCodes .ERROR )
199+ with QuayApiStore () as quay_api_store :
200+ current_state = fetch_current_state (quay_api_store )
201+ desired_state = fetch_desired_state ()
202+
203+ # calculate diff
204+ diff = current_state .diff (desired_state )
205+ logging .debug ("State diff: %s" , diff )
206+
207+ # Run actions
208+ runner_action = RunnerAction (dry_run , quay_api_store )
209+ runner = AggregatedDiffRunner (diff )
210+
211+ runner .register ("insert" , runner_action .create_team ())
212+ runner .register ("update-insert" , runner_action .add_to_team ())
213+ runner .register ("update-delete" , runner_action .del_from_team ())
214+ runner .register ("delete" , runner_action .del_from_team ())
215+
216+ status = runner .run ()
217+ if not status :
218+ sys .exit (ExitCodes .ERROR )
0 commit comments