checkmk-dev-tools 2.1.3__tar.gz → 2.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (19) hide show
  1. {checkmk_dev_tools-2.1.3 → checkmk_dev_tools-2.2.0}/PKG-INFO +2 -2
  2. {checkmk_dev_tools-2.1.3 → checkmk_dev_tools-2.2.0}/cmk_dev/ci_artifacts.py +18 -8
  3. {checkmk_dev_tools-2.1.3 → checkmk_dev_tools-2.2.0}/cmk_dev/version.py +1 -1
  4. {checkmk_dev_tools-2.1.3 → checkmk_dev_tools-2.2.0}/pyproject.toml +2 -2
  5. {checkmk_dev_tools-2.1.3 → checkmk_dev_tools-2.2.0}/README.md +0 -0
  6. {checkmk_dev_tools-2.1.3 → checkmk_dev_tools-2.2.0}/cmk_dev/__init__.py +0 -0
  7. {checkmk_dev_tools-2.1.3 → checkmk_dev_tools-2.2.0}/cmk_dev/activity_from_fs.py +0 -0
  8. {checkmk_dev_tools-2.1.3 → checkmk_dev_tools-2.2.0}/cmk_dev/binreplace.py +0 -0
  9. {checkmk_dev_tools-2.1.3 → checkmk_dev_tools-2.2.0}/cmk_dev/check_rpath.py +0 -0
  10. {checkmk_dev_tools-2.1.3 → checkmk_dev_tools-2.2.0}/cmk_dev/cli.py +0 -0
  11. {checkmk_dev_tools-2.1.3 → checkmk_dev_tools-2.2.0}/cmk_dev/cpumon.py +0 -0
  12. {checkmk_dev_tools-2.1.3 → checkmk_dev_tools-2.2.0}/cmk_dev/decent_output.py +0 -0
  13. {checkmk_dev_tools-2.1.3 → checkmk_dev_tools-2.2.0}/cmk_dev/jenkins_utils/__init__.py +0 -0
  14. {checkmk_dev_tools-2.1.3 → checkmk_dev_tools-2.2.0}/cmk_dev/job_resource_usage.py +0 -0
  15. {checkmk_dev_tools-2.1.3 → checkmk_dev_tools-2.2.0}/cmk_dev/last_access.py +0 -0
  16. {checkmk_dev_tools-2.1.3 → checkmk_dev_tools-2.2.0}/cmk_dev/lockable_resources.py +0 -0
  17. {checkmk_dev_tools-2.1.3 → checkmk_dev_tools-2.2.0}/cmk_dev/procmon.py +0 -0
  18. {checkmk_dev_tools-2.1.3 → checkmk_dev_tools-2.2.0}/cmk_dev/pycinfo.py +0 -0
  19. {checkmk_dev_tools-2.1.3 → checkmk_dev_tools-2.2.0}/cmk_dev/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: checkmk-dev-tools
3
- Version: 2.1.3
3
+ Version: 2.2.0
4
4
  Summary: Checkmk DevOps tools
5
5
  Author: Frans Fürst
6
6
  Author-email: frans.fuerst@checkmk.com
@@ -14,7 +14,7 @@ Requires-Dist: pydantic (>=2,<3)
14
14
  Requires-Dist: python-jenkins (>=1.8.3,<1.9.0)
15
15
  Requires-Dist: rich
16
16
  Requires-Dist: trickkiste (>=0.3.4,<0.4.0)
17
- Project-URL: Changelog, https://github.com/Checkmk/checkmk-dev-tools/blob/release/2.1.3/changelog.md
17
+ Project-URL: Changelog, https://github.com/Checkmk/checkmk-dev-tools/blob/release/2.2.0/changelog.md
18
18
  Project-URL: Repository, https://github.com/Checkmk/checkmk-dev-tools
19
19
  Description-Content-Type: text/markdown
20
20
 
@@ -582,7 +582,7 @@ async def build_id_from_queue_item(
582
582
  ) -> BuildId:
583
583
  """Waits for queue item with given @queue_id to be scheduled and returns Build instance"""
584
584
  if queue_item is None:
585
- queue_item = await client.queue_item(queue_id)
585
+ queue_item = await client.queue_item(queue_id, depth=1)
586
586
 
587
587
  log().info(
588
588
  "waiting for queue item %s to be scheduled (%s%s)",
@@ -592,7 +592,7 @@ async def build_id_from_queue_item(
592
592
  )
593
593
 
594
594
  while True:
595
- queue_item = await client.queue_item(queue_id)
595
+ queue_item = await client.queue_item(queue_id, depth=1)
596
596
  if queue_item.executable:
597
597
  return queue_item.executable.number
598
598
  log().debug("still waiting in queue, because %s", queue_item.why)
@@ -640,9 +640,7 @@ async def find_matching_queue_item(
640
640
  """Looks for a queued build matching job and parameters and returns the QueueId"""
641
641
  log().debug("Checking queued items with the Jenkins API")
642
642
 
643
- for simple_queue_item in await jenkins_client.queue_info():
644
- queue_item = await jenkins_client.queue_item(simple_queue_item.id, depth=2)
645
-
643
+ for queue_item in await jenkins_client.queue_info():
646
644
  # In order to compare with `job.url` we would have to inject the jenkins base URL
647
645
  # Instead we can also strip it off from `job.url` and compare relative URLs instead
648
646
  # Instead of "https://ci.com/job/name/42/" == "https://ci.com/job/name/42/" we compare
@@ -1095,12 +1093,15 @@ async def identify_matching_build(
1095
1093
  f"Got {len(matching_builds)} InfluxDB job history entries of today, generated {len(builds)} builds to check"
1096
1094
  )
1097
1095
 
1096
+ log().info("Check for matching existing builds")
1098
1097
  # ugly code duplication incomming, rework this to a dedicated function
1099
1098
  for build in list(builds.values()):
1100
1099
  if meets_constraints(build, params, time_constraints, path_hashes):
1101
1100
  log().info("found matching (may finished) build: %s (%s)", build.number, build.url)
1102
1101
  return build
1102
+ log().info("No matching builds found in the InfluxDB")
1103
1103
 
1104
+ log().info("Check for matching queue items via Jenkins API")
1104
1105
  if hasattr(args, "ignore_build_queue") and not args.ignore_build_queue:
1105
1106
  if matching_item := await find_matching_queue_item(
1106
1107
  jenkins_client=jenkins_client,
@@ -1109,32 +1110,39 @@ async def identify_matching_build(
1109
1110
  path_hashes=path_hashes,
1110
1111
  next_check_sleep=next_check_sleep,
1111
1112
  ):
1112
- log().debug("Found matching queued item %s", matching_item)
1113
+ log().info("Found matching queued item %s", matching_item)
1113
1114
  return await jenkins_client.build_info(job.path, matching_item)
1115
+ log().info("No matching queue items found via Jenkins API")
1114
1116
 
1115
1117
  # exit here with no matching result if
1116
1118
  # - the InfluxDB connection was a success
1117
1119
  # - and some data was found by the query
1118
1120
  # otherwise fall back to the old Jenkins job history crawling
1119
1121
  if influx_client.health().status == "pass" and matching_builds:
1122
+ log().info("Return None and schedule a new build")
1120
1123
  return None
1121
1124
 
1122
- log().debug("Start finding matching build via Jenkins API")
1125
+ log().info("Start finding matching build via Jenkins API")
1123
1126
  # fetch a job's build history first
1124
1127
  await job.expand(jenkins_client)
1125
1128
 
1129
+ log().info("Check for matching existing builds")
1126
1130
  # Look for finished builds
1127
1131
  for build in filter(lambda b: b.completed, job.build_infos.values()):
1128
1132
  if meets_constraints(build, params, time_constraints, path_hashes):
1129
1133
  log().info("found matching finished build: %s (%s)", build.number, build.url)
1130
1134
  return build
1135
+ log().info("No matching builds found via the Jenkins API")
1131
1136
 
1137
+ log().info("Check for matching non finished builds")
1132
1138
  # Look for still unfinished builds
1133
1139
  for build in filter(lambda b: not b.completed, job.build_infos.values()):
1134
1140
  if meets_constraints(build, params, time_constraints, path_hashes):
1135
1141
  log().info("found matching unfinished build: %s (%s)", build.number, build.url)
1136
1142
  return build
1143
+ log().info("No matching non finished builds found via the Jenkins API")
1137
1144
 
1145
+ log().info("Check for matching queue items via Jenkins API")
1138
1146
  if args and not args.ignore_build_queue:
1139
1147
  if matching_item := await find_matching_queue_item(
1140
1148
  jenkins_client=jenkins_client,
@@ -1143,9 +1151,11 @@ async def identify_matching_build(
1143
1151
  path_hashes=path_hashes,
1144
1152
  next_check_sleep=next_check_sleep,
1145
1153
  ):
1146
- log().debug("Found matching queued item %s", matching_item)
1154
+ log().info("Found matching queued item %s", matching_item)
1147
1155
  return await jenkins_client.build_info(job.path, matching_item)
1156
+ log().info("No matching queue items found via Jenkins API")
1148
1157
 
1158
+ log().info("Return None and schedule a new build")
1149
1159
  return None
1150
1160
 
1151
1161
 
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env python3
2
2
  # -*- coding: UTF-8 -*-
3
3
 
4
- __version_info__ = ("2", "1", "3")
4
+ __version_info__ = ("2", "2", "0")
5
5
  __version__ = '.'.join(__version_info__)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "checkmk-dev-tools"
3
- version = "2.1.3" # will-be-updated-automatically
3
+ version = "2.2.0" # will-be-updated-automatically
4
4
  description = "Checkmk DevOps tools"
5
5
  authors = [
6
6
  "Frans Fürst <frans.fuerst@checkmk.com>",
@@ -14,7 +14,7 @@ exclude = ["cmk_dev/out"]
14
14
 
15
15
  [tool.poetry.urls]
16
16
  Repository = "https://github.com/Checkmk/checkmk-dev-tools"
17
- Changelog = "https://github.com/Checkmk/checkmk-dev-tools/blob/release/2.1.3/changelog.md"
17
+ Changelog = "https://github.com/Checkmk/checkmk-dev-tools/blob/release/2.2.0/changelog.md"
18
18
 
19
19
  [tool.poetry.scripts]
20
20
  activity-from-fs = 'cmk_dev.activity_from_fs:main'