Commit Graph

24 Commits (6719e0abb6e042955507496dd58c8e3765298c54)

Author SHA1 Message Date
Fabian von Feilitzsch 65424dd614 Allow user to specify a custom condition when waiting (#52185) 2019-03-06 12:41:17 +00:00
Fabian von Feilitzsch 52ec80fbe9 Add proper k8s *List kind support (#52529)
* Add proper k8s *List kind support

* set defaults more intelligently

* reimplement list support so that it will work in all versions of the client

* clean up debugging code
2019-02-23 12:10:42 +10:00
Will Thames 9babd16942 k8s handle absent resources when waiting (#51682)
* k8s wait - don't try to call to_dict on None

Need to ensure that the resource dict is correctly returned for absent
resources

* Cope with resources without a namespace

Some resources (e.g. ClusterRoleBinding) do not have a Namespace.
Handle the lack of a namespace key.
2019-02-11 21:43:42 +01:00
Jordan Borean 0f0d33a954 start getting modules to use shared import error code (#51787) 2019-02-06 12:39:17 -05:00
Will Thames 7d181802fb Improve kubernetes validation warnings (#51683)
Warnings get printed at the end of loops, which means that if you're
running validation against a bunch of resources, the warning message
gets printed after a number of potentially unrelated resources.

Adding extra info about the resource failing validation will help
find the validation issues.
2019-02-06 08:09:41 +01:00
Mariusz Mazur 3f4ca18e7b k8s: fix handling exceptions for certain modules (#51386) 2019-01-29 09:11:22 +10:00
Will Thames 195de8b460 k8s: turn off wait in check_mode (#51310) 2019-01-25 11:08:46 +01:00
Mariusz Mazur d8a690952e k8s_service: add new kubernetes module for handling Services (#48872)
* k8s: add k8s_kind arg to KubernetesRawModule

Single–kind k8s modules (e.g. k8s_service) do not have a module
parameter called 'kind' and need to pass a static 'kind' on
KubernetesRawModule class creation. Hence this change.

* k8s: make 'validate' and 'wait' mod params optional

Not all k8s modules utilizing KubernetesRawModule will use these.

* k8s_service: new k8s module for handling Services
2018-12-12 11:18:36 -05:00
Will Thames 960ebd981f k8s append_hash (#48830)
* Add append_hash functionality to k8s module

append_hash adds a hash based on the contents of a ConfigMap
or Secret to the name - this enables immutable ConfigMaps and
Secrets.

* Provide k8s_config_resource_name plugin

The k8s_config_resource_name filter plugin provides a means of determining
the name of ConfigMaps and Secrets created with append_hash

* Add changelog fragment

* fix failing tests

* Update openshift version needed for append_hash
2018-11-22 08:14:43 +00:00
Will Thames aaf29c785f Provide Kubernetes resource validation to k8s module (#43352)
* Provide Kubernetes resource validation to k8s module

Use kubernetes-validate to validate Kubernetes resource
definitions against the published schema

* Additional tests for kubernetes-validate

* Improve k8s error messages on exceptions

Parse the response body for the message rather than returning
a JSON blob

If we've validated and there are warnings, return those too - they
can be more helpful

```
"msg": "Failed to patch object: {\"kind\":\"Status\",\"apiVersion\":\"v1\",\"metadata\":{},
       \"status\":\"Failure\",\"message\":\"[pos 334]: json: decNum: got first char 'h'\",\"code\":500}\n",
```
vs
```
"msg": "Failed to patch object: [pos 334]: json: decNum: got first char 'h'\nresource
        validation error at spec.replicas: 'hello' is not of type u'integer'",
```

* Update versions used

In particular openshift/origin:3.9.0

* Add changelog for k8s validate change
2018-11-16 12:44:59 +00:00
Will Thames 4e1e9589b5 Add wait functionality to k8s module (#47493)
Provide wait and wait_timeout parameters and wait for certain
resource kinds to become available.
2018-11-13 12:50:15 +00:00
Will Thames 1463c2e4a8
Use a sensible default for k8s merge_type (#45284)
* Use a sensible default for k8s merge_type

The sensible default for merge_type is `['strategic-merge', 'merge'].
However, we can't make this the default default, as we need to support
users who are using openshift 0.6.0, where the merge_type parameter is
unsupported.

* Refactor k8s test suite for merge_type tests

Allow tests with pre-merge-type openshift and post-merge-type
openshift.
2018-09-08 10:08:09 +10:00
Will Thames ce110ff081 K8s retry merge (#44821)
* Make merge_type a list and apply merge_type in order

Allow use case of preferring strategic-merge and failing
back to merge, or just preferring a different merge type

* Improve k8s module test coverage
2018-08-30 20:42:47 -04:00
Will Thames 0b77262288 Add merge_type parameter to k8s module (#42219)
Allows patching of custom Kubernetes resources that
don't support strategic merge patching

Check that openshift module supports content_type param
(requires version newer than 0.6.0)
2018-07-22 21:05:25 -07:00
Fabian von Feilitzsch 9eccc96586 Special case project creation so that it is possible (#42132) 2018-07-17 13:35:21 -05:00
Fabian von Feilitzsch 4f63134d78 Use top level values as defaults if metadata is not provided (#42277) 2018-07-13 16:01:25 -04:00
Fabian von Feilitzsch fa8de0c384 [k8s] Fix typo that breaks check mode when a resource is created (#42763) 2018-07-13 15:30:16 -04:00
Will Thames 42eaa00371 Provide kubernetes definition diffs in check_mode (#41471)
Move dict_merge from azure_rm_resource module to
module_utils.common.dict_transformations and add tests.

Use dict_merge to provide a fairly realistic, reliable
diff output when k8s-based modules are run in check_mode.

Rename unit tests so that they actually run and reflect
the module_utils they're based on.
2018-07-11 16:32:03 +10:00
Fabian von Feilitzsch e9c7b513a1 [k8s] allow user to pass list of resources in to definition parameter (#42377)
* allow user to pass list of resources in to definition parameter

* Add new validator for list|dict|string

* use string_types instead of string

* state/force information is lost after the first item in the list

* Add tests

* Appease ansibot
2018-07-09 08:33:16 -05:00
Fabian von Feilitzsch d75e49693b update module arguments to allow resource_definition to be a string (#40730) 2018-06-29 09:21:47 -05:00
Fabian von Feilitzsch 4d77878654 K8s dynamic collected changes (#40745)
* Move k8s modules to dynamic backend

* update required openshift version

* update -> patch

* use new dynamic client exceptions

* style

* guard urllib3 import

* guard ansibleerror import

* give more information about error cause

* format in variable

* style

* rename tests

* Search for provided kind in a few more places to match old behavior, properly handle failure

* make common code use fail instead of fail_json, to work for lookup plugins as well

* update docs

* move openshift_raw tests into k8s tests

* fix typo

* Use diff of response and resource to determine change, don't do any checking client-side before making requests

* remove duplicate yaml blocks

* Update porting guide for k8s module

* remove invalid doc refs

* If fuzzy searching finds a resource, update resource_definition to match proper kind and version

* remote unsupported openshift_raw variables

* properly check environment variables when determining auth method:
2018-05-30 12:04:48 -05:00
Adam Miller 78023e79d7
Revert "Move k8s modules to dynamic backend (#39632)" (#40743)
This reverts commit 4373b155a5.
2018-05-26 00:30:16 -05:00
Fabian von Feilitzsch 4373b155a5 Move k8s modules to dynamic backend (#39632)
* Move k8s modules to dynamic backend
2018-05-16 10:57:36 -05:00
Chris Houseknecht 623ff39443
Separate common and raw (#34563) 2018-01-09 07:22:46 -05:00