class Krane::PersistentVolumeClaim
Constants
- TIMEOUT
Public Instance Methods
deploy_failed?()
click to toggle source
# File lib/krane/kubernetes_resource/persistent_volume_claim.rb, line 27 def deploy_failed? status == "Lost" || failure_message.present? end
deploy_succeeded?()
click to toggle source
# File lib/krane/kubernetes_resource/persistent_volume_claim.rb, line 15 def deploy_succeeded? return true if status == "Bound" # if the StorageClass has volumeBindingMode: WaitForFirstConsumer, # it won't bind until after a Pod mounts it. But it must be pre-deployed, # as the Pod requires it. So 'Pending' must be treated as a 'Success' state if storage_class&.volume_binding_mode == "WaitForFirstConsumer" return status == "Pending" || status == "Bound" end false end
failure_message()
click to toggle source
# File lib/krane/kubernetes_resource/persistent_volume_claim.rb, line 31 def failure_message if storage_class_name.nil? && @storage_classes.count(&:default?) > 1 "PVC has no StorageClass specified and there are multiple StorageClasses " \ "annotated as default. This is an invalid cluster configuration." end end
status()
click to toggle source
# File lib/krane/kubernetes_resource/persistent_volume_claim.rb, line 11 def status exists? ? @instance_data["status"]["phase"] : "Not Found" end
sync(cache)
click to toggle source
Calls superclass method
Krane::KubernetesResource#sync
# File lib/krane/kubernetes_resource/persistent_volume_claim.rb, line 6 def sync(cache) super @storage_classes = cache.get_all("StorageClass").map { |sc| StorageClass.new(sc) } end
timeout_message()
click to toggle source
# File lib/krane/kubernetes_resource/persistent_volume_claim.rb, line 38 def timeout_message return STANDARD_TIMEOUT_MESSAGE unless storage_class_name.present? && !storage_class "PVC specified a StorageClass of #{storage_class_name} but the resource does not exist" end
Private Instance Methods
storage_class()
click to toggle source
# File lib/krane/kubernetes_resource/persistent_volume_claim.rb, line 49 def storage_class if storage_class_name.present? @storage_classes.detect { |sc| sc.name == storage_class_name } # storage_class_name = "" is an explicit request for no storage class # storage_class_name = nil is an impplicit request for default storage class elsif storage_class_name != "" @storage_classes.detect(&:default?) end end
storage_class_name()
click to toggle source
# File lib/krane/kubernetes_resource/persistent_volume_claim.rb, line 45 def storage_class_name @definition.dig("spec", "storageClassName") end