X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=n2vc%2Fkubectl.py;h=bc8c3927d9537fbffb4e8bca3170def835c5683b;hp=31b6f55f6c50a436e8dfe4e508c35c42e4c39c0e;hb=c4da25cc55411e6cea1e83d29c206bce421f0728;hpb=475a7221e3598ad1c75ce802c5ad74ef7ecf72f1 diff --git a/n2vc/kubectl.py b/n2vc/kubectl.py index 31b6f55..bc8c392 100644 --- a/n2vc/kubectl.py +++ b/n2vc/kubectl.py @@ -12,18 +12,35 @@ # See the License for the specific language governing permissions and # limitations under the License. +import logging + from kubernetes import client, config from kubernetes.client.rest import ApiException -import logging + + +CORE_CLIENT = "core_v1" +STORAGE_CLIENT = "storage_v1" +RBAC_CLIENT = "rbac_v1" class Kubectl: def __init__(self, config_file=None): config.load_kube_config(config_file=config_file) + self._clients = { + "core_v1": client.CoreV1Api(), + "storage_v1": client.StorageV1Api(), + "rbac_v1": client.RbacAuthorizationV1Api(), + } + self._configuration = config.kube_config.Configuration() self.logger = logging.getLogger("Kubectl") - def get_configuration(self): - return config.kube_config.Configuration() + @property + def configuration(self): + return self._configuration + + @property + def clients(self): + return self._clients def get_services(self, field_selector=None, label_selector=None): kwargs = {} @@ -31,10 +48,8 @@ class Kubectl: kwargs["field_selector"] = field_selector if label_selector: kwargs["label_selector"] = label_selector - try: - v1 = client.CoreV1Api() - result = v1.list_service_for_all_namespaces(**kwargs) + result = self.clients[CORE_CLIENT].list_service_for_all_namespaces(**kwargs) return [ { "name": i.metadata.name, @@ -70,9 +85,7 @@ class Kubectl: If not, it returns the first storage class. If there are not storage classes, returns None """ - - storagev1 = client.StorageV1Api() - storage_classes = storagev1.list_storage_class() + storage_classes = self.clients[STORAGE_CLIENT].list_storage_class() selected_sc = None default_sc_annotations = { "storageclass.kubernetes.io/is-default-class": "true",