| Artem Panchenko | 0594cd7 | 2017-06-12 13:25:26 +0300 | [diff] [blame] | 1 | #    Copyright 2017 Mirantis, Inc. | 
|  | 2 | # | 
|  | 3 | #    Licensed under the Apache License, Version 2.0 (the "License"); you may | 
|  | 4 | #    not use this file except in compliance with the License. You may obtain | 
|  | 5 | #    a copy of the License at | 
|  | 6 | # | 
|  | 7 | #         http://www.apache.org/licenses/LICENSE-2.0 | 
|  | 8 | # | 
|  | 9 | #    Unless required by applicable law or agreed to in writing, software | 
|  | 10 | #    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | 
|  | 11 | #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | 
|  | 12 | #    License for the specific language governing permissions and limitations | 
|  | 13 |  | 
|  | 14 |  | 
| Vladimir Jigulin | 4ad52a8 | 2018-08-12 05:51:30 +0400 | [diff] [blame] | 15 | from kubernetes import client | 
|  | 16 |  | 
| Vladimir Jigulin | 57ecae9 | 2018-09-10 22:51:15 +0400 | [diff] [blame] | 17 | from devops.helpers import helpers | 
|  | 18 |  | 
| Artem Panchenko | 0594cd7 | 2017-06-12 13:25:26 +0300 | [diff] [blame] | 19 | from tcp_tests.managers.k8s.base import K8sBaseResource | 
|  | 20 | from tcp_tests.managers.k8s.base import K8sBaseManager | 
|  | 21 |  | 
|  | 22 |  | 
|  | 23 | class K8sServiceAccount(K8sBaseResource): | 
| Vladimir Jigulin | 4ad52a8 | 2018-08-12 05:51:30 +0400 | [diff] [blame] | 24 | resource_type = 'serviceaccount' | 
| Artem Panchenko | 0594cd7 | 2017-06-12 13:25:26 +0300 | [diff] [blame] | 25 |  | 
| Vladimir Jigulin | 4ad52a8 | 2018-08-12 05:51:30 +0400 | [diff] [blame] | 26 | def _read(self, **kwargs): | 
|  | 27 | return self._manager.api.read_namespaced_service_account( | 
|  | 28 | self.name, self.namespace, **kwargs) | 
| Artem Panchenko | 0594cd7 | 2017-06-12 13:25:26 +0300 | [diff] [blame] | 29 |  | 
| Vladimir Jigulin | 4ad52a8 | 2018-08-12 05:51:30 +0400 | [diff] [blame] | 30 | def _create(self, body, **kwargs): | 
|  | 31 | return self._manager.api.create_namespaced_service_account( | 
|  | 32 | self.namespace, body, **kwargs) | 
|  | 33 |  | 
|  | 34 | def _patch(self, body, **kwargs): | 
|  | 35 | return self._manager.api.patch_namespaced_service_account( | 
|  | 36 | self.name, self.namespace, body, **kwargs) | 
|  | 37 |  | 
|  | 38 | def _replace(self, body, **kwargs): | 
|  | 39 | return self._manager.api.replace_namespaced_service_account( | 
|  | 40 | self.name, self.namespace, body, **kwargs) | 
|  | 41 |  | 
|  | 42 | def _delete(self, **kwargs): | 
|  | 43 | self._manager.api.delete_namespaced_service_account( | 
|  | 44 | self.name, self.namespace, client.V1DeleteOptions(), **kwargs) | 
| Artem Panchenko | 0594cd7 | 2017-06-12 13:25:26 +0300 | [diff] [blame] | 45 |  | 
| Vladimir Jigulin | 57ecae9 | 2018-09-10 22:51:15 +0400 | [diff] [blame] | 46 | def wait_secret_generation(self, timeout=90, interval=2): | 
|  | 47 | def is_secret_generated(): | 
|  | 48 | secrets = self.read().secrets | 
|  | 49 | return secrets is not None and len(secrets) > 0 | 
|  | 50 | helpers.wait(lambda: is_secret_generated(), | 
|  | 51 | timeout=timeout, interval=interval) | 
|  | 52 |  | 
| Artem Panchenko | 0594cd7 | 2017-06-12 13:25:26 +0300 | [diff] [blame] | 53 |  | 
|  | 54 | class K8sServiceAccountManager(K8sBaseManager): | 
| Artem Panchenko | 0594cd7 | 2017-06-12 13:25:26 +0300 | [diff] [blame] | 55 | resource_class = K8sServiceAccount | 
|  | 56 |  | 
| Vladimir Jigulin | 4ad52a8 | 2018-08-12 05:51:30 +0400 | [diff] [blame] | 57 | @property | 
|  | 58 | def api(self): | 
|  | 59 | return self._cluster.api_core | 
| Artem Panchenko | 0594cd7 | 2017-06-12 13:25:26 +0300 | [diff] [blame] | 60 |  | 
| Vladimir Jigulin | 4ad52a8 | 2018-08-12 05:51:30 +0400 | [diff] [blame] | 61 | def _list(self, namespace, **kwargs): | 
|  | 62 | return self.api.list_namespaced_service_account(namespace, **kwargs) | 
| Artem Panchenko | 0594cd7 | 2017-06-12 13:25:26 +0300 | [diff] [blame] | 63 |  | 
| Vladimir Jigulin | 4ad52a8 | 2018-08-12 05:51:30 +0400 | [diff] [blame] | 64 | def _list_all(self, **kwargs): | 
|  | 65 | return self.api.list_service_account_for_all_namespaces(**kwargs) |