def test_make_pvc_simple(): """ Test specification of the simplest possible pvc specification """ assert api_client.sanitize_for_serialization(make_pvc( name='test', storage_class='', access_modes=[], storage=None, labels={} )) == { 'kind': 'PersistentVolumeClaim', 'apiVersion': 'v1', 'metadata': { 'name': 'test', 'annotations': {}, 'labels': {} }, 'spec': { 'accessModes': [], 'resources': { 'requests': { 'storage': None } } } }
def test_make_resources_all(): """ Test specifying all possible resource limits & guarantees """ assert api_client.sanitize_for_serialization(make_pvc( name='test', storage_class='gce-standard-storage', access_modes=['ReadWriteOnce'], storage='10Gi', labels={'key': 'value'} )) == { 'kind': 'PersistentVolumeClaim', 'apiVersion': 'v1', 'metadata': { 'name': 'test', 'annotations': { 'volume.beta.kubernetes.io/storage-class': 'gce-standard-storage' }, 'labels': { 'key': 'value' } }, 'spec': { 'storageClassName': 'gce-standard-storage', 'accessModes': ['ReadWriteOnce'], 'resources': { 'requests': { 'storage': '10Gi' } } } }
def get_pvc_manifest(self): """ Make a pvc manifest that will spawn current user's pvc. """ # Default set of labels, picked up from # https://github.com/kubernetes/helm/blob/master/docs/chart_best_practices/labels.md labels = { 'heritage': 'jupyterhub', 'app': 'jupyterhub', 'hub.jupyter.org/userid': escapism.escape(str(self.user.id)) } labels.update(self._expand_all(self.user_storage_extra_labels)) label_selector = self._expand_all(self.user_storage_pvc_selector) self.log.info("SEL %s" % label_selector) self.log.info("HEEEEERE!") self.log.info("%s %s %s %s %s %s", self.pvc_name, self.user_storage_class, self.user_storage_access_modes, self.user_storage_capacity, labels, label_selector) return make_pvc(name=self.pvc_name, storage_class=self.user_storage_class, access_modes=self.user_storage_access_modes, storage=self.user_storage_capacity, labels=labels, label_selector=label_selector)
def test_make_resources_all(): """ Test specifying all possible resource limits & guarantees """ assert api_client.sanitize_for_serialization(make_pvc( name='test', storage_class='gce-standard-storage', access_modes=['ReadWriteOnce'], storage='10Gi', labels={'key': 'value'} )) == { 'kind': 'PersistentVolumeClaim', 'apiVersion': 'v1', 'metadata': { 'name': 'test', 'annotations': { 'volume.beta.kubernetes.io/storage-class': 'gce-standard-storage' }, 'labels': { 'key': 'value' } }, 'spec': { 'storageClassName': 'gce-standard-storage', 'accessModes': ['ReadWriteOnce'], 'resources': { 'requests': { 'storage': '10Gi' } } } }
def test_make_pvc_simple(): """ Test specification of the simplest possible pvc specification """ assert api_client.sanitize_for_serialization(make_pvc( name='test', storage_class='', access_modes=[], storage=None, labels={} )) == { 'kind': 'PersistentVolumeClaim', 'apiVersion': 'v1', 'metadata': { 'name': 'test', 'annotations': {}, 'labels': {} }, 'spec': { 'accessModes': [], 'resources': { 'requests': { 'storage': None } } } }
def get_specific_pvc_manifest(self, volume): """ Make a pvc manifest for a given volume definition """ labels = self._build_common_labels(self._expand_all(self.storage_extra_labels)) annotations = self._build_common_annotations({}) #del annotations["hub.jupyter.org/username"] pvcDict = {} pvcDict['name'] = self.pvc_name pvcDict['storage_class'] = self.storage_class pvcDict['access_modes'] = self.storage_access_modes pvcDict['selector'] = self.storage_selector pvcDict['storage'] = self.storage_capacity pvcDict['labels'] = labels pvcDict['annotations'] = annotations try: pvcDict['name'] = volume['persistentVolumeClaim']['claimName'] except KeyError: pass try: pvcDict['storage_class'] = volume['storage_class'] except KeyError: pass try: pvcDict['access_modes'] = volume['access_modes'] except KeyError: pass try: pvcDict['storage'] = volume['storage'] except KeyError: pass try: pvcDict['annotations'] = volume['annotations'] except KeyError: pass try: pvcDict['labels'] = volume['labels'] except KeyError: pass print(pvcDict) pvc = make_pvc(**pvcDict) pvc.spec.persistentVolumeReclaimPolicy = 'Retain' return pvc
def get_pvc_manifest(self): """ Make a pvc manifest that will spawn current user's pvc. """ labels = self._build_common_labels( self._expand_all(self.user_storage_extra_labels)) return make_pvc(name=self.pvc_name, storage_class=self.user_storage_class, access_modes=self.user_storage_access_modes, storage=self.user_storage_capacity, labels=labels)
def _get_pvc_manifest(self, name, storage_class, access_modes, storage, labels, annotations): """ Return a PVC spec based on the given parameters. This manifest will be used to create PVCs in the K8s cluster. """ return make_pvc(name=name, storage_class=storage_class, access_modes=access_modes, storage=storage, labels=labels, annotations=annotations)
def get_pvc_manifest(self): """ Make a pvc manifest that will spawn current user's pvc. """ # Default set of labels, picked up from # https://github.com/kubernetes/helm/blob/master/docs/chart_best_practices/labels.md labels = { 'heritage': 'jupyterhub', 'app': 'jupyterhub', 'hub.jupyter.org/username': escapism.escape(self.user.name) } # check if a named-server servername has been set and if so, extend pvc labels. if self.name: # FIXME: make sure this is DNS safe? labels['hub.jupyter.org/servername'] = self.name labels.update(self._expand_all(self.user_storage_extra_labels)) return make_pvc(name=self.pvc_name, storage_class=self.user_storage_class, access_modes=self.user_storage_access_modes, storage=self.user_storage_capacity, labels=labels)