in marketplace/deployer_util/provision.py [0:0]
def provision_storage_class(schema, prop, app_name, namespace, provisioner):
if not provisioner:
provisioner = _DEFAULT_STORAGE_CLASS_PROVISIONER
volume_binding_mode = 'Immediate'
if provisioner == 'kubernetes.io/vsphere-volume':
parameters = {'diskformat': 'thin'}
elif provisioner == 'kubernetes.io/gce-pd':
# WaitForFirstConsumer is only available for gce-pd. See:
# https://kubernetes.io/docs/concepts/storage/storage-classes/#volume-binding-mode
volume_binding_mode = 'WaitForFirstConsumer'
if prop.storage_class.ssd:
parameters = {
'type': 'pd-ssd',
}
else:
raise Exception('Do not know how to provision for property {}'.format(
prop.name))
elif provisioner == 'kubernetes.io/no-provisioner':
# local-shared storage class is already pre-provisioned
return 'local-shared', []
sc_name = dns1123_name('{}-{}-{}'.format(namespace, app_name, prop.name))
manifests = [{
'apiVersion': 'storage.k8s.io/v1',
'kind': 'StorageClass',
'metadata': {
'name': sc_name,
},
'provisioner': provisioner,
'parameters': parameters,
'volumeBindingMode': volume_binding_mode
}]
return sc_name, add_preprovisioned_labels(manifests, prop.name)