runner-controller: do not delete runner if it is busy (#103)
Currently, after refreshing the token, the controller re-creates the runner with the new token. This results in jobs being interrupted. This PR makes sure the pod is not restarted if it is busy. Closes #74
This commit is contained in:
		
							parent
							
								
									7b5e62e266
								
							
						
					
					
						commit
						7a2fa7fbce
					
				|  | @ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1beta1 | ||||||
| kind: CustomResourceDefinition | kind: CustomResourceDefinition | ||||||
| metadata: | metadata: | ||||||
|   annotations: |   annotations: | ||||||
|     controller-gen.kubebuilder.io/version: v0.2.4 |     controller-gen.kubebuilder.io/version: v0.3.0 | ||||||
|   creationTimestamp: null |   creationTimestamp: null | ||||||
|   name: horizontalrunnerautoscalers.actions.summerwind.dev |   name: horizontalrunnerautoscalers.actions.summerwind.dev | ||||||
| spec: | spec: | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1beta1 | ||||||
| kind: CustomResourceDefinition | kind: CustomResourceDefinition | ||||||
| metadata: | metadata: | ||||||
|   annotations: |   annotations: | ||||||
|     controller-gen.kubebuilder.io/version: v0.2.4 |     controller-gen.kubebuilder.io/version: v0.3.0 | ||||||
|   creationTimestamp: null |   creationTimestamp: null | ||||||
|   name: runnerdeployments.actions.summerwind.dev |   name: runnerdeployments.actions.summerwind.dev | ||||||
| spec: | spec: | ||||||
|  | @ -788,10 +788,14 @@ spec: | ||||||
|                                             volumes, optional for env vars' |                                             volumes, optional for env vars' | ||||||
|                                           type: string |                                           type: string | ||||||
|                                         divisor: |                                         divisor: | ||||||
|  |                                           anyOf: | ||||||
|  |                                           - type: integer | ||||||
|  |                                           - type: string | ||||||
|                                           description: Specifies the output format |                                           description: Specifies the output format | ||||||
|                                             of the exposed resources, defaults to |                                             of the exposed resources, defaults to | ||||||
|                                             "1" |                                             "1" | ||||||
|                                           type: string |                                           pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                           x-kubernetes-int-or-string: true | ||||||
|                                         resource: |                                         resource: | ||||||
|                                           description: 'Required: resource to select' |                                           description: 'Required: resource to select' | ||||||
|                                           type: string |                                           type: string | ||||||
|  | @ -1256,6 +1260,10 @@ spec: | ||||||
|                               - containerPort |                               - containerPort | ||||||
|                               type: object |                               type: object | ||||||
|                             type: array |                             type: array | ||||||
|  |                             x-kubernetes-list-map-keys: | ||||||
|  |                             - containerPort | ||||||
|  |                             - protocol | ||||||
|  |                             x-kubernetes-list-type: map | ||||||
|                           readinessProbe: |                           readinessProbe: | ||||||
|                             description: 'Periodic probe of container service readiness. |                             description: 'Periodic probe of container service readiness. | ||||||
|                               Container will be removed from service endpoints if |                               Container will be removed from service endpoints if | ||||||
|  | @ -1381,13 +1389,21 @@ spec: | ||||||
|                             properties: |                             properties: | ||||||
|                               limits: |                               limits: | ||||||
|                                 additionalProperties: |                                 additionalProperties: | ||||||
|                                   type: string |                                   anyOf: | ||||||
|  |                                   - type: integer | ||||||
|  |                                   - type: string | ||||||
|  |                                   pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                   x-kubernetes-int-or-string: true | ||||||
|                                 description: 'Limits describes the maximum amount |                                 description: 'Limits describes the maximum amount | ||||||
|                                   of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' |                                   of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' | ||||||
|                                 type: object |                                 type: object | ||||||
|                               requests: |                               requests: | ||||||
|                                 additionalProperties: |                                 additionalProperties: | ||||||
|                                   type: string |                                   anyOf: | ||||||
|  |                                   - type: integer | ||||||
|  |                                   - type: string | ||||||
|  |                                   pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                   x-kubernetes-int-or-string: true | ||||||
|                                 description: 'Requests describes the minimum amount |                                 description: 'Requests describes the minimum amount | ||||||
|                                   of compute resources required. If Requests is omitted |                                   of compute resources required. If Requests is omitted | ||||||
|                                   for a container, it defaults to Limits if that is |                                   for a container, it defaults to Limits if that is | ||||||
|  | @ -1847,9 +1863,13 @@ spec: | ||||||
|                                       optional for env vars' |                                       optional for env vars' | ||||||
|                                     type: string |                                     type: string | ||||||
|                                   divisor: |                                   divisor: | ||||||
|  |                                     anyOf: | ||||||
|  |                                     - type: integer | ||||||
|  |                                     - type: string | ||||||
|                                     description: Specifies the output format of the |                                     description: Specifies the output format of the | ||||||
|                                       exposed resources, defaults to "1" |                                       exposed resources, defaults to "1" | ||||||
|                                     type: string |                                     pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                     x-kubernetes-int-or-string: true | ||||||
|                                   resource: |                                   resource: | ||||||
|                                     description: 'Required: resource to select' |                                     description: 'Required: resource to select' | ||||||
|                                     type: string |                                     type: string | ||||||
|  | @ -2033,10 +2053,14 @@ spec: | ||||||
|                                             volumes, optional for env vars' |                                             volumes, optional for env vars' | ||||||
|                                           type: string |                                           type: string | ||||||
|                                         divisor: |                                         divisor: | ||||||
|  |                                           anyOf: | ||||||
|  |                                           - type: integer | ||||||
|  |                                           - type: string | ||||||
|                                           description: Specifies the output format |                                           description: Specifies the output format | ||||||
|                                             of the exposed resources, defaults to |                                             of the exposed resources, defaults to | ||||||
|                                             "1" |                                             "1" | ||||||
|                                           type: string |                                           pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                           x-kubernetes-int-or-string: true | ||||||
|                                         resource: |                                         resource: | ||||||
|                                           description: 'Required: resource to select' |                                           description: 'Required: resource to select' | ||||||
|                                           type: string |                                           type: string | ||||||
|  | @ -2611,13 +2635,21 @@ spec: | ||||||
|                             properties: |                             properties: | ||||||
|                               limits: |                               limits: | ||||||
|                                 additionalProperties: |                                 additionalProperties: | ||||||
|                                   type: string |                                   anyOf: | ||||||
|  |                                   - type: integer | ||||||
|  |                                   - type: string | ||||||
|  |                                   pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                   x-kubernetes-int-or-string: true | ||||||
|                                 description: 'Limits describes the maximum amount |                                 description: 'Limits describes the maximum amount | ||||||
|                                   of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' |                                   of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' | ||||||
|                                 type: object |                                 type: object | ||||||
|                               requests: |                               requests: | ||||||
|                                 additionalProperties: |                                 additionalProperties: | ||||||
|                                   type: string |                                   anyOf: | ||||||
|  |                                   - type: integer | ||||||
|  |                                   - type: string | ||||||
|  |                                   pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                   x-kubernetes-int-or-string: true | ||||||
|                                 description: 'Requests describes the minimum amount |                                 description: 'Requests describes the minimum amount | ||||||
|                                   of compute resources required. If Requests is omitted |                                   of compute resources required. If Requests is omitted | ||||||
|                                   for a container, it defaults to Limits if that is |                                   for a container, it defaults to Limits if that is | ||||||
|  | @ -3127,10 +3159,14 @@ spec: | ||||||
|                                             volumes, optional for env vars' |                                             volumes, optional for env vars' | ||||||
|                                           type: string |                                           type: string | ||||||
|                                         divisor: |                                         divisor: | ||||||
|  |                                           anyOf: | ||||||
|  |                                           - type: integer | ||||||
|  |                                           - type: string | ||||||
|                                           description: Specifies the output format |                                           description: Specifies the output format | ||||||
|                                             of the exposed resources, defaults to |                                             of the exposed resources, defaults to | ||||||
|                                             "1" |                                             "1" | ||||||
|                                           type: string |                                           pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                           x-kubernetes-int-or-string: true | ||||||
|                                         resource: |                                         resource: | ||||||
|                                           description: 'Required: resource to select' |                                           description: 'Required: resource to select' | ||||||
|                                           type: string |                                           type: string | ||||||
|  | @ -3595,6 +3631,10 @@ spec: | ||||||
|                               - containerPort |                               - containerPort | ||||||
|                               type: object |                               type: object | ||||||
|                             type: array |                             type: array | ||||||
|  |                             x-kubernetes-list-map-keys: | ||||||
|  |                             - containerPort | ||||||
|  |                             - protocol | ||||||
|  |                             x-kubernetes-list-type: map | ||||||
|                           readinessProbe: |                           readinessProbe: | ||||||
|                             description: 'Periodic probe of container service readiness. |                             description: 'Periodic probe of container service readiness. | ||||||
|                               Container will be removed from service endpoints if |                               Container will be removed from service endpoints if | ||||||
|  | @ -3720,13 +3760,21 @@ spec: | ||||||
|                             properties: |                             properties: | ||||||
|                               limits: |                               limits: | ||||||
|                                 additionalProperties: |                                 additionalProperties: | ||||||
|                                   type: string |                                   anyOf: | ||||||
|  |                                   - type: integer | ||||||
|  |                                   - type: string | ||||||
|  |                                   pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                   x-kubernetes-int-or-string: true | ||||||
|                                 description: 'Limits describes the maximum amount |                                 description: 'Limits describes the maximum amount | ||||||
|                                   of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' |                                   of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' | ||||||
|                                 type: object |                                 type: object | ||||||
|                               requests: |                               requests: | ||||||
|                                 additionalProperties: |                                 additionalProperties: | ||||||
|                                   type: string |                                   anyOf: | ||||||
|  |                                   - type: integer | ||||||
|  |                                   - type: string | ||||||
|  |                                   pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                   x-kubernetes-int-or-string: true | ||||||
|                                 description: 'Requests describes the minimum amount |                                 description: 'Requests describes the minimum amount | ||||||
|                                   of compute resources required. If Requests is omitted |                                   of compute resources required. If Requests is omitted | ||||||
|                                   for a container, it defaults to Limits if that is |                                   for a container, it defaults to Limits if that is | ||||||
|  | @ -4135,13 +4183,21 @@ spec: | ||||||
|                       properties: |                       properties: | ||||||
|                         limits: |                         limits: | ||||||
|                           additionalProperties: |                           additionalProperties: | ||||||
|                             type: string |                             anyOf: | ||||||
|  |                             - type: integer | ||||||
|  |                             - type: string | ||||||
|  |                             pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                             x-kubernetes-int-or-string: true | ||||||
|                           description: 'Limits describes the maximum amount of compute |                           description: 'Limits describes the maximum amount of compute | ||||||
|                             resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' |                             resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' | ||||||
|                           type: object |                           type: object | ||||||
|                         requests: |                         requests: | ||||||
|                           additionalProperties: |                           additionalProperties: | ||||||
|                             type: string |                             anyOf: | ||||||
|  |                             - type: integer | ||||||
|  |                             - type: string | ||||||
|  |                             pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                             x-kubernetes-int-or-string: true | ||||||
|                           description: 'Requests describes the minimum amount of compute |                           description: 'Requests describes the minimum amount of compute | ||||||
|                             resources required. If Requests is omitted for a container, |                             resources required. If Requests is omitted for a container, | ||||||
|                             it defaults to Limits if that is explicitly specified, |                             it defaults to Limits if that is explicitly specified, | ||||||
|  | @ -4385,10 +4441,14 @@ spec: | ||||||
|                                             volumes, optional for env vars' |                                             volumes, optional for env vars' | ||||||
|                                           type: string |                                           type: string | ||||||
|                                         divisor: |                                         divisor: | ||||||
|  |                                           anyOf: | ||||||
|  |                                           - type: integer | ||||||
|  |                                           - type: string | ||||||
|                                           description: Specifies the output format |                                           description: Specifies the output format | ||||||
|                                             of the exposed resources, defaults to |                                             of the exposed resources, defaults to | ||||||
|                                             "1" |                                             "1" | ||||||
|                                           type: string |                                           pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                           x-kubernetes-int-or-string: true | ||||||
|                                         resource: |                                         resource: | ||||||
|                                           description: 'Required: resource to select' |                                           description: 'Required: resource to select' | ||||||
|                                           type: string |                                           type: string | ||||||
|  | @ -4853,6 +4913,10 @@ spec: | ||||||
|                               - containerPort |                               - containerPort | ||||||
|                               type: object |                               type: object | ||||||
|                             type: array |                             type: array | ||||||
|  |                             x-kubernetes-list-map-keys: | ||||||
|  |                             - containerPort | ||||||
|  |                             - protocol | ||||||
|  |                             x-kubernetes-list-type: map | ||||||
|                           readinessProbe: |                           readinessProbe: | ||||||
|                             description: 'Periodic probe of container service readiness. |                             description: 'Periodic probe of container service readiness. | ||||||
|                               Container will be removed from service endpoints if |                               Container will be removed from service endpoints if | ||||||
|  | @ -4978,13 +5042,21 @@ spec: | ||||||
|                             properties: |                             properties: | ||||||
|                               limits: |                               limits: | ||||||
|                                 additionalProperties: |                                 additionalProperties: | ||||||
|                                   type: string |                                   anyOf: | ||||||
|  |                                   - type: integer | ||||||
|  |                                   - type: string | ||||||
|  |                                   pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                   x-kubernetes-int-or-string: true | ||||||
|                                 description: 'Limits describes the maximum amount |                                 description: 'Limits describes the maximum amount | ||||||
|                                   of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' |                                   of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' | ||||||
|                                 type: object |                                 type: object | ||||||
|                               requests: |                               requests: | ||||||
|                                 additionalProperties: |                                 additionalProperties: | ||||||
|                                   type: string |                                   anyOf: | ||||||
|  |                                   - type: integer | ||||||
|  |                                   - type: string | ||||||
|  |                                   pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                   x-kubernetes-int-or-string: true | ||||||
|                                 description: 'Requests describes the minimum amount |                                 description: 'Requests describes the minimum amount | ||||||
|                                   of compute resources required. If Requests is omitted |                                   of compute resources required. If Requests is omitted | ||||||
|                                   for a container, it defaults to Limits if that is |                                   for a container, it defaults to Limits if that is | ||||||
|  | @ -5800,10 +5872,14 @@ spec: | ||||||
|                                             volumes, optional for env vars' |                                             volumes, optional for env vars' | ||||||
|                                           type: string |                                           type: string | ||||||
|                                         divisor: |                                         divisor: | ||||||
|  |                                           anyOf: | ||||||
|  |                                           - type: integer | ||||||
|  |                                           - type: string | ||||||
|                                           description: Specifies the output format |                                           description: Specifies the output format | ||||||
|                                             of the exposed resources, defaults to |                                             of the exposed resources, defaults to | ||||||
|                                             "1" |                                             "1" | ||||||
|                                           type: string |                                           pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                           x-kubernetes-int-or-string: true | ||||||
|                                         resource: |                                         resource: | ||||||
|                                           description: 'Required: resource to select' |                                           description: 'Required: resource to select' | ||||||
|                                           type: string |                                           type: string | ||||||
|  | @ -5826,6 +5902,9 @@ spec: | ||||||
|                                   string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' |                                   string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' | ||||||
|                                 type: string |                                 type: string | ||||||
|                               sizeLimit: |                               sizeLimit: | ||||||
|  |                                 anyOf: | ||||||
|  |                                 - type: integer | ||||||
|  |                                 - type: string | ||||||
|                                 description: 'Total amount of local storage required |                                 description: 'Total amount of local storage required | ||||||
|                                   for this EmptyDir volume. The size limit is also |                                   for this EmptyDir volume. The size limit is also | ||||||
|                                   applicable for memory medium. The maximum usage |                                   applicable for memory medium. The maximum usage | ||||||
|  | @ -5834,7 +5913,8 @@ spec: | ||||||
|                                   of memory limits of all containers in a pod. The |                                   of memory limits of all containers in a pod. The | ||||||
|                                   default is nil which means that the limit is undefined. |                                   default is nil which means that the limit is undefined. | ||||||
|                                   More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' |                                   More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' | ||||||
|                                 type: string |                                 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                 x-kubernetes-int-or-string: true | ||||||
|                             type: object |                             type: object | ||||||
|                           fc: |                           fc: | ||||||
|                             description: FC represents a Fibre Channel resource that |                             description: FC represents a Fibre Channel resource that | ||||||
|  | @ -6321,10 +6401,14 @@ spec: | ||||||
|                                                       for env vars' |                                                       for env vars' | ||||||
|                                                     type: string |                                                     type: string | ||||||
|                                                   divisor: |                                                   divisor: | ||||||
|  |                                                     anyOf: | ||||||
|  |                                                     - type: integer | ||||||
|  |                                                     - type: string | ||||||
|                                                     description: Specifies the output |                                                     description: Specifies the output | ||||||
|                                                       format of the exposed resources, |                                                       format of the exposed resources, | ||||||
|                                                       defaults to "1" |                                                       defaults to "1" | ||||||
|                                                     type: string |                                                     pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                                     x-kubernetes-int-or-string: true | ||||||
|                                                   resource: |                                                   resource: | ||||||
|                                                     description: 'Required: resource |                                                     description: 'Required: resource | ||||||
|                                                       to select' |                                                       to select' | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1beta1 | ||||||
| kind: CustomResourceDefinition | kind: CustomResourceDefinition | ||||||
| metadata: | metadata: | ||||||
|   annotations: |   annotations: | ||||||
|     controller-gen.kubebuilder.io/version: v0.2.4 |     controller-gen.kubebuilder.io/version: v0.3.0 | ||||||
|   creationTimestamp: null |   creationTimestamp: null | ||||||
|   name: runnerreplicasets.actions.summerwind.dev |   name: runnerreplicasets.actions.summerwind.dev | ||||||
| spec: | spec: | ||||||
|  | @ -788,10 +788,14 @@ spec: | ||||||
|                                             volumes, optional for env vars' |                                             volumes, optional for env vars' | ||||||
|                                           type: string |                                           type: string | ||||||
|                                         divisor: |                                         divisor: | ||||||
|  |                                           anyOf: | ||||||
|  |                                           - type: integer | ||||||
|  |                                           - type: string | ||||||
|                                           description: Specifies the output format |                                           description: Specifies the output format | ||||||
|                                             of the exposed resources, defaults to |                                             of the exposed resources, defaults to | ||||||
|                                             "1" |                                             "1" | ||||||
|                                           type: string |                                           pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                           x-kubernetes-int-or-string: true | ||||||
|                                         resource: |                                         resource: | ||||||
|                                           description: 'Required: resource to select' |                                           description: 'Required: resource to select' | ||||||
|                                           type: string |                                           type: string | ||||||
|  | @ -1256,6 +1260,10 @@ spec: | ||||||
|                               - containerPort |                               - containerPort | ||||||
|                               type: object |                               type: object | ||||||
|                             type: array |                             type: array | ||||||
|  |                             x-kubernetes-list-map-keys: | ||||||
|  |                             - containerPort | ||||||
|  |                             - protocol | ||||||
|  |                             x-kubernetes-list-type: map | ||||||
|                           readinessProbe: |                           readinessProbe: | ||||||
|                             description: 'Periodic probe of container service readiness. |                             description: 'Periodic probe of container service readiness. | ||||||
|                               Container will be removed from service endpoints if |                               Container will be removed from service endpoints if | ||||||
|  | @ -1381,13 +1389,21 @@ spec: | ||||||
|                             properties: |                             properties: | ||||||
|                               limits: |                               limits: | ||||||
|                                 additionalProperties: |                                 additionalProperties: | ||||||
|                                   type: string |                                   anyOf: | ||||||
|  |                                   - type: integer | ||||||
|  |                                   - type: string | ||||||
|  |                                   pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                   x-kubernetes-int-or-string: true | ||||||
|                                 description: 'Limits describes the maximum amount |                                 description: 'Limits describes the maximum amount | ||||||
|                                   of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' |                                   of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' | ||||||
|                                 type: object |                                 type: object | ||||||
|                               requests: |                               requests: | ||||||
|                                 additionalProperties: |                                 additionalProperties: | ||||||
|                                   type: string |                                   anyOf: | ||||||
|  |                                   - type: integer | ||||||
|  |                                   - type: string | ||||||
|  |                                   pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                   x-kubernetes-int-or-string: true | ||||||
|                                 description: 'Requests describes the minimum amount |                                 description: 'Requests describes the minimum amount | ||||||
|                                   of compute resources required. If Requests is omitted |                                   of compute resources required. If Requests is omitted | ||||||
|                                   for a container, it defaults to Limits if that is |                                   for a container, it defaults to Limits if that is | ||||||
|  | @ -1847,9 +1863,13 @@ spec: | ||||||
|                                       optional for env vars' |                                       optional for env vars' | ||||||
|                                     type: string |                                     type: string | ||||||
|                                   divisor: |                                   divisor: | ||||||
|  |                                     anyOf: | ||||||
|  |                                     - type: integer | ||||||
|  |                                     - type: string | ||||||
|                                     description: Specifies the output format of the |                                     description: Specifies the output format of the | ||||||
|                                       exposed resources, defaults to "1" |                                       exposed resources, defaults to "1" | ||||||
|                                     type: string |                                     pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                     x-kubernetes-int-or-string: true | ||||||
|                                   resource: |                                   resource: | ||||||
|                                     description: 'Required: resource to select' |                                     description: 'Required: resource to select' | ||||||
|                                     type: string |                                     type: string | ||||||
|  | @ -2033,10 +2053,14 @@ spec: | ||||||
|                                             volumes, optional for env vars' |                                             volumes, optional for env vars' | ||||||
|                                           type: string |                                           type: string | ||||||
|                                         divisor: |                                         divisor: | ||||||
|  |                                           anyOf: | ||||||
|  |                                           - type: integer | ||||||
|  |                                           - type: string | ||||||
|                                           description: Specifies the output format |                                           description: Specifies the output format | ||||||
|                                             of the exposed resources, defaults to |                                             of the exposed resources, defaults to | ||||||
|                                             "1" |                                             "1" | ||||||
|                                           type: string |                                           pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                           x-kubernetes-int-or-string: true | ||||||
|                                         resource: |                                         resource: | ||||||
|                                           description: 'Required: resource to select' |                                           description: 'Required: resource to select' | ||||||
|                                           type: string |                                           type: string | ||||||
|  | @ -2611,13 +2635,21 @@ spec: | ||||||
|                             properties: |                             properties: | ||||||
|                               limits: |                               limits: | ||||||
|                                 additionalProperties: |                                 additionalProperties: | ||||||
|                                   type: string |                                   anyOf: | ||||||
|  |                                   - type: integer | ||||||
|  |                                   - type: string | ||||||
|  |                                   pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                   x-kubernetes-int-or-string: true | ||||||
|                                 description: 'Limits describes the maximum amount |                                 description: 'Limits describes the maximum amount | ||||||
|                                   of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' |                                   of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' | ||||||
|                                 type: object |                                 type: object | ||||||
|                               requests: |                               requests: | ||||||
|                                 additionalProperties: |                                 additionalProperties: | ||||||
|                                   type: string |                                   anyOf: | ||||||
|  |                                   - type: integer | ||||||
|  |                                   - type: string | ||||||
|  |                                   pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                   x-kubernetes-int-or-string: true | ||||||
|                                 description: 'Requests describes the minimum amount |                                 description: 'Requests describes the minimum amount | ||||||
|                                   of compute resources required. If Requests is omitted |                                   of compute resources required. If Requests is omitted | ||||||
|                                   for a container, it defaults to Limits if that is |                                   for a container, it defaults to Limits if that is | ||||||
|  | @ -3127,10 +3159,14 @@ spec: | ||||||
|                                             volumes, optional for env vars' |                                             volumes, optional for env vars' | ||||||
|                                           type: string |                                           type: string | ||||||
|                                         divisor: |                                         divisor: | ||||||
|  |                                           anyOf: | ||||||
|  |                                           - type: integer | ||||||
|  |                                           - type: string | ||||||
|                                           description: Specifies the output format |                                           description: Specifies the output format | ||||||
|                                             of the exposed resources, defaults to |                                             of the exposed resources, defaults to | ||||||
|                                             "1" |                                             "1" | ||||||
|                                           type: string |                                           pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                           x-kubernetes-int-or-string: true | ||||||
|                                         resource: |                                         resource: | ||||||
|                                           description: 'Required: resource to select' |                                           description: 'Required: resource to select' | ||||||
|                                           type: string |                                           type: string | ||||||
|  | @ -3595,6 +3631,10 @@ spec: | ||||||
|                               - containerPort |                               - containerPort | ||||||
|                               type: object |                               type: object | ||||||
|                             type: array |                             type: array | ||||||
|  |                             x-kubernetes-list-map-keys: | ||||||
|  |                             - containerPort | ||||||
|  |                             - protocol | ||||||
|  |                             x-kubernetes-list-type: map | ||||||
|                           readinessProbe: |                           readinessProbe: | ||||||
|                             description: 'Periodic probe of container service readiness. |                             description: 'Periodic probe of container service readiness. | ||||||
|                               Container will be removed from service endpoints if |                               Container will be removed from service endpoints if | ||||||
|  | @ -3720,13 +3760,21 @@ spec: | ||||||
|                             properties: |                             properties: | ||||||
|                               limits: |                               limits: | ||||||
|                                 additionalProperties: |                                 additionalProperties: | ||||||
|                                   type: string |                                   anyOf: | ||||||
|  |                                   - type: integer | ||||||
|  |                                   - type: string | ||||||
|  |                                   pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                   x-kubernetes-int-or-string: true | ||||||
|                                 description: 'Limits describes the maximum amount |                                 description: 'Limits describes the maximum amount | ||||||
|                                   of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' |                                   of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' | ||||||
|                                 type: object |                                 type: object | ||||||
|                               requests: |                               requests: | ||||||
|                                 additionalProperties: |                                 additionalProperties: | ||||||
|                                   type: string |                                   anyOf: | ||||||
|  |                                   - type: integer | ||||||
|  |                                   - type: string | ||||||
|  |                                   pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                   x-kubernetes-int-or-string: true | ||||||
|                                 description: 'Requests describes the minimum amount |                                 description: 'Requests describes the minimum amount | ||||||
|                                   of compute resources required. If Requests is omitted |                                   of compute resources required. If Requests is omitted | ||||||
|                                   for a container, it defaults to Limits if that is |                                   for a container, it defaults to Limits if that is | ||||||
|  | @ -4135,13 +4183,21 @@ spec: | ||||||
|                       properties: |                       properties: | ||||||
|                         limits: |                         limits: | ||||||
|                           additionalProperties: |                           additionalProperties: | ||||||
|                             type: string |                             anyOf: | ||||||
|  |                             - type: integer | ||||||
|  |                             - type: string | ||||||
|  |                             pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                             x-kubernetes-int-or-string: true | ||||||
|                           description: 'Limits describes the maximum amount of compute |                           description: 'Limits describes the maximum amount of compute | ||||||
|                             resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' |                             resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' | ||||||
|                           type: object |                           type: object | ||||||
|                         requests: |                         requests: | ||||||
|                           additionalProperties: |                           additionalProperties: | ||||||
|                             type: string |                             anyOf: | ||||||
|  |                             - type: integer | ||||||
|  |                             - type: string | ||||||
|  |                             pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                             x-kubernetes-int-or-string: true | ||||||
|                           description: 'Requests describes the minimum amount of compute |                           description: 'Requests describes the minimum amount of compute | ||||||
|                             resources required. If Requests is omitted for a container, |                             resources required. If Requests is omitted for a container, | ||||||
|                             it defaults to Limits if that is explicitly specified, |                             it defaults to Limits if that is explicitly specified, | ||||||
|  | @ -4385,10 +4441,14 @@ spec: | ||||||
|                                             volumes, optional for env vars' |                                             volumes, optional for env vars' | ||||||
|                                           type: string |                                           type: string | ||||||
|                                         divisor: |                                         divisor: | ||||||
|  |                                           anyOf: | ||||||
|  |                                           - type: integer | ||||||
|  |                                           - type: string | ||||||
|                                           description: Specifies the output format |                                           description: Specifies the output format | ||||||
|                                             of the exposed resources, defaults to |                                             of the exposed resources, defaults to | ||||||
|                                             "1" |                                             "1" | ||||||
|                                           type: string |                                           pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                           x-kubernetes-int-or-string: true | ||||||
|                                         resource: |                                         resource: | ||||||
|                                           description: 'Required: resource to select' |                                           description: 'Required: resource to select' | ||||||
|                                           type: string |                                           type: string | ||||||
|  | @ -4853,6 +4913,10 @@ spec: | ||||||
|                               - containerPort |                               - containerPort | ||||||
|                               type: object |                               type: object | ||||||
|                             type: array |                             type: array | ||||||
|  |                             x-kubernetes-list-map-keys: | ||||||
|  |                             - containerPort | ||||||
|  |                             - protocol | ||||||
|  |                             x-kubernetes-list-type: map | ||||||
|                           readinessProbe: |                           readinessProbe: | ||||||
|                             description: 'Periodic probe of container service readiness. |                             description: 'Periodic probe of container service readiness. | ||||||
|                               Container will be removed from service endpoints if |                               Container will be removed from service endpoints if | ||||||
|  | @ -4978,13 +5042,21 @@ spec: | ||||||
|                             properties: |                             properties: | ||||||
|                               limits: |                               limits: | ||||||
|                                 additionalProperties: |                                 additionalProperties: | ||||||
|                                   type: string |                                   anyOf: | ||||||
|  |                                   - type: integer | ||||||
|  |                                   - type: string | ||||||
|  |                                   pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                   x-kubernetes-int-or-string: true | ||||||
|                                 description: 'Limits describes the maximum amount |                                 description: 'Limits describes the maximum amount | ||||||
|                                   of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' |                                   of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' | ||||||
|                                 type: object |                                 type: object | ||||||
|                               requests: |                               requests: | ||||||
|                                 additionalProperties: |                                 additionalProperties: | ||||||
|                                   type: string |                                   anyOf: | ||||||
|  |                                   - type: integer | ||||||
|  |                                   - type: string | ||||||
|  |                                   pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                   x-kubernetes-int-or-string: true | ||||||
|                                 description: 'Requests describes the minimum amount |                                 description: 'Requests describes the minimum amount | ||||||
|                                   of compute resources required. If Requests is omitted |                                   of compute resources required. If Requests is omitted | ||||||
|                                   for a container, it defaults to Limits if that is |                                   for a container, it defaults to Limits if that is | ||||||
|  | @ -5800,10 +5872,14 @@ spec: | ||||||
|                                             volumes, optional for env vars' |                                             volumes, optional for env vars' | ||||||
|                                           type: string |                                           type: string | ||||||
|                                         divisor: |                                         divisor: | ||||||
|  |                                           anyOf: | ||||||
|  |                                           - type: integer | ||||||
|  |                                           - type: string | ||||||
|                                           description: Specifies the output format |                                           description: Specifies the output format | ||||||
|                                             of the exposed resources, defaults to |                                             of the exposed resources, defaults to | ||||||
|                                             "1" |                                             "1" | ||||||
|                                           type: string |                                           pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                           x-kubernetes-int-or-string: true | ||||||
|                                         resource: |                                         resource: | ||||||
|                                           description: 'Required: resource to select' |                                           description: 'Required: resource to select' | ||||||
|                                           type: string |                                           type: string | ||||||
|  | @ -5826,6 +5902,9 @@ spec: | ||||||
|                                   string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' |                                   string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' | ||||||
|                                 type: string |                                 type: string | ||||||
|                               sizeLimit: |                               sizeLimit: | ||||||
|  |                                 anyOf: | ||||||
|  |                                 - type: integer | ||||||
|  |                                 - type: string | ||||||
|                                 description: 'Total amount of local storage required |                                 description: 'Total amount of local storage required | ||||||
|                                   for this EmptyDir volume. The size limit is also |                                   for this EmptyDir volume. The size limit is also | ||||||
|                                   applicable for memory medium. The maximum usage |                                   applicable for memory medium. The maximum usage | ||||||
|  | @ -5834,7 +5913,8 @@ spec: | ||||||
|                                   of memory limits of all containers in a pod. The |                                   of memory limits of all containers in a pod. The | ||||||
|                                   default is nil which means that the limit is undefined. |                                   default is nil which means that the limit is undefined. | ||||||
|                                   More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' |                                   More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' | ||||||
|                                 type: string |                                 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                 x-kubernetes-int-or-string: true | ||||||
|                             type: object |                             type: object | ||||||
|                           fc: |                           fc: | ||||||
|                             description: FC represents a Fibre Channel resource that |                             description: FC represents a Fibre Channel resource that | ||||||
|  | @ -6321,10 +6401,14 @@ spec: | ||||||
|                                                       for env vars' |                                                       for env vars' | ||||||
|                                                     type: string |                                                     type: string | ||||||
|                                                   divisor: |                                                   divisor: | ||||||
|  |                                                     anyOf: | ||||||
|  |                                                     - type: integer | ||||||
|  |                                                     - type: string | ||||||
|                                                     description: Specifies the output |                                                     description: Specifies the output | ||||||
|                                                       format of the exposed resources, |                                                       format of the exposed resources, | ||||||
|                                                       defaults to "1" |                                                       defaults to "1" | ||||||
|                                                     type: string |                                                     pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                                     x-kubernetes-int-or-string: true | ||||||
|                                                   resource: |                                                   resource: | ||||||
|                                                     description: 'Required: resource |                                                     description: 'Required: resource | ||||||
|                                                       to select' |                                                       to select' | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1beta1 | ||||||
| kind: CustomResourceDefinition | kind: CustomResourceDefinition | ||||||
| metadata: | metadata: | ||||||
|   annotations: |   annotations: | ||||||
|     controller-gen.kubebuilder.io/version: v0.2.4 |     controller-gen.kubebuilder.io/version: v0.3.0 | ||||||
|   creationTimestamp: null |   creationTimestamp: null | ||||||
|   name: runners.actions.summerwind.dev |   name: runners.actions.summerwind.dev | ||||||
| spec: | spec: | ||||||
|  | @ -723,9 +723,13 @@ spec: | ||||||
|                                     optional for env vars' |                                     optional for env vars' | ||||||
|                                   type: string |                                   type: string | ||||||
|                                 divisor: |                                 divisor: | ||||||
|  |                                   anyOf: | ||||||
|  |                                   - type: integer | ||||||
|  |                                   - type: string | ||||||
|                                   description: Specifies the output format of the |                                   description: Specifies the output format of the | ||||||
|                                     exposed resources, defaults to "1" |                                     exposed resources, defaults to "1" | ||||||
|                                   type: string |                                   pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                   x-kubernetes-int-or-string: true | ||||||
|                                 resource: |                                 resource: | ||||||
|                                   description: 'Required: resource to select' |                                   description: 'Required: resource to select' | ||||||
|                                   type: string |                                   type: string | ||||||
|  | @ -1160,6 +1164,10 @@ spec: | ||||||
|                       - containerPort |                       - containerPort | ||||||
|                       type: object |                       type: object | ||||||
|                     type: array |                     type: array | ||||||
|  |                     x-kubernetes-list-map-keys: | ||||||
|  |                     - containerPort | ||||||
|  |                     - protocol | ||||||
|  |                     x-kubernetes-list-type: map | ||||||
|                   readinessProbe: |                   readinessProbe: | ||||||
|                     description: 'Periodic probe of container service readiness. Container |                     description: 'Periodic probe of container service readiness. Container | ||||||
|                       will be removed from service endpoints if the probe fails. Cannot |                       will be removed from service endpoints if the probe fails. Cannot | ||||||
|  | @ -1282,13 +1290,21 @@ spec: | ||||||
|                     properties: |                     properties: | ||||||
|                       limits: |                       limits: | ||||||
|                         additionalProperties: |                         additionalProperties: | ||||||
|                           type: string |                           anyOf: | ||||||
|  |                           - type: integer | ||||||
|  |                           - type: string | ||||||
|  |                           pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                           x-kubernetes-int-or-string: true | ||||||
|                         description: 'Limits describes the maximum amount of compute |                         description: 'Limits describes the maximum amount of compute | ||||||
|                           resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' |                           resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' | ||||||
|                         type: object |                         type: object | ||||||
|                       requests: |                       requests: | ||||||
|                         additionalProperties: |                         additionalProperties: | ||||||
|                           type: string |                           anyOf: | ||||||
|  |                           - type: integer | ||||||
|  |                           - type: string | ||||||
|  |                           pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                           x-kubernetes-int-or-string: true | ||||||
|                         description: 'Requests describes the minimum amount of compute |                         description: 'Requests describes the minimum amount of compute | ||||||
|                           resources required. If Requests is omitted for a container, |                           resources required. If Requests is omitted for a container, | ||||||
|                           it defaults to Limits if that is explicitly specified, otherwise |                           it defaults to Limits if that is explicitly specified, otherwise | ||||||
|  | @ -1722,9 +1738,13 @@ spec: | ||||||
|                               for env vars' |                               for env vars' | ||||||
|                             type: string |                             type: string | ||||||
|                           divisor: |                           divisor: | ||||||
|  |                             anyOf: | ||||||
|  |                             - type: integer | ||||||
|  |                             - type: string | ||||||
|                             description: Specifies the output format of the exposed |                             description: Specifies the output format of the exposed | ||||||
|                               resources, defaults to "1" |                               resources, defaults to "1" | ||||||
|                             type: string |                             pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                             x-kubernetes-int-or-string: true | ||||||
|                           resource: |                           resource: | ||||||
|                             description: 'Required: resource to select' |                             description: 'Required: resource to select' | ||||||
|                             type: string |                             type: string | ||||||
|  | @ -1894,9 +1914,13 @@ spec: | ||||||
|                                     optional for env vars' |                                     optional for env vars' | ||||||
|                                   type: string |                                   type: string | ||||||
|                                 divisor: |                                 divisor: | ||||||
|  |                                   anyOf: | ||||||
|  |                                   - type: integer | ||||||
|  |                                   - type: string | ||||||
|                                   description: Specifies the output format of the |                                   description: Specifies the output format of the | ||||||
|                                     exposed resources, defaults to "1" |                                     exposed resources, defaults to "1" | ||||||
|                                   type: string |                                   pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                   x-kubernetes-int-or-string: true | ||||||
|                                 resource: |                                 resource: | ||||||
|                                   description: 'Required: resource to select' |                                   description: 'Required: resource to select' | ||||||
|                                   type: string |                                   type: string | ||||||
|  | @ -2440,13 +2464,21 @@ spec: | ||||||
|                     properties: |                     properties: | ||||||
|                       limits: |                       limits: | ||||||
|                         additionalProperties: |                         additionalProperties: | ||||||
|                           type: string |                           anyOf: | ||||||
|  |                           - type: integer | ||||||
|  |                           - type: string | ||||||
|  |                           pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                           x-kubernetes-int-or-string: true | ||||||
|                         description: 'Limits describes the maximum amount of compute |                         description: 'Limits describes the maximum amount of compute | ||||||
|                           resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' |                           resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' | ||||||
|                         type: object |                         type: object | ||||||
|                       requests: |                       requests: | ||||||
|                         additionalProperties: |                         additionalProperties: | ||||||
|                           type: string |                           anyOf: | ||||||
|  |                           - type: integer | ||||||
|  |                           - type: string | ||||||
|  |                           pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                           x-kubernetes-int-or-string: true | ||||||
|                         description: 'Requests describes the minimum amount of compute |                         description: 'Requests describes the minimum amount of compute | ||||||
|                           resources required. If Requests is omitted for a container, |                           resources required. If Requests is omitted for a container, | ||||||
|                           it defaults to Limits if that is explicitly specified, otherwise |                           it defaults to Limits if that is explicitly specified, otherwise | ||||||
|  | @ -2930,9 +2962,13 @@ spec: | ||||||
|                                     optional for env vars' |                                     optional for env vars' | ||||||
|                                   type: string |                                   type: string | ||||||
|                                 divisor: |                                 divisor: | ||||||
|  |                                   anyOf: | ||||||
|  |                                   - type: integer | ||||||
|  |                                   - type: string | ||||||
|                                   description: Specifies the output format of the |                                   description: Specifies the output format of the | ||||||
|                                     exposed resources, defaults to "1" |                                     exposed resources, defaults to "1" | ||||||
|                                   type: string |                                   pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                   x-kubernetes-int-or-string: true | ||||||
|                                 resource: |                                 resource: | ||||||
|                                   description: 'Required: resource to select' |                                   description: 'Required: resource to select' | ||||||
|                                   type: string |                                   type: string | ||||||
|  | @ -3367,6 +3403,10 @@ spec: | ||||||
|                       - containerPort |                       - containerPort | ||||||
|                       type: object |                       type: object | ||||||
|                     type: array |                     type: array | ||||||
|  |                     x-kubernetes-list-map-keys: | ||||||
|  |                     - containerPort | ||||||
|  |                     - protocol | ||||||
|  |                     x-kubernetes-list-type: map | ||||||
|                   readinessProbe: |                   readinessProbe: | ||||||
|                     description: 'Periodic probe of container service readiness. Container |                     description: 'Periodic probe of container service readiness. Container | ||||||
|                       will be removed from service endpoints if the probe fails. Cannot |                       will be removed from service endpoints if the probe fails. Cannot | ||||||
|  | @ -3489,13 +3529,21 @@ spec: | ||||||
|                     properties: |                     properties: | ||||||
|                       limits: |                       limits: | ||||||
|                         additionalProperties: |                         additionalProperties: | ||||||
|                           type: string |                           anyOf: | ||||||
|  |                           - type: integer | ||||||
|  |                           - type: string | ||||||
|  |                           pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                           x-kubernetes-int-or-string: true | ||||||
|                         description: 'Limits describes the maximum amount of compute |                         description: 'Limits describes the maximum amount of compute | ||||||
|                           resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' |                           resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' | ||||||
|                         type: object |                         type: object | ||||||
|                       requests: |                       requests: | ||||||
|                         additionalProperties: |                         additionalProperties: | ||||||
|                           type: string |                           anyOf: | ||||||
|  |                           - type: integer | ||||||
|  |                           - type: string | ||||||
|  |                           pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                           x-kubernetes-int-or-string: true | ||||||
|                         description: 'Requests describes the minimum amount of compute |                         description: 'Requests describes the minimum amount of compute | ||||||
|                           resources required. If Requests is omitted for a container, |                           resources required. If Requests is omitted for a container, | ||||||
|                           it defaults to Limits if that is explicitly specified, otherwise |                           it defaults to Limits if that is explicitly specified, otherwise | ||||||
|  | @ -3883,13 +3931,21 @@ spec: | ||||||
|               properties: |               properties: | ||||||
|                 limits: |                 limits: | ||||||
|                   additionalProperties: |                   additionalProperties: | ||||||
|                     type: string |                     anyOf: | ||||||
|  |                     - type: integer | ||||||
|  |                     - type: string | ||||||
|  |                     pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                     x-kubernetes-int-or-string: true | ||||||
|                   description: 'Limits describes the maximum amount of compute resources |                   description: 'Limits describes the maximum amount of compute resources | ||||||
|                     allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' |                     allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' | ||||||
|                   type: object |                   type: object | ||||||
|                 requests: |                 requests: | ||||||
|                   additionalProperties: |                   additionalProperties: | ||||||
|                     type: string |                     anyOf: | ||||||
|  |                     - type: integer | ||||||
|  |                     - type: string | ||||||
|  |                     pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                     x-kubernetes-int-or-string: true | ||||||
|                   description: 'Requests describes the minimum amount of compute resources |                   description: 'Requests describes the minimum amount of compute resources | ||||||
|                     required. If Requests is omitted for a container, it defaults |                     required. If Requests is omitted for a container, it defaults | ||||||
|                     to Limits if that is explicitly specified, otherwise to an implementation-defined |                     to Limits if that is explicitly specified, otherwise to an implementation-defined | ||||||
|  | @ -4118,9 +4174,13 @@ spec: | ||||||
|                                     optional for env vars' |                                     optional for env vars' | ||||||
|                                   type: string |                                   type: string | ||||||
|                                 divisor: |                                 divisor: | ||||||
|  |                                   anyOf: | ||||||
|  |                                   - type: integer | ||||||
|  |                                   - type: string | ||||||
|                                   description: Specifies the output format of the |                                   description: Specifies the output format of the | ||||||
|                                     exposed resources, defaults to "1" |                                     exposed resources, defaults to "1" | ||||||
|                                   type: string |                                   pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                   x-kubernetes-int-or-string: true | ||||||
|                                 resource: |                                 resource: | ||||||
|                                   description: 'Required: resource to select' |                                   description: 'Required: resource to select' | ||||||
|                                   type: string |                                   type: string | ||||||
|  | @ -4555,6 +4615,10 @@ spec: | ||||||
|                       - containerPort |                       - containerPort | ||||||
|                       type: object |                       type: object | ||||||
|                     type: array |                     type: array | ||||||
|  |                     x-kubernetes-list-map-keys: | ||||||
|  |                     - containerPort | ||||||
|  |                     - protocol | ||||||
|  |                     x-kubernetes-list-type: map | ||||||
|                   readinessProbe: |                   readinessProbe: | ||||||
|                     description: 'Periodic probe of container service readiness. Container |                     description: 'Periodic probe of container service readiness. Container | ||||||
|                       will be removed from service endpoints if the probe fails. Cannot |                       will be removed from service endpoints if the probe fails. Cannot | ||||||
|  | @ -4677,13 +4741,21 @@ spec: | ||||||
|                     properties: |                     properties: | ||||||
|                       limits: |                       limits: | ||||||
|                         additionalProperties: |                         additionalProperties: | ||||||
|                           type: string |                           anyOf: | ||||||
|  |                           - type: integer | ||||||
|  |                           - type: string | ||||||
|  |                           pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                           x-kubernetes-int-or-string: true | ||||||
|                         description: 'Limits describes the maximum amount of compute |                         description: 'Limits describes the maximum amount of compute | ||||||
|                           resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' |                           resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' | ||||||
|                         type: object |                         type: object | ||||||
|                       requests: |                       requests: | ||||||
|                         additionalProperties: |                         additionalProperties: | ||||||
|                           type: string |                           anyOf: | ||||||
|  |                           - type: integer | ||||||
|  |                           - type: string | ||||||
|  |                           pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                           x-kubernetes-int-or-string: true | ||||||
|                         description: 'Requests describes the minimum amount of compute |                         description: 'Requests describes the minimum amount of compute | ||||||
|                           resources required. If Requests is omitted for a container, |                           resources required. If Requests is omitted for a container, | ||||||
|                           it defaults to Limits if that is explicitly specified, otherwise |                           it defaults to Limits if that is explicitly specified, otherwise | ||||||
|  | @ -5451,9 +5523,13 @@ spec: | ||||||
|                                     optional for env vars' |                                     optional for env vars' | ||||||
|                                   type: string |                                   type: string | ||||||
|                                 divisor: |                                 divisor: | ||||||
|  |                                   anyOf: | ||||||
|  |                                   - type: integer | ||||||
|  |                                   - type: string | ||||||
|                                   description: Specifies the output format of the |                                   description: Specifies the output format of the | ||||||
|                                     exposed resources, defaults to "1" |                                     exposed resources, defaults to "1" | ||||||
|                                   type: string |                                   pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                   x-kubernetes-int-or-string: true | ||||||
|                                 resource: |                                 resource: | ||||||
|                                   description: 'Required: resource to select' |                                   description: 'Required: resource to select' | ||||||
|                                   type: string |                                   type: string | ||||||
|  | @ -5476,6 +5552,9 @@ spec: | ||||||
|                           More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' |                           More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' | ||||||
|                         type: string |                         type: string | ||||||
|                       sizeLimit: |                       sizeLimit: | ||||||
|  |                         anyOf: | ||||||
|  |                         - type: integer | ||||||
|  |                         - type: string | ||||||
|                         description: 'Total amount of local storage required for this |                         description: 'Total amount of local storage required for this | ||||||
|                           EmptyDir volume. The size limit is also applicable for memory |                           EmptyDir volume. The size limit is also applicable for memory | ||||||
|                           medium. The maximum usage on memory medium EmptyDir would |                           medium. The maximum usage on memory medium EmptyDir would | ||||||
|  | @ -5483,7 +5562,8 @@ spec: | ||||||
|                           and the sum of memory limits of all containers in a pod. |                           and the sum of memory limits of all containers in a pod. | ||||||
|                           The default is nil which means that the limit is undefined. |                           The default is nil which means that the limit is undefined. | ||||||
|                           More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' |                           More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' | ||||||
|                         type: string |                         pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                         x-kubernetes-int-or-string: true | ||||||
|                     type: object |                     type: object | ||||||
|                   fc: |                   fc: | ||||||
|                     description: FC represents a Fibre Channel resource that is attached |                     description: FC represents a Fibre Channel resource that is attached | ||||||
|  | @ -5940,10 +6020,14 @@ spec: | ||||||
|                                               for volumes, optional for env vars' |                                               for volumes, optional for env vars' | ||||||
|                                             type: string |                                             type: string | ||||||
|                                           divisor: |                                           divisor: | ||||||
|  |                                             anyOf: | ||||||
|  |                                             - type: integer | ||||||
|  |                                             - type: string | ||||||
|                                             description: Specifies the output format |                                             description: Specifies the output format | ||||||
|                                               of the exposed resources, defaults to |                                               of the exposed resources, defaults to | ||||||
|                                               "1" |                                               "1" | ||||||
|                                             type: string |                                             pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||||||
|  |                                             x-kubernetes-int-or-string: true | ||||||
|                                           resource: |                                           resource: | ||||||
|                                             description: 'Required: resource to select' |                                             description: 'Required: resource to select' | ||||||
|                                             type: string |                                             type: string | ||||||
|  |  | ||||||
|  | @ -2,9 +2,10 @@ package controllers | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"context" | 	"context" | ||||||
| 	"github.com/summerwind/actions-runner-controller/github/fake" |  | ||||||
| 	"time" | 	"time" | ||||||
| 
 | 
 | ||||||
|  | 	"github.com/summerwind/actions-runner-controller/github/fake" | ||||||
|  | 
 | ||||||
| 	corev1 "k8s.io/api/core/v1" | 	corev1 "k8s.io/api/core/v1" | ||||||
| 	"k8s.io/apimachinery/pkg/types" | 	"k8s.io/apimachinery/pkg/types" | ||||||
| 	"k8s.io/client-go/kubernetes/scheme" | 	"k8s.io/client-go/kubernetes/scheme" | ||||||
|  | @ -44,7 +45,7 @@ func SetupIntegrationTest(ctx context.Context) *testEnvironment { | ||||||
| 		Status: 200, | 		Status: 200, | ||||||
| 		Body:   workflowRunsFor3Replicas, | 		Body:   workflowRunsFor3Replicas, | ||||||
| 	} | 	} | ||||||
| 	server := fake.NewServer(fake.WithFixedResponses(responses)) | 	fakeGithubServer := fake.NewServer(fake.WithFixedResponses(responses)) | ||||||
| 
 | 
 | ||||||
| 	BeforeEach(func() { | 	BeforeEach(func() { | ||||||
| 		stopCh = make(chan struct{}) | 		stopCh = make(chan struct{}) | ||||||
|  | @ -58,11 +59,16 @@ func SetupIntegrationTest(ctx context.Context) *testEnvironment { | ||||||
| 		mgr, err := ctrl.NewManager(cfg, ctrl.Options{}) | 		mgr, err := ctrl.NewManager(cfg, ctrl.Options{}) | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "failed to create manager") | 		Expect(err).NotTo(HaveOccurred(), "failed to create manager") | ||||||
| 
 | 
 | ||||||
|  | 		runnersList = fake.NewRunnersList() | ||||||
|  | 		server = runnersList.GetServer() | ||||||
|  | 		ghClient := newGithubClient(server) | ||||||
|  | 
 | ||||||
| 		replicasetController := &RunnerReplicaSetReconciler{ | 		replicasetController := &RunnerReplicaSetReconciler{ | ||||||
| 			Client:       mgr.GetClient(), | 			Client:       mgr.GetClient(), | ||||||
| 			Scheme:       scheme.Scheme, | 			Scheme:       scheme.Scheme, | ||||||
| 			Log:          logf.Log, | 			Log:          logf.Log, | ||||||
| 			Recorder:     mgr.GetEventRecorderFor("runnerreplicaset-controller"), | 			Recorder:     mgr.GetEventRecorderFor("runnerreplicaset-controller"), | ||||||
|  | 			GitHubClient: ghClient, | ||||||
| 		} | 		} | ||||||
| 		err = replicasetController.SetupWithManager(mgr) | 		err = replicasetController.SetupWithManager(mgr) | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "failed to setup controller") | 		Expect(err).NotTo(HaveOccurred(), "failed to setup controller") | ||||||
|  | @ -76,7 +82,7 @@ func SetupIntegrationTest(ctx context.Context) *testEnvironment { | ||||||
| 		err = deploymentsController.SetupWithManager(mgr) | 		err = deploymentsController.SetupWithManager(mgr) | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "failed to setup controller") | 		Expect(err).NotTo(HaveOccurred(), "failed to setup controller") | ||||||
| 
 | 
 | ||||||
| 		client := newGithubClient(server) | 		client := newGithubClient(fakeGithubServer) | ||||||
| 
 | 
 | ||||||
| 		autoscalerController := &HorizontalRunnerAutoscalerReconciler{ | 		autoscalerController := &HorizontalRunnerAutoscalerReconciler{ | ||||||
| 			Client:       mgr.GetClient(), | 			Client:       mgr.GetClient(), | ||||||
|  | @ -99,7 +105,7 @@ func SetupIntegrationTest(ctx context.Context) *testEnvironment { | ||||||
| 	AfterEach(func() { | 	AfterEach(func() { | ||||||
| 		close(stopCh) | 		close(stopCh) | ||||||
| 
 | 
 | ||||||
| 		server.Close() | 		fakeGithubServer.Close() | ||||||
| 
 | 
 | ||||||
| 		err := k8sClient.Delete(ctx, ns) | 		err := k8sClient.Delete(ctx, ns) | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "failed to delete test namespace") | 		Expect(err).NotTo(HaveOccurred(), "failed to delete test namespace") | ||||||
|  |  | ||||||
|  | @ -203,12 +203,16 @@ func (r *RunnerReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) { | ||||||
| 			return ctrl.Result{}, err | 			return ctrl.Result{}, err | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		if pod.Spec.Containers[0].Image != newPod.Spec.Containers[0].Image { | 		runnerBusy, err := r.isRunnerBusy(ctx, runner.Spec.Organization, runner.Spec.Repository, runner.Name) | ||||||
| 			restart = true | 		if err != nil { | ||||||
| 		} | 			log.Error(err, "Failed to check if runner is busy") | ||||||
| 		if !reflect.DeepEqual(pod.Spec.Containers[0].Env, newPod.Spec.Containers[0].Env) { | 			return ctrl.Result{}, nil | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		if !runnerBusy && (!reflect.DeepEqual(pod.Spec.Containers[0].Env, newPod.Spec.Containers[0].Env) || pod.Spec.Containers[0].Image != newPod.Spec.Containers[0].Image) { | ||||||
| 			restart = true | 			restart = true | ||||||
| 		} | 		} | ||||||
|  | 
 | ||||||
| 		if !restart { | 		if !restart { | ||||||
| 			return ctrl.Result{}, err | 			return ctrl.Result{}, err | ||||||
| 		} | 		} | ||||||
|  | @ -225,6 +229,21 @@ func (r *RunnerReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) { | ||||||
| 	return ctrl.Result{}, nil | 	return ctrl.Result{}, nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func (r *RunnerReconciler) isRunnerBusy(ctx context.Context, org, repo, name string) (bool, error) { | ||||||
|  | 	runners, err := r.GitHubClient.ListRunners(ctx, org, repo) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return false, err | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	for _, runner := range runners { | ||||||
|  | 		if runner.GetName() == name { | ||||||
|  | 			return runner.GetBusy(), nil | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return false, fmt.Errorf("runner not found") | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func (r *RunnerReconciler) unregisterRunner(ctx context.Context, org, repo, name string) (bool, error) { | func (r *RunnerReconciler) unregisterRunner(ctx context.Context, org, repo, name string) (bool, error) { | ||||||
| 	runners, err := r.GitHubClient.ListRunners(ctx, org, repo) | 	runners, err := r.GitHubClient.ListRunners(ctx, org, repo) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
|  | @ -234,6 +253,9 @@ func (r *RunnerReconciler) unregisterRunner(ctx context.Context, org, repo, name | ||||||
| 	id := int64(0) | 	id := int64(0) | ||||||
| 	for _, runner := range runners { | 	for _, runner := range runners { | ||||||
| 		if runner.GetName() == name { | 		if runner.GetName() == name { | ||||||
|  | 			if runner.GetBusy() { | ||||||
|  | 				return false, fmt.Errorf("runner is busy") | ||||||
|  | 			} | ||||||
| 			id = runner.GetID() | 			id = runner.GetID() | ||||||
| 			break | 			break | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | @ -31,6 +31,7 @@ import ( | ||||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||||
| 
 | 
 | ||||||
| 	"github.com/summerwind/actions-runner-controller/api/v1alpha1" | 	"github.com/summerwind/actions-runner-controller/api/v1alpha1" | ||||||
|  | 	"github.com/summerwind/actions-runner-controller/github" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| // RunnerReplicaSetReconciler reconciles a Runner object
 | // RunnerReplicaSetReconciler reconciles a Runner object
 | ||||||
|  | @ -39,6 +40,7 @@ type RunnerReplicaSetReconciler struct { | ||||||
| 	Log          logr.Logger | 	Log          logr.Logger | ||||||
| 	Recorder     record.EventRecorder | 	Recorder     record.EventRecorder | ||||||
| 	Scheme       *runtime.Scheme | 	Scheme       *runtime.Scheme | ||||||
|  | 	GitHubClient *github.Client | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // +kubebuilder:rbac:groups=actions.summerwind.dev,resources=runnerreplicasets,verbs=get;list;watch;create;update;patch;delete
 | // +kubebuilder:rbac:groups=actions.summerwind.dev,resources=runnerreplicasets,verbs=get;list;watch;create;update;patch;delete
 | ||||||
|  | @ -96,8 +98,25 @@ func (r *RunnerReplicaSetReconciler) Reconcile(req ctrl.Request) (ctrl.Result, e | ||||||
| 	if available > desired { | 	if available > desired { | ||||||
| 		n := available - desired | 		n := available - desired | ||||||
| 
 | 
 | ||||||
|  | 		// get runners that are currently not busy
 | ||||||
|  | 		var notBusy []v1alpha1.Runner | ||||||
|  | 		for _, runner := range myRunners { | ||||||
|  | 			busy, err := r.isRunnerBusy(ctx, runner.Spec.Organization, runner.Spec.Repository, runner.Name) | ||||||
|  | 			if err != nil { | ||||||
|  | 				log.Error(err, "Failed to check if runner is busy") | ||||||
|  | 				return ctrl.Result{}, err | ||||||
|  | 			} | ||||||
|  | 			if !busy { | ||||||
|  | 				notBusy = append(notBusy, runner) | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		if len(notBusy) < n { | ||||||
|  | 			n = len(notBusy) | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
| 		for i := 0; i < n; i++ { | 		for i := 0; i < n; i++ { | ||||||
| 			if err := r.Client.Delete(ctx, &myRunners[i]); err != nil { | 			if err := r.Client.Delete(ctx, ¬Busy[i]); err != nil { | ||||||
| 				log.Error(err, "Failed to delete runner resource") | 				log.Error(err, "Failed to delete runner resource") | ||||||
| 
 | 
 | ||||||
| 				return ctrl.Result{}, err | 				return ctrl.Result{}, err | ||||||
|  | @ -166,3 +185,19 @@ func (r *RunnerReplicaSetReconciler) SetupWithManager(mgr ctrl.Manager) error { | ||||||
| 		Owns(&v1alpha1.Runner{}). | 		Owns(&v1alpha1.Runner{}). | ||||||
| 		Complete(r) | 		Complete(r) | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | func (r *RunnerReplicaSetReconciler) isRunnerBusy(ctx context.Context, org, repo, name string) (bool, error) { | ||||||
|  | 	runners, err := r.GitHubClient.ListRunners(ctx, org, repo) | ||||||
|  | 	r.Log.Info("runners", "github", runners) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return false, err | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	for _, runner := range runners { | ||||||
|  | 		if runner.GetName() == name { | ||||||
|  | 			return runner.GetBusy(), nil | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return false, fmt.Errorf("runner not found") | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -3,11 +3,14 @@ package controllers | ||||||
| import ( | import ( | ||||||
| 	"context" | 	"context" | ||||||
| 	"math/rand" | 	"math/rand" | ||||||
|  | 	"net/http/httptest" | ||||||
| 	"time" | 	"time" | ||||||
| 
 | 
 | ||||||
|  | 	"github.com/google/go-github/v32/github" | ||||||
| 	corev1 "k8s.io/api/core/v1" | 	corev1 "k8s.io/api/core/v1" | ||||||
| 	"k8s.io/apimachinery/pkg/types" | 	"k8s.io/apimachinery/pkg/types" | ||||||
| 	"k8s.io/client-go/kubernetes/scheme" | 	"k8s.io/client-go/kubernetes/scheme" | ||||||
|  | 	"k8s.io/utils/pointer" | ||||||
| 	ctrl "sigs.k8s.io/controller-runtime" | 	ctrl "sigs.k8s.io/controller-runtime" | ||||||
| 	logf "sigs.k8s.io/controller-runtime/pkg/log" | 	logf "sigs.k8s.io/controller-runtime/pkg/log" | ||||||
| 
 | 
 | ||||||
|  | @ -17,6 +20,12 @@ import ( | ||||||
| 	"sigs.k8s.io/controller-runtime/pkg/client" | 	"sigs.k8s.io/controller-runtime/pkg/client" | ||||||
| 
 | 
 | ||||||
| 	actionsv1alpha1 "github.com/summerwind/actions-runner-controller/api/v1alpha1" | 	actionsv1alpha1 "github.com/summerwind/actions-runner-controller/api/v1alpha1" | ||||||
|  | 	"github.com/summerwind/actions-runner-controller/github/fake" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | var ( | ||||||
|  | 	runnersList *fake.RunnersList | ||||||
|  | 	server      *httptest.Server | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| // SetupTest will set up a testing environment.
 | // SetupTest will set up a testing environment.
 | ||||||
|  | @ -41,11 +50,16 @@ func SetupTest(ctx context.Context) *corev1.Namespace { | ||||||
| 		mgr, err := ctrl.NewManager(cfg, ctrl.Options{}) | 		mgr, err := ctrl.NewManager(cfg, ctrl.Options{}) | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "failed to create manager") | 		Expect(err).NotTo(HaveOccurred(), "failed to create manager") | ||||||
| 
 | 
 | ||||||
|  | 		runnersList = fake.NewRunnersList() | ||||||
|  | 		server = runnersList.GetServer() | ||||||
|  | 		ghClient := newGithubClient(server) | ||||||
|  | 
 | ||||||
| 		controller := &RunnerReplicaSetReconciler{ | 		controller := &RunnerReplicaSetReconciler{ | ||||||
| 			Client:       mgr.GetClient(), | 			Client:       mgr.GetClient(), | ||||||
| 			Scheme:       scheme.Scheme, | 			Scheme:       scheme.Scheme, | ||||||
| 			Log:          logf.Log, | 			Log:          logf.Log, | ||||||
| 			Recorder:     mgr.GetEventRecorderFor("runnerreplicaset-controller"), | 			Recorder:     mgr.GetEventRecorderFor("runnerreplicaset-controller"), | ||||||
|  | 			GitHubClient: ghClient, | ||||||
| 		} | 		} | ||||||
| 		err = controller.SetupWithManager(mgr) | 		err = controller.SetupWithManager(mgr) | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "failed to setup controller") | 		Expect(err).NotTo(HaveOccurred(), "failed to setup controller") | ||||||
|  | @ -61,6 +75,7 @@ func SetupTest(ctx context.Context) *corev1.Namespace { | ||||||
| 	AfterEach(func() { | 	AfterEach(func() { | ||||||
| 		close(stopCh) | 		close(stopCh) | ||||||
| 
 | 
 | ||||||
|  | 		server.Close() | ||||||
| 		err := k8sClient.Delete(ctx, ns) | 		err := k8sClient.Delete(ctx, ns) | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "failed to delete test namespace") | 		Expect(err).NotTo(HaveOccurred(), "failed to delete test namespace") | ||||||
| 	}) | 	}) | ||||||
|  | @ -124,6 +139,16 @@ var _ = Context("Inside of a new namespace", func() { | ||||||
| 							logf.Log.Error(err, "list runners") | 							logf.Log.Error(err, "list runners") | ||||||
| 						} | 						} | ||||||
| 
 | 
 | ||||||
|  | 						for i, runner := range runners.Items { | ||||||
|  | 							runnersList.Add(&github.Runner{ | ||||||
|  | 								ID:     pointer.Int64Ptr(int64(i) + 1), | ||||||
|  | 								Name:   pointer.StringPtr(runner.Name), | ||||||
|  | 								OS:     pointer.StringPtr("linux"), | ||||||
|  | 								Status: pointer.StringPtr("online"), | ||||||
|  | 								Busy:   pointer.BoolPtr(false), | ||||||
|  | 							}) | ||||||
|  | 						} | ||||||
|  | 
 | ||||||
| 						return len(runners.Items) | 						return len(runners.Items) | ||||||
| 					}, | 					}, | ||||||
| 					time.Second*5, time.Millisecond*500).Should(BeEquivalentTo(1)) | 					time.Second*5, time.Millisecond*500).Should(BeEquivalentTo(1)) | ||||||
|  | @ -155,6 +180,16 @@ var _ = Context("Inside of a new namespace", func() { | ||||||
| 							logf.Log.Error(err, "list runners") | 							logf.Log.Error(err, "list runners") | ||||||
| 						} | 						} | ||||||
| 
 | 
 | ||||||
|  | 						for i, runner := range runners.Items { | ||||||
|  | 							runnersList.Add(&github.Runner{ | ||||||
|  | 								ID:     pointer.Int64Ptr(int64(i) + 1), | ||||||
|  | 								Name:   pointer.StringPtr(runner.Name), | ||||||
|  | 								OS:     pointer.StringPtr("linux"), | ||||||
|  | 								Status: pointer.StringPtr("online"), | ||||||
|  | 								Busy:   pointer.BoolPtr(false), | ||||||
|  | 							}) | ||||||
|  | 						} | ||||||
|  | 
 | ||||||
| 						return len(runners.Items) | 						return len(runners.Items) | ||||||
| 					}, | 					}, | ||||||
| 					time.Second*5, time.Millisecond*500).Should(BeEquivalentTo(2)) | 					time.Second*5, time.Millisecond*500).Should(BeEquivalentTo(2)) | ||||||
|  | @ -186,6 +221,16 @@ var _ = Context("Inside of a new namespace", func() { | ||||||
| 							logf.Log.Error(err, "list runners") | 							logf.Log.Error(err, "list runners") | ||||||
| 						} | 						} | ||||||
| 
 | 
 | ||||||
|  | 						for i, runner := range runners.Items { | ||||||
|  | 							runnersList.Add(&github.Runner{ | ||||||
|  | 								ID:     pointer.Int64Ptr(int64(i) + 1), | ||||||
|  | 								Name:   pointer.StringPtr(runner.Name), | ||||||
|  | 								OS:     pointer.StringPtr("linux"), | ||||||
|  | 								Status: pointer.StringPtr("online"), | ||||||
|  | 								Busy:   pointer.BoolPtr(false), | ||||||
|  | 							}) | ||||||
|  | 						} | ||||||
|  | 
 | ||||||
| 						return len(runners.Items) | 						return len(runners.Items) | ||||||
| 					}, | 					}, | ||||||
| 					time.Second*5, time.Millisecond*500).Should(BeEquivalentTo(0)) | 					time.Second*5, time.Millisecond*500).Should(BeEquivalentTo(0)) | ||||||
|  |  | ||||||
|  | @ -14,8 +14,8 @@ const ( | ||||||
| { | { | ||||||
|   "total_count": 2, |   "total_count": 2, | ||||||
|   "runners": [ |   "runners": [ | ||||||
|     {"id": 1, "name": "test1", "os": "linux", "status": "online"}, |     {"id": 1, "name": "test1", "os": "linux", "status": "online", "busy": false}, | ||||||
|     {"id": 2, "name": "test2", "os": "linux", "status": "offline"} |     {"id": 2, "name": "test2", "os": "linux", "status": "offline", "busy": false} | ||||||
|   ] |   ] | ||||||
| } | } | ||||||
| ` | ` | ||||||
|  |  | ||||||
|  | @ -0,0 +1,74 @@ | ||||||
|  | package fake | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"encoding/json" | ||||||
|  | 	"net/http" | ||||||
|  | 	"net/http/httptest" | ||||||
|  | 	"strconv" | ||||||
|  | 
 | ||||||
|  | 	"github.com/google/go-github/v32/github" | ||||||
|  | 	"github.com/gorilla/mux" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | type RunnersList struct { | ||||||
|  | 	runners []*github.Runner | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func NewRunnersList() *RunnersList { | ||||||
|  | 	return &RunnersList{ | ||||||
|  | 		runners: make([]*github.Runner, 0), | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (r *RunnersList) Add(runner *github.Runner) { | ||||||
|  | 	if !exists(r.runners, runner) { | ||||||
|  | 		r.runners = append(r.runners, runner) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (r *RunnersList) GetServer() *httptest.Server { | ||||||
|  | 	router := mux.NewRouter() | ||||||
|  | 
 | ||||||
|  | 	router.Handle("/repos/{owner}/{repo}/actions/runners", r.handleList()) | ||||||
|  | 	router.Handle("/repos/{owner}/{repo}/actions/runners/{id}", r.handleRemove()) | ||||||
|  | 	router.Handle("/orgs/{org}/actions/runners", r.handleList()) | ||||||
|  | 	router.Handle("/orgs/{org}/actions/runners/{id}", r.handleRemove()) | ||||||
|  | 
 | ||||||
|  | 	return httptest.NewServer(router) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (r *RunnersList) handleList() http.HandlerFunc { | ||||||
|  | 	return func(w http.ResponseWriter, res *http.Request) { | ||||||
|  | 		j, err := json.Marshal(github.Runners{ | ||||||
|  | 			TotalCount: len(r.runners), | ||||||
|  | 			Runners:    r.runners, | ||||||
|  | 		}) | ||||||
|  | 		if err != nil { | ||||||
|  | 			panic(err) | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		w.WriteHeader(http.StatusOK) | ||||||
|  | 		w.Write(j) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (r *RunnersList) handleRemove() http.HandlerFunc { | ||||||
|  | 	return func(w http.ResponseWriter, res *http.Request) { | ||||||
|  | 		vars := mux.Vars(res) | ||||||
|  | 		for i, runner := range r.runners { | ||||||
|  | 			if runner.ID != nil && vars["id"] == strconv.FormatInt(*runner.ID, 10) { | ||||||
|  | 				r.runners = append(r.runners[:i], r.runners[i+1:]...) | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		w.WriteHeader(http.StatusOK) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func exists(runners []*github.Runner, runner *github.Runner) bool { | ||||||
|  | 	for _, r := range runners { | ||||||
|  | 		if *r.Name == *runner.Name { | ||||||
|  | 			return true | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	return false | ||||||
|  | } | ||||||
|  | @ -9,7 +9,7 @@ import ( | ||||||
| 	"time" | 	"time" | ||||||
| 
 | 
 | ||||||
| 	"github.com/bradleyfalzon/ghinstallation" | 	"github.com/bradleyfalzon/ghinstallation" | ||||||
| 	"github.com/google/go-github/v31/github" | 	"github.com/google/go-github/v32/github" | ||||||
| 	"golang.org/x/oauth2" | 	"golang.org/x/oauth2" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | @ -85,7 +85,7 @@ func (c *Client) GetRegistrationToken(ctx context.Context, org, repo, name strin | ||||||
| 	return rt, nil | 	return rt, nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // RemoveRunner removes a runner with specified runner ID from repocitory.
 | // RemoveRunner removes a runner with specified runner ID from repository.
 | ||||||
| func (c *Client) RemoveRunner(ctx context.Context, org, repo string, runnerID int64) error { | func (c *Client) RemoveRunner(ctx context.Context, org, repo string, runnerID int64) error { | ||||||
| 	owner, repo, err := getOwnerAndRepo(org, repo) | 	owner, repo, err := getOwnerAndRepo(org, repo) | ||||||
| 
 | 
 | ||||||
|  | @ -121,7 +121,7 @@ func (c *Client) ListRunners(ctx context.Context, org, repo string) ([]*github.R | ||||||
| 		list, res, err := c.listRunners(ctx, owner, repo, &opts) | 		list, res, err := c.listRunners(ctx, owner, repo, &opts) | ||||||
| 
 | 
 | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return runners, fmt.Errorf("failed to remove runner: %v", err) | 			return runners, fmt.Errorf("failed to list runners: %v", err) | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		runners = append(runners, list.Runners...) | 		runners = append(runners, list.Runners...) | ||||||
|  |  | ||||||
|  | @ -10,7 +10,7 @@ import ( | ||||||
| 	"net/url" | 	"net/url" | ||||||
| 	"reflect" | 	"reflect" | ||||||
| 
 | 
 | ||||||
| 	"github.com/google/go-github/v31/github" | 	"github.com/google/go-github/v32/github" | ||||||
| 	"github.com/google/go-querystring/query" | 	"github.com/google/go-querystring/query" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ import ( | ||||||
| 	"testing" | 	"testing" | ||||||
| 	"time" | 	"time" | ||||||
| 
 | 
 | ||||||
| 	"github.com/google/go-github/v31/github" | 	"github.com/google/go-github/v32/github" | ||||||
| 	"github.com/summerwind/actions-runner-controller/github/fake" | 	"github.com/summerwind/actions-runner-controller/github/fake" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | @ -41,9 +41,9 @@ func TestGetRegistrationToken(t *testing.T) { | ||||||
| 		token string | 		token string | ||||||
| 		err   bool | 		err   bool | ||||||
| 	}{ | 	}{ | ||||||
| 		{org: "test", repo: "valid", token: fake.RegistrationToken, err: false}, | 		{org: "", repo: "test/valid", token: fake.RegistrationToken, err: false}, | ||||||
| 		{org: "test", repo: "invalid", token: "", err: true}, | 		{org: "", repo: "test/invalid", token: "", err: true}, | ||||||
| 		{org: "test", repo: "error", token: "", err: true}, | 		{org: "", repo: "test/error", token: "", err: true}, | ||||||
| 		{org: "test", repo: "", token: fake.RegistrationToken, err: false}, | 		{org: "test", repo: "", token: fake.RegistrationToken, err: false}, | ||||||
| 		{org: "invalid", repo: "", token: "", err: true}, | 		{org: "invalid", repo: "", token: "", err: true}, | ||||||
| 		{org: "error", repo: "", token: "", err: true}, | 		{org: "error", repo: "", token: "", err: true}, | ||||||
|  | @ -68,9 +68,9 @@ func TestListRunners(t *testing.T) { | ||||||
| 		length int | 		length int | ||||||
| 		err    bool | 		err    bool | ||||||
| 	}{ | 	}{ | ||||||
| 		{org: "test", repo: "valid", length: 2, err: false}, | 		{org: "", repo: "test/valid", length: 2, err: false}, | ||||||
| 		{org: "test", repo: "invalid", length: 0, err: true}, | 		{org: "", repo: "test/invalid", length: 0, err: true}, | ||||||
| 		{org: "test", repo: "error", length: 0, err: true}, | 		{org: "", repo: "test/error", length: 0, err: true}, | ||||||
| 		{org: "test", repo: "", length: 2, err: false}, | 		{org: "test", repo: "", length: 2, err: false}, | ||||||
| 		{org: "invalid", repo: "", length: 0, err: true}, | 		{org: "invalid", repo: "", length: 0, err: true}, | ||||||
| 		{org: "error", repo: "", length: 0, err: true}, | 		{org: "error", repo: "", length: 0, err: true}, | ||||||
|  | @ -94,9 +94,9 @@ func TestRemoveRunner(t *testing.T) { | ||||||
| 		repo string | 		repo string | ||||||
| 		err  bool | 		err  bool | ||||||
| 	}{ | 	}{ | ||||||
| 		{org: "test", repo: "valid", err: false}, | 		{org: "", repo: "test/valid", err: false}, | ||||||
| 		{org: "test", repo: "invalid", err: true}, | 		{org: "", repo: "test/invalid", err: true}, | ||||||
| 		{org: "test", repo: "error", err: true}, | 		{org: "", repo: "test/error", err: true}, | ||||||
| 		{org: "test", repo: "", err: false}, | 		{org: "test", repo: "", err: false}, | ||||||
| 		{org: "invalid", repo: "", err: true}, | 		{org: "invalid", repo: "", err: true}, | ||||||
| 		{org: "error", repo: "", err: true}, | 		{org: "error", repo: "", err: true}, | ||||||
|  |  | ||||||
							
								
								
									
										5
									
								
								go.mod
								
								
								
								
							
							
						
						
									
										5
									
								
								go.mod
								
								
								
								
							|  | @ -6,8 +6,9 @@ require ( | ||||||
| 	github.com/bradleyfalzon/ghinstallation v1.1.1 | 	github.com/bradleyfalzon/ghinstallation v1.1.1 | ||||||
| 	github.com/davecgh/go-spew v1.1.1 | 	github.com/davecgh/go-spew v1.1.1 | ||||||
| 	github.com/go-logr/logr v0.1.0 | 	github.com/go-logr/logr v0.1.0 | ||||||
| 	github.com/google/go-github/v31 v31.0.0 | 	github.com/google/go-github/v32 v32.1.1-0.20200822031813-d57a3a84ba04 | ||||||
| 	github.com/google/go-querystring v1.0.0 | 	github.com/google/go-querystring v1.0.0 | ||||||
|  | 	github.com/gorilla/mux v1.8.0 | ||||||
| 	github.com/onsi/ginkgo v1.8.0 | 	github.com/onsi/ginkgo v1.8.0 | ||||||
| 	github.com/onsi/gomega v1.5.0 | 	github.com/onsi/gomega v1.5.0 | ||||||
| 	github.com/stretchr/testify v1.4.0 // indirect | 	github.com/stretchr/testify v1.4.0 // indirect | ||||||
|  | @ -15,6 +16,6 @@ require ( | ||||||
| 	k8s.io/api v0.0.0-20190918155943-95b840bb6a1f | 	k8s.io/api v0.0.0-20190918155943-95b840bb6a1f | ||||||
| 	k8s.io/apimachinery v0.0.0-20190913080033-27d36303b655 | 	k8s.io/apimachinery v0.0.0-20190913080033-27d36303b655 | ||||||
| 	k8s.io/client-go v0.0.0-20190918160344-1fbdaa4c8d90 | 	k8s.io/client-go v0.0.0-20190918160344-1fbdaa4c8d90 | ||||||
| 	k8s.io/klog v0.4.0 | 	k8s.io/utils v0.0.0-20190801114015-581e00157fb1 | ||||||
| 	sigs.k8s.io/controller-runtime v0.4.0 | 	sigs.k8s.io/controller-runtime v0.4.0 | ||||||
| ) | ) | ||||||
|  |  | ||||||
							
								
								
									
										7
									
								
								go.sum
								
								
								
								
							
							
						
						
									
										7
									
								
								go.sum
								
								
								
								
							|  | @ -116,11 +116,10 @@ github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= | ||||||
| github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= | github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= | ||||||
| github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= | github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= | ||||||
| github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= | github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= | ||||||
| github.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY= |  | ||||||
| github.com/google/go-github/v29 v29.0.2 h1:opYN6Wc7DOz7Ku3Oh4l7prmkOMwEcQxpFtxdU8N8Pts= | github.com/google/go-github/v29 v29.0.2 h1:opYN6Wc7DOz7Ku3Oh4l7prmkOMwEcQxpFtxdU8N8Pts= | ||||||
| github.com/google/go-github/v29 v29.0.2/go.mod h1:CHKiKKPHJ0REzfwc14QMklvtHwCveD0PxlMjLlzAM5E= | github.com/google/go-github/v29 v29.0.2/go.mod h1:CHKiKKPHJ0REzfwc14QMklvtHwCveD0PxlMjLlzAM5E= | ||||||
| github.com/google/go-github/v31 v31.0.0 h1:JJUxlP9lFK+ziXKimTCprajMApV1ecWD4NB6CCb0plo= | github.com/google/go-github/v32 v32.1.1-0.20200822031813-d57a3a84ba04 h1:wEYk2h/GwOhImcVjiTIceP88WxVbXw2F+ARYUQMEsfg= | ||||||
| github.com/google/go-github/v31 v31.0.0/go.mod h1:NQPZol8/1sMoWYGN2yaALIBytu17gAWfhbweiEed3pM= | github.com/google/go-github/v32 v32.1.1-0.20200822031813-d57a3a84ba04/go.mod h1:rIEpZD9CTDQwDK9GDrtMTycQNA4JU3qBsCizh3q2WCI= | ||||||
| github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= | github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= | ||||||
| github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= | github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= | ||||||
| github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= | github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= | ||||||
|  | @ -136,6 +135,8 @@ github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsC | ||||||
| github.com/googleapis/gnostic v0.3.1 h1:WeAefnSUHlBb0iJKwxFDZdbfGwkd7xRNuV+IpXMJhYk= | github.com/googleapis/gnostic v0.3.1 h1:WeAefnSUHlBb0iJKwxFDZdbfGwkd7xRNuV+IpXMJhYk= | ||||||
| github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= | github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= | ||||||
| github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= | github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= | ||||||
|  | github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= | ||||||
|  | github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= | ||||||
| github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= | github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= | ||||||
| github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= | github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= | ||||||
| github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= | github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								main.go
								
								
								
								
							
							
						
						
									
										1
									
								
								main.go
								
								
								
								
							|  | @ -161,6 +161,7 @@ func main() { | ||||||
| 		Client:       mgr.GetClient(), | 		Client:       mgr.GetClient(), | ||||||
| 		Log:          ctrl.Log.WithName("controllers").WithName("RunnerReplicaSet"), | 		Log:          ctrl.Log.WithName("controllers").WithName("RunnerReplicaSet"), | ||||||
| 		Scheme:       mgr.GetScheme(), | 		Scheme:       mgr.GetScheme(), | ||||||
|  | 		GitHubClient: ghClient, | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if err = runnerSetReconciler.SetupWithManager(mgr); err != nil { | 	if err = runnerSetReconciler.SetupWithManager(mgr); err != nil { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue