diff --git a/app/scripts/controllers/createPersistentVolumeClaim.js b/app/scripts/controllers/createPersistentVolumeClaim.js
index 4ba6ce33cb..3f46d4c7c0 100644
--- a/app/scripts/controllers/createPersistentVolumeClaim.js
+++ b/app/scripts/controllers/createPersistentVolumeClaim.js
@@ -95,7 +95,7 @@ angular.module('openshiftConsole')
_.set(pvc, 'spec.selector.matchLabels', selectorLabel);
}
}
- if ($scope.claim.storageClass ) {
+ if ($scope.claim.storageClass && $scope.claim.storageClass.metadata.name !== "No Storage Class") {
//we can only have one storage class per claim
pvc.metadata.annotations["volume.beta.kubernetes.io/storage-class"] = $scope.claim.storageClass.metadata.name;
}
diff --git a/app/scripts/directives/oscPersistentVolumeClaim.js b/app/scripts/directives/oscPersistentVolumeClaim.js
index 20eb954ff8..2808a4c526 100644
--- a/app/scripts/directives/oscPersistentVolumeClaim.js
+++ b/app/scripts/directives/oscPersistentVolumeClaim.js
@@ -18,6 +18,7 @@ angular.module("openshiftConsole")
var usageValue = $filter('usageValue');
scope.storageClasses = [];
+ scope.defaultStorageClass = "";
scope.claim.unit = 'Gi';
scope.units = [{
value: "Mi",
@@ -81,9 +82,28 @@ angular.module("openshiftConsole")
scope.persistentVolumeClaimForm.capacity.$setValidity('limitRangeMax', maxValid);
};
- DataService.list({group: 'storage.k8s.io', resource: 'storageclasses'}, {}, function(storageClasses) {
- scope.storageClasses = storageClasses.by('metadata.name');
- }, {errorNotification: false});
+ DataService.list({group: 'storage.k8s.io', resource: 'storageclasses'}, {}, function(storageClassData) {
+ var storageClasses = storageClassData.by('metadata.name');
+ scope.storageClasses = _.sortBy(storageClasses, 'metadata.name');
+ var annotation = $filter('annotation');
+ scope.defaultStorageClass = _.find(scope.storageClasses, function(storageClass) {
+ return annotation(storageClass, 'storageclass.beta.kubernetes.io/is-default-class') === 'true';
+ });
+ if (!scope.defaultStorageClass) { //if there is no default, set a no storage class option
+ var noclass = {
+ metadata: {
+ name: "No Storage Class",
+ labels: {},
+ annotations: {
+ description: "No storage class will be assigned"
+ }
+ }
+ };
+ scope.storageClasses.unshift(noclass);
+ } else {
+ scope.claim.storageClass = scope.defaultStorageClass;
+ }
+ }, {errorNotification: false});
DataService.list('limitranges', { namespace: scope.projectName }, function(limitRangeData) {
var limitRanges = limitRangeData.by('metadata.name');
diff --git a/app/views/directives/osc-persistent-volume-claim.html b/app/views/directives/osc-persistent-volume-claim.html
index 58e3372c2c..f1abc534fa 100644
--- a/app/views/directives/osc-persistent-volume-claim.html
+++ b/app/views/directives/osc-persistent-volume-claim.html
@@ -2,37 +2,43 @@