def get_or_create_multi_user_volume_claim(label_suffixes): assert len(label_suffixes) > 0, 'must provide some labels to identify the volume' claim_labels = labels_manager.get_resource_labels(label_suffixes=dict( label_suffixes, **_get_cluster_volume_label_suffixes() )) pvcs = kubectl.get_items_by_labels('PersistentVolumeClaim', claim_labels, required=False) if len(pvcs) > 0: assert len(pvcs) == 1 claim_name = pvcs[0]['metadata']['name'] else: storage_class_name = get_multi_user_storage_class_name() claim_name = 'cc' + _generate_password(12) logs.info(f'Creating persistent volume claim: {claim_name}') logs.info(f'labels: {claim_labels}') kubectl.apply(kubectl.get_persistent_volume_claim( claim_name, claim_labels, { 'storageClassName': storage_class_name, 'accessModes': ['ReadWriteMany'], 'resources': { 'requests': { 'storage': '1Mi' } } } )) return {'persistentVolumeClaim': {'claimName': claim_name}}
def get_labels(router_name, router_type, for_deployment=False): label_prefix = labels_manager.get_label_prefix() extra_labels = {'app': f'{label_prefix}-router-{router_name}'} if for_deployment else {} return labels_manager.get_resource_labels( get_label_suffixes(router_name, router_type), extra_labels=extra_labels )
def create_volume(disk_size_gb, labels, use_existing_disk_name=None): assert len(labels) > 0, 'must provide some labels to identify the volume' labels = dict( labels, **labels_manager.get_resource_labels(label_suffixes=_get_cluster_volume_label_suffixes()) ) return get_provider().create_volume(disk_size_gb, labels, use_existing_disk_name=use_existing_disk_name)
def get_resource_labels(submodule, provider_id, extra_label_suffixes=None, for_deployment=False, suffix=None): label_suffixes = { 'provider-submodule': submodule, 'provider-id': provider_id, } if suffix: label_suffixes['provider-submodule-suffix'] = suffix if extra_label_suffixes: label_suffixes.update(**extra_label_suffixes) extra_labels = {'app': get_deployment_app_label(submodule, provider_id, suffix=suffix)} if for_deployment else {} return labels_manager.get_resource_labels(label_suffixes, extra_labels=extra_labels)
def _get_labels(cache_key=None, secret_name=None, configmap_name=None, namespace=None, extra_operator_labels=None): if cache_key: assert not secret_name and not configmap_name and not namespace else: cache_key = _get_cache_key(secret_name, configmap_name, namespace) config_type, namespace, config_name = _parse_cache_key(cache_key) operator_labels = { f'operator-config-{config_type}': config_name, 'operator-config-namespace': namespace } if extra_operator_labels: operator_labels.update(**extra_operator_labels) return labels_manager.get_resource_labels(operator_labels)
def get_resource_labels(singular, name, extra_label_suffixes=None, for_deployment=False): label_suffixes = { f'crd-{singular}-name': name, } if extra_label_suffixes: label_suffixes.update(**extra_label_suffixes) extra_labels = { 'app': get_deployment_app_label(singular, name) } if for_deployment else {} return labels_manager.get_resource_labels(label_suffixes, extra_labels=extra_labels)
def delete_by_extra_operator_labels(extra_operator_labels): labels = labels_manager.get_resource_labels(extra_operator_labels) labels_manager.delete_by_labels(labels, kinds=['configmap', 'secret'])