mas-devops 9.4.0__tar.gz → 9.4.2__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 (112) hide show
  1. {mas_devops-9.4.0/src/mas_devops.egg-info → mas_devops-9.4.2}/PKG-INFO +1 -1
  2. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/__init__.py +1 -1
  3. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/ocp.py +24 -0
  4. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/tekton.py +24 -14
  5. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/templates/pipelinerun-install.yml.j2 +4 -6
  6. {mas_devops-9.4.0 → mas_devops-9.4.2/src/mas_devops.egg-info}/PKG-INFO +1 -1
  7. {mas_devops-9.4.0 → mas_devops-9.4.2}/LICENSE +0 -0
  8. {mas_devops-9.4.0 → mas_devops-9.4.2}/MANIFEST.in +0 -0
  9. {mas_devops-9.4.0 → mas_devops-9.4.2}/README.rst +0 -0
  10. {mas_devops-9.4.0 → mas_devops-9.4.2}/bin/mas-devops-create-initial-users-for-saas +0 -0
  11. {mas_devops-9.4.0 → mas_devops-9.4.2}/bin/mas-devops-db2-validate-config +0 -0
  12. {mas_devops-9.4.0 → mas_devops-9.4.2}/bin/mas-devops-notify-slack +0 -0
  13. {mas_devops-9.4.0 → mas_devops-9.4.2}/bin/mas-devops-saas-job-cleaner +0 -0
  14. {mas_devops-9.4.0 → mas_devops-9.4.2}/pyproject.toml +0 -0
  15. {mas_devops-9.4.0 → mas_devops-9.4.2}/setup.cfg +0 -0
  16. {mas_devops-9.4.0 → mas_devops-9.4.2}/setup.py +0 -0
  17. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/aiservice.py +0 -0
  18. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/__init__.py +0 -0
  19. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v8-230414-amd64.yaml +0 -0
  20. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v8-230518-amd64.yaml +0 -0
  21. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v8-230526-amd64.yaml +0 -0
  22. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v8-230616-amd64.yaml +0 -0
  23. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v8-230627-amd64.yaml +0 -0
  24. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v8-230721-amd64.yaml +0 -0
  25. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v8-230725-amd64.yaml +0 -0
  26. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v8-230829-amd64.yaml +0 -0
  27. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v8-230926-amd64.yaml +0 -0
  28. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v8-231004-amd64.yaml +0 -0
  29. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v8-231031-amd64.yaml +0 -0
  30. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v8-231128-amd64.yaml +0 -0
  31. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v8-231228-amd64.yaml +0 -0
  32. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v8-240130-amd64.yaml +0 -0
  33. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v8-240227-amd64.yaml +0 -0
  34. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v8-240326-amd64.yaml +0 -0
  35. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v8-240405-amd64.yaml +0 -0
  36. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v8-240430-amd64.yaml +0 -0
  37. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v8-240528-amd64.yaml +0 -0
  38. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-240625-amd64.yaml +0 -0
  39. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-240730-amd64.yaml +0 -0
  40. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-240827-amd64.yaml +0 -0
  41. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-241003-amd64.yaml +0 -0
  42. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-241107-amd64.yaml +0 -0
  43. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-241107-s390x.yaml +0 -0
  44. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-241205-amd64.yaml +0 -0
  45. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-241205-s390x.yaml +0 -0
  46. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-250109-amd64.yaml +0 -0
  47. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-250109-s390x.yaml +0 -0
  48. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-250206-amd64.yaml +0 -0
  49. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-250206-s390x.yaml +0 -0
  50. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-250306-amd64.yaml +0 -0
  51. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-250306-s390x.yaml +0 -0
  52. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-250403-amd64.yaml +0 -0
  53. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-250403-s390x.yaml +0 -0
  54. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-250501-amd64.yaml +0 -0
  55. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-250501-s390x.yaml +0 -0
  56. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-250624-amd64.yaml +0 -0
  57. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-250624-ppc64le.yaml +0 -0
  58. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-250624-s390x.yaml +0 -0
  59. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-250731-amd64.yaml +0 -0
  60. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-250731-ppc64le.yaml +0 -0
  61. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-250731-s390x.yaml +0 -0
  62. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-250828-amd64.yaml +0 -0
  63. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-250828-ppc64le.yaml +0 -0
  64. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-250828-s390x.yaml +0 -0
  65. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-250902-amd64.yaml +0 -0
  66. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-250902-ppc64le.yaml +0 -0
  67. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-250902-s390x.yaml +0 -0
  68. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-250925-amd64.yaml +0 -0
  69. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-250925-ppc64le.yaml +0 -0
  70. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-251010-amd64.yaml +0 -0
  71. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-251010-ppc64le.yaml +0 -0
  72. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-251030-amd64.yaml +0 -0
  73. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-251030-ppc64le.yaml +0 -0
  74. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-251030-s390x.yaml +0 -0
  75. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-251127-amd64.yaml +0 -0
  76. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-251127-ppc64le.yaml +0 -0
  77. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-251127-s390x.yaml +0 -0
  78. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-251224-amd64.yaml +0 -0
  79. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-251224-ppc64le.yaml +0 -0
  80. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-251224-s390x.yaml +0 -0
  81. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-251231-amd64.yaml +0 -0
  82. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-251231-ppc64le.yaml +0 -0
  83. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/data/catalogs/v9-251231-s390x.yaml +0 -0
  84. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/db2.py +0 -0
  85. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/mas/__init__.py +0 -0
  86. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/mas/apps.py +0 -0
  87. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/mas/suite.py +0 -0
  88. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/olm.py +0 -0
  89. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/saas/__init__.py +0 -0
  90. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/saas/job_cleaner.py +0 -0
  91. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/slack.py +0 -0
  92. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/sls.py +0 -0
  93. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/templates/aiservice-pipelines-pvc.yml.j2 +0 -0
  94. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/templates/aiservice-pipelines-rbac.yml.j2 +0 -0
  95. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/templates/ibm-entitlement-dockerconfig.json.j2 +0 -0
  96. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/templates/ibm-entitlement-secret.yml.j2 +0 -0
  97. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/templates/operatorgroup.yml.j2 +0 -0
  98. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/templates/pipeline-additional-configs.yml.j2 +0 -0
  99. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/templates/pipelinerun-aiservice-upgrade.yml.j2 +0 -0
  100. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/templates/pipelinerun-uninstall.yml.j2 +0 -0
  101. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/templates/pipelinerun-update.yml.j2 +0 -0
  102. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/templates/pipelinerun-upgrade.yml.j2 +0 -0
  103. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/templates/pipelines-pvc.yml.j2 +0 -0
  104. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/templates/pipelines-rbac-cluster.yml.j2 +0 -0
  105. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/templates/pipelines-rbac.yml.j2 +0 -0
  106. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/templates/subscription.yml.j2 +0 -0
  107. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/users.py +0 -0
  108. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas/devops/utils.py +0 -0
  109. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas_devops.egg-info/SOURCES.txt +0 -0
  110. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas_devops.egg-info/dependency_links.txt +0 -0
  111. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas_devops.egg-info/requires.txt +0 -0
  112. {mas_devops-9.4.0 → mas_devops-9.4.2}/src/mas_devops.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mas-devops
3
- Version: 9.4.0
3
+ Version: 9.4.2
4
4
  Summary: Python for Maximo Application Suite Dev/Ops
5
5
  Home-page: https://github.com/ibm-mas/python-devops
6
6
  Author: David Parker
@@ -8,4 +8,4 @@
8
8
  #
9
9
  # *****************************************************************************
10
10
 
11
- __version__ = "9.4.0"
11
+ __version__ = "9.4.2"
@@ -376,6 +376,30 @@ def getStorageClasses(dynClient: DynamicClient) -> list:
376
376
  return storageClasses
377
377
 
378
378
 
379
+ def getStorageClassVolumeBindingMode(dynClient: DynamicClient, storageClassName: str) -> str:
380
+ """
381
+ Get the volumeBindingMode for a storage class.
382
+
383
+ Args:
384
+ dynClient: OpenShift dynamic client
385
+ storageClassName: Name of the storage class
386
+
387
+ Returns:
388
+ str: "Immediate" or "WaitForFirstConsumer" (defaults to "Immediate" if not found)
389
+ """
390
+ try:
391
+ storageClass = getStorageClass(dynClient, storageClassName)
392
+ if storageClass and hasattr(storageClass, 'volumeBindingMode'):
393
+ return storageClass.volumeBindingMode
394
+ # Default to Immediate if not specified (Kubernetes default)
395
+ logger.debug(f"Storage class {storageClassName} does not have volumeBindingMode set, defaulting to 'Immediate'")
396
+ return "Immediate"
397
+ except Exception as e:
398
+ logger.warning(f"Unable to determine volumeBindingMode for storage class {storageClassName}: {e}")
399
+ # Default to Immediate to maintain backward compatibility
400
+ return "Immediate"
401
+
402
+
379
403
  def isSNO(dynClient: DynamicClient) -> bool:
380
404
  """
381
405
  Check if the cluster is a Single Node OpenShift (SNO) deployment.
@@ -22,7 +22,7 @@ from openshift.dynamic.exceptions import NotFoundError, UnprocessibleEntityError
22
22
 
23
23
  from jinja2 import Environment, FileSystemLoader
24
24
 
25
- from .ocp import getConsoleURL, waitForCRD, waitForDeployment, crdExists, waitForPVC, getStorageClasses
25
+ from .ocp import getConsoleURL, waitForCRD, waitForDeployment, crdExists, waitForPVC, getStorageClasses, getStorageClassVolumeBindingMode
26
26
 
27
27
  logger = logging.getLogger(__name__)
28
28
 
@@ -314,18 +314,22 @@ def preparePipelinesNamespace(dynClient: DynamicClient, instanceId: str = None,
314
314
  pvc = yaml.safe_load(renderedTemplate)
315
315
  pvcAPI = dynClient.resources.get(api_version="v1", kind="PersistentVolumeClaim")
316
316
  pvcAPI.apply(body=pvc, namespace=namespace)
317
-
318
- if instanceId is not None and waitForBind:
319
- logger.debug("Waiting for PVC to be bound")
320
- pvcIsBound = False
321
- while not pvcIsBound:
322
- configPVC = pvcAPI.get(name="config-pvc", namespace=namespace)
323
- if configPVC.status.phase == "Bound":
324
- pvcIsBound = True
325
- else:
326
- logger.debug("Waiting 15s before checking status of PVC again")
327
- logger.debug(configPVC)
328
- sleep(15)
317
+ # Automatically determine if we should wait for PVC binding based on storage class
318
+ volumeBindingMode = getStorageClassVolumeBindingMode(dynClient, storageClass)
319
+ waitForBind = (volumeBindingMode == "Immediate")
320
+ if waitForBind:
321
+ logger.info(f"Storage class {storageClass} uses volumeBindingMode={volumeBindingMode}, waiting for PVC to bind")
322
+ pvcIsBound = False
323
+ while not pvcIsBound:
324
+ configPVC = pvcAPI.get(name="config-pvc", namespace=namespace)
325
+ if configPVC.status.phase == "Bound":
326
+ pvcIsBound = True
327
+ else:
328
+ logger.debug("Waiting 15s before checking status of PVC again")
329
+ logger.debug(configPVC)
330
+ sleep(15)
331
+ else:
332
+ logger.info(f"Storage class {storageClass} uses volumeBindingMode={volumeBindingMode}, skipping PVC bind wait")
329
333
 
330
334
 
331
335
  def prepareAiServicePipelinesNamespace(dynClient: DynamicClient, instanceId: str = None, storageClass: str = None, accessMode: str = None, waitForBind: bool = True, configureRBAC: bool = True):
@@ -375,8 +379,12 @@ def prepareAiServicePipelinesNamespace(dynClient: DynamicClient, instanceId: str
375
379
  pvcAPI = dynClient.resources.get(api_version="v1", kind="PersistentVolumeClaim")
376
380
  pvcAPI.apply(body=pvc, namespace=namespace)
377
381
 
382
+ # Automatically determine if we should wait for PVC binding based on storage class
383
+ volumeBindingMode = getStorageClassVolumeBindingMode(dynClient, storageClass)
384
+ waitForBind = (volumeBindingMode == "Immediate")
385
+
378
386
  if waitForBind:
379
- logger.debug("Waiting for PVC to be bound")
387
+ logger.info(f"Storage class {storageClass} uses volumeBindingMode={volumeBindingMode}, waiting for PVC to bind")
380
388
  pvcIsBound = False
381
389
  while not pvcIsBound:
382
390
  configPVC = pvcAPI.get(name="config-pvc", namespace=namespace)
@@ -386,6 +394,8 @@ def prepareAiServicePipelinesNamespace(dynClient: DynamicClient, instanceId: str
386
394
  logger.debug("Waiting 15s before checking status of PVC again")
387
395
  logger.debug(configPVC)
388
396
  sleep(15)
397
+ else:
398
+ logger.info(f"Storage class {storageClass} uses volumeBindingMode={volumeBindingMode}, skipping PVC bind wait")
389
399
 
390
400
 
391
401
  def prepareInstallSecrets(dynClient: DynamicClient, namespace: str, slsLicenseFile: str = None, additionalConfigs: dict = None, certs: str = None, podTemplates: str = None) -> None:
@@ -93,7 +93,7 @@ spec:
93
93
  value: "{{ eck_remote_es_password }}"
94
94
  {%- endif %}
95
95
  {%- endif %}
96
- {%- if db2_action_system == "install" or db2_action_manage == "install" %}
96
+ {%- if db2_action_system == "install" or db2_action_manage == "install" or db2_action_aiservice == "install" %}
97
97
 
98
98
  # Dependencies - Db2 - Actions
99
99
  # -------------------------------------------------------------------------
@@ -103,6 +103,8 @@ spec:
103
103
  value: "{{ db2_action_manage }}"
104
104
  - name: db2_action_facilities
105
105
  value: "{{ db2_action_facilities}}"
106
+ - name: db2_action_aiservice
107
+ value: "{{ db2_action_aiservice }}"
106
108
 
107
109
  # Dependencies - Db2u Operator
108
110
  # -------------------------------------------------------------------------
@@ -555,12 +557,10 @@ spec:
555
557
  - name: mas_app_settings_iot_mqttbroker_pvc_storage_class
556
558
  value: "{{ mas_app_settings_iot_mqttbroker_pvc_storage_class }}"
557
559
  {%- endif %}
558
- {%- if install_arcgis is defined and install_arcgis != "" %}
560
+ {%- if mas_arcgis_channel is defined and mas_arcgis_channel != "" and mas_arcgis_channel %}
559
561
 
560
562
  # IBM Maximo Location Services for Esri (arcgis)
561
563
  # -------------------------------------------------------------------------
562
- - name: install_arcgis
563
- value: "{{ install_arcgis }}"
564
564
  - name: mas_arcgis_channel
565
565
  value: "{{ mas_arcgis_channel }}"
566
566
  {%- endif %}
@@ -785,8 +785,6 @@ spec:
785
785
  value: "{{ aiservice_instance_id }}"
786
786
  - name: aiservice_channel
787
787
  value: "{{ aiservice_channel }}"
788
- - name: db2_action_aiservice
789
- value: "{{ db2_action_aiservice }}"
790
788
 
791
789
  - name: environment_type
792
790
  value: "{{ environment_type }}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mas-devops
3
- Version: 9.4.0
3
+ Version: 9.4.2
4
4
  Summary: Python for Maximo Application Suite Dev/Ops
5
5
  Home-page: https://github.com/ibm-mas/python-devops
6
6
  Author: David Parker
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes