 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Index ¶
Constants ¶
const ( // CspLeaseKey is the key that will be used to acquire lease on csp object. // It will be present in csp annotations. // If key has an empty value, that means no one has acquired a lease on csp object. //TODO : Evaluate if openebs.io/lease be a better label. CspLeaseKey = "openebs.io/csp-lease" // PatchOperation is the strategy of patch operation. PatchOperation = "replace" // PatchPath is the path to the field on csp object which need to be patched. PatchPath = "/metadata/annotations/openebs.io~1csp-lease" // PodName is the name of the pool pod. PodName = "POD_NAME" // NameSpace is the namespace where pool pod is running. NameSpace = "NAMESPACE" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Lease ¶
type Lease struct {
	// Object is the object over which lease is to be taken
	Object interface{}
	// leaseKey is lease key on object
	LeaseKey string
	// oecs is the openebs clientset
	Oecs clientset.Interface
	// kubeclientset is a standard kubernetes clientset
	Kubeclientset kubernetes.Interface
}
    Lease is the struct which will implement the Leases interface
func (*Lease) Hold ¶
Hold is the implenetation of method from interface Leases It will try to hold a lease on csp object.
func (*Lease) Patch ¶
func (sl *Lease) Patch(name string, nameSpace string, patchType types.PatchType, patches []byte) (*apis.CStorPool, error)
Patch is the specific implementation if Patch() interface for patching CSP objects. Similarly, we can have for other objects, if required.
func (*Lease) Release ¶
func (sl *Lease) Release()
Release method is implementation of to release lease on a given csp.
type LeaseContract ¶
type LeaseContract struct {
	// Holder is the namespace/name of the pod who acquires the lease
	Holder string `json:"holder"`
	// LeaderTransition is the count of lease that has been taken on the object
	// in its lifetime.
	// e.g. One of the pod takes a lease on the object and release and then some other
	// pod (or even the same pod ) takes a lease again on the object its leaderTransition
	// value is 1.
	// If an object has leaderTranisiton value equal to 'n' that means it was leased
	// 'n+1' times in its lifetime by distinct, same or some distinct and some same pods.
	LeaderTransition int `json:"leaderTransition"`
}
    LeaseContract struct will be used as a value of lease key that will give information about an acquired lease on object The struct object will be parsed to string which will be then put as a value to the lease key of object annotation.
type Leaser ¶
type Leaser interface {
	// Hold will try to get a lease, in case of failure it will return error
	Hold() (interface{}, error)
	// Update will update the lease value on the object
	Update(leaseValue string) (interface{}, error)
	// Release will remove the acquired lease on the object
	Release()
}
    Leaser is an interface which assists in getting and releasing lease on an object