| # Copyright 2017 Mirantis, Inc. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); you may |
| # not use this file except in compliance with the License. You may obtain |
| # a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| # License for the specific language governing permissions and limitations |
| |
| |
| from tcp_tests.managers.k8s.base import K8sBaseResource |
| from tcp_tests.managers.k8s.base import K8sBaseManager |
| |
| |
| class K8sNode(K8sBaseResource): |
| """docstring for ClassName""" |
| |
| def __repr__(self): |
| return "<K8sNode: %s>" % self.name |
| |
| @property |
| def name(self): |
| return self.metadata.name |
| |
| @property |
| def labels(self): |
| return self.metadata.labels |
| |
| @labels.setter |
| def labels(self, labels): |
| current_labels = { |
| label: None for label in self.labels |
| } |
| current_labels.update(labels) |
| self.add_labels(labels=current_labels) |
| |
| def add_labels(self, labels): |
| if not isinstance(labels, dict): |
| raise TypeError("labels must be a dict!") |
| body = { |
| "metadata": |
| { |
| "labels": labels |
| } |
| } |
| self._add_details(self._manager.update(body=body, name=self.name)) |
| |
| def remove_labels(self, list_labels): |
| labels = {label: None for label in list_labels} |
| self.add_labels(labels=labels) |
| |
| |
| class K8sNodeManager(K8sBaseManager): |
| """docstring for ClassName""" |
| |
| resource_class = K8sNode |
| |
| def _get(self, name, **kwargs): |
| return self.api.read_namespaced_node(name=name, **kwargs) |
| |
| def _list(self, **kwargs): |
| return self.api.list_namespaced_node(**kwargs) |
| |
| def _create(self, body, **kwargs): |
| return self.api.create_namespaced_node(body=body, **kwargs) |
| |
| def _replace(self, body, name, **kwargs): |
| return self.api.replace_namespaced_node(body=body, name=name, **kwargs) |
| |
| def _delete(self, body, name, **kwargs): |
| return self.api.delete_namespaced_node(body=body, name=name, **kwargs) |
| |
| def _deletecollection(self, **kwargs): |
| return self.api.deletecollection_namespaced_node(**kwargs) |
| |
| def update(self, body, name, **kwargs): |
| return self.api.patch_namespaced_node(body=body, name=name, **kwargs) |