MCPcopy
hub / github.com/saltstack/salt / _environment_slugs

Function _environment_slugs

tools/ci.py:666–738  ·  view source on GitHub ↗

Based a slugs defenition from our environment and labels for a pr, return the requeted slugs for a testrun. Environment slug defenitions can be a comma separated list. An "all" item in the list will include all os and package slugs.

(ctx, slugdef, labels)

Source from the content-addressed store, hash-verified

664
665
666def _environment_slugs(ctx, slugdef, labels):
667 """
668 Based a slugs defenition from our environment and labels for a pr, return
669 the requeted slugs for a testrun.
670
671 Environment slug defenitions can be a comma separated list. An "all" item
672 in the list will include all os and package slugs.
673 """
674 if isinstance(slugdef, list):
675 requests = slugdef
676 else:
677 requests = [_.strip().lower() for _ in slugdef.split(",") if _.strip()]
678 label_requests = [
679 _[0].rsplit(":", 1)[1] for _ in labels if _[0].startswith("test:os:")
680 ]
681 all_slugs = set()
682 enabled_slugs = set()
683 slugs = set()
684 for platform in TEST_SALT_LISTING:
685 for osdef in TEST_SALT_LISTING[platform]:
686 all_slugs.add(osdef.slug)
687 if osdef.enabled:
688 enabled_slugs.add(osdef.slug)
689 for platform in TEST_SALT_PKG_LISTING:
690 for osdef in TEST_SALT_PKG_LISTING[platform]:
691 all_slugs.add(osdef.slug)
692 if osdef.enabled:
693 enabled_slugs.add(osdef.slug)
694
695 if "all" in requests:
696 slugs.update(enabled_slugs)
697 requests.remove("all")
698 if "all" in label_requests:
699 slugs.update(enabled_slugs)
700 label_requests.remove("all")
701 for request in requests[:]:
702 if request.startswith("+"):
703 request = request.strip("+")
704 if request not in all_slugs:
705 ctx.warn(f"invalid slug name from environment {request}")
706 continue
707 if request in slugs:
708 ctx.info(f"slug already requested from environment {request}")
709 continue
710 slugs.add(request)
711 elif request.startswith("-"):
712 request = request.strip("-")
713 if request not in all_slugs:
714 ctx.warn(f"invalid slug name from environment {request}")
715 continue
716 if request in slugs:
717 slugs.remove(request)
718 else:
719 ctx.info(f"slug from environment was never requested {request}")
720 else:
721 if request not in all_slugs:
722 ctx.warn(f"invalid slug name from environment {request}")
723 continue

Callers 1

workflow_configFunction · 0.85

Calls 6

setFunction · 0.50
listFunction · 0.50
addMethod · 0.45
updateMethod · 0.45
removeMethod · 0.45
infoMethod · 0.45

Tested by

no test coverage detected