Skip to content

Commit e27fae4

Browse files
committed
default policy feat
1 parent 2596fd5 commit e27fae4

1 file changed

Lines changed: 19 additions & 2 deletions

File tree

projects.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,7 @@ def create_var(var):
407407
#parser.add_argument("--ignore-db", dest="ignore_db", help="ignore connect to db if do not use specific options", action="store_true")
408408
parser.add_argument("--variables-clean-all-before-set", dest="variables_clean_all_before_set", help="delete all variables before setting, useful to clean garbage", action="store_true")
409409
parser.add_argument("--apply-variables-dry-run", dest="apply_variables_dry_run", help="together with --apply-variables leads to just show the diff between existing and defined in yaml vars without applying", action="store_true")
410+
parser.add_argument("--bulk-delete-tags-default-policy", dest="bulk_delete_tags_default_policy", help="default policy yaml file for bulk delete tags in projects, applied if no bulk_delete_tags policy defined in project", nargs=1, metavar=("FILE"))
410411
group = parser.add_mutually_exclusive_group(required=True)
411412
group.add_argument("--setup-projects", dest="setup_projects", help="ensure projects created in GitLab, their settings setup", action="store_true")
412413
group.add_argument("--dump-projects", dest="dump_projects", help="dump project settings", action="store_true")
@@ -1387,17 +1388,33 @@ def create_var(var):
13871388
logger.info("Found project yaml definition: {project}".format(project=project_dict))
13881389

13891390
# Check project active and
1390-
if project_dict["active"] and "bulk_delete_tags" in project_dict:
1391+
if project_dict["active"] and ("bulk_delete_tags" in project_dict or args.bulk_delete_tags_default_policy):
13911392

13921393
# Get GitLab project for
13931394
project = gl.projects.get(project_dict["path"])
13941395
logger.info("Project {project} ssh_url_to_repo: {ssh_url_to_repo}, path_with_namespace: {path_with_namespace}".format(project=project_dict["path"], path_with_namespace=project.path_with_namespace, ssh_url_to_repo=project.ssh_url_to_repo))
13951396

1397+
# Check project has container registry enabled
1398+
if not project.container_registry_enabled:
1399+
logger.info("Project {project} container registry not enabled, skipping.".format(project=project_dict["path"]))
1400+
continue
1401+
13961402
# Set needed project params
13971403
if not args.dry_run_gitlab:
13981404

1405+
# Decide which rules to apply
1406+
if "bulk_delete_tags" in project_dict:
1407+
rules_to_apply = project_dict["bulk_delete_tags"]
1408+
else:
1409+
default_policy_yaml = load_yaml("{0}".format(args.bulk_delete_tags_default_policy[0]), logger)
1410+
if default_policy_yaml is None:
1411+
raise Exception("Config file error or missing: {0}".format(args.bulk_delete_tags_default_policy[0]))
1412+
if "bulk_delete_tags" not in default_policy_yaml or not default_policy_yaml["bulk_delete_tags"]:
1413+
raise Exception("bulk_delete_tags not found in default policy yaml: {0}".format(args.bulk_delete_tags_default_policy[0]))
1414+
rules_to_apply = default_policy_yaml["bulk_delete_tags"]
1415+
13991416
# Loop bulk_delete_tags rules:
1400-
for rule in project_dict["bulk_delete_tags"]:
1417+
for rule in rules_to_apply:
14011418

14021419
logger.info("Rule {rule}".format(rule=rule))
14031420

0 commit comments

Comments
 (0)