1010 PermissionQuayOrgTeamV1 ,
1111 UserV1 ,
1212)
13- from reconcile .quay_base import QuayApiStore , get_quay_api_store
13+ from reconcile .quay_base import QuayApiStore
1414from reconcile .status import ExitCodes
1515from reconcile .utils import (
1616 expiration ,
@@ -58,10 +58,11 @@ def fetch_current_state(quay_api_store: QuayApiStore) -> AggregatedList:
5858 state = AggregatedList ()
5959
6060 for org_key , org_data in quay_api_store .items ():
61- quay_api = org_data ["api" ]
6261 teams = org_data ["teams" ]
6362 if not teams :
6463 continue
64+
65+ quay_api = org_data ["api" ]
6566 for team in teams :
6667 try :
6768 members = quay_api .list_team_members (team )
@@ -77,7 +78,11 @@ def fetch_current_state(quay_api_store: QuayApiStore) -> AggregatedList:
7778 # Teams are only added to the state if they exist so that
7879 # there is a proper diff between the desired and current state.
7980 state .add (
80- {"service" : "quay-membership" , "org" : org_key , "team" : team },
81+ {
82+ "service" : "quay-membership" ,
83+ "org" : org_key .org_name ,
84+ "team" : team ,
85+ },
8186 members ,
8287 )
8388 return state
@@ -117,9 +122,10 @@ def add_to_team(self) -> Action:
117122 def action (params : dict , items : list ) -> bool :
118123 org = params ["org" ]
119124 team = params ["team" ]
125+ org_data = self .quay_api_store [org ]
126+ quay_api = org_data ["api" ]
120127
121128 missing_users = False
122- quay_api = self .quay_api_store [org ]["api" ]
123129 for member in items :
124130 logging .info ([label , member , org , team ])
125131 user_exists = quay_api .user_exists (member )
@@ -147,10 +153,11 @@ def create_team(self) -> Action:
147153 def action (params : dict , items : list ) -> bool :
148154 org = params ["org" ]
149155 team = params ["team" ]
156+ org_data = self .quay_api_store [org ]
150157
151158 # Ensure all quay org/teams are declared as dependencies in a
152159 # `/dependencies/quay-org-1.yml` datafile.
153- if team not in self . quay_api_store [ org ] ["teams" ]:
160+ if team not in org_data ["teams" ]:
154161 raise RunnerError (
155162 f"Quay team { team } is not defined as a "
156163 f"managedTeam in the { org } org."
@@ -159,7 +166,7 @@ def action(params: dict, items: list) -> bool:
159166 logging .info ([label , org , team ])
160167
161168 if not self .dry_run :
162- quay_api = self . quay_api_store [ org ] ["api" ]
169+ quay_api = org_data ["api" ]
163170 quay_api .create_or_update_team (team )
164171
165172 return True
@@ -172,12 +179,13 @@ def del_from_team(self) -> Action:
172179 def action (params : dict , items : list ) -> bool :
173180 org = params ["org" ]
174181 team = params ["team" ]
182+ org_data = self .quay_api_store [org ]
175183
184+ quay_api = org_data ["api" ]
176185 if self .dry_run :
177186 for member in items :
178187 logging .info ([label , member , org , team ])
179188 else :
180- quay_api = self .quay_api_store [org ]["api" ]
181189 for member in items :
182190 logging .info ([label , member , org , team ])
183191 quay_api .remove_user_from_team (member , team )
@@ -188,24 +196,23 @@ def action(params: dict, items: list) -> bool:
188196
189197
190198def run (dry_run : bool ) -> None :
191- quay_api_store = get_quay_api_store ()
192-
193- current_state = fetch_current_state (quay_api_store )
194- desired_state = fetch_desired_state ()
195-
196- # calculate diff
197- diff = current_state .diff (desired_state )
198- logging .debug ("State diff: %s" , diff )
199-
200- # Run actions
201- runner_action = RunnerAction (dry_run , quay_api_store )
202- runner = AggregatedDiffRunner (diff )
203-
204- runner .register ("insert" , runner_action .create_team ())
205- runner .register ("update-insert" , runner_action .add_to_team ())
206- runner .register ("update-delete" , runner_action .del_from_team ())
207- runner .register ("delete" , runner_action .del_from_team ())
208-
209- status = runner .run ()
210- if not status :
211- 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