@@ -122,6 +122,17 @@ def load_targets(*, env: Mapping[str, str]) -> list[RuntimeTarget]:
122122 return _dedupe_targets (targets )
123123
124124
125+ def select_targets (targets : Sequence [RuntimeTarget ], * , service_name : str = "" ) -> list [RuntimeTarget ]:
126+ """Optionally restrict reconciliation to one deployment service."""
127+ selected_service = str (service_name or "" ).strip ()
128+ if not selected_service :
129+ return list (targets )
130+ selected = [target for target in targets if target .service_name == selected_service ]
131+ if not selected :
132+ raise ReconcileError (f"Requested service { selected_service !r} is not a resolved Cloud Run target" )
133+ return selected
134+
135+
125136def _run (args : Sequence [str ], * , json_output : bool = False , dry_run : bool = False ) -> Any :
126137 printable = " " .join (args )
127138 if dry_run :
@@ -413,6 +424,7 @@ def parse_args(argv: Sequence[str]) -> argparse.Namespace:
413424 parser .add_argument ("--expected-commit" , default = os .environ .get ("GITHUB_SHA" , "" ))
414425 parser .add_argument ("--expected-release-set" , default = os .environ .get ("EXPECTED_RELEASE_SET" , "" ))
415426 parser .add_argument ("--expected-image-digest" , default = os .environ .get ("EXPECTED_IMAGE_DIGEST" , "" ))
427+ parser .add_argument ("--service" , default = "" , help = "Restrict reconciliation to one Cloud Run service" )
416428 parser .add_argument ("--ensure-latest-traffic" , action = "store_true" )
417429 parser .add_argument ("--delete-legacy-schedulers" , action = "store_true" )
418430 parser .add_argument ("--dry-run" , action = "store_true" )
@@ -426,6 +438,7 @@ def main(argv: Sequence[str] | None = None) -> int:
426438 targets = load_targets (env = os .environ )
427439 if not targets :
428440 raise ReconcileError ("No Cloud Run targets resolved from SYNC_PLAN_JSON, CLOUD_RUN_SERVICE_TARGETS_JSON, or CLOUD_RUN_SERVICE" )
441+ targets = select_targets (targets , service_name = args .service )
429442 if args .ensure_latest_traffic :
430443 ensure_latest_traffic (
431444 project = args .project ,
0 commit comments