Documentation ¶
Overview ¶
Package locking handles locking projects when they have in-progress runs.
Index ¶
- type Backend
- type Client
- func (c *Client) GetLock(key string) (*models.ProjectLock, error)
- func (c *Client) List() (map[string]models.ProjectLock, error)
- func (c *Client) TryLock(p models.Project, env string, pull models.PullRequest, user models.User) (TryLockResponse, error)
- func (c *Client) Unlock(key string) (*models.ProjectLock, error)
- func (c *Client) UnlockByPull(repoFullName string, pullNum int) ([]models.ProjectLock, error)
- type TryLockResponse
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Backend ¶
type Backend interface { TryLock(lock models.ProjectLock) (bool, models.ProjectLock, error) Unlock(project models.Project, env string) (*models.ProjectLock, error) List() ([]models.ProjectLock, error) GetLock(project models.Project, env string) (*models.ProjectLock, error) UnlockByPull(repoFullName string, pullNum int) ([]models.ProjectLock, error) }
Backend is an implementation of the locking API we require.
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client is used to perform locking actions.
func (*Client) GetLock ¶
func (c *Client) GetLock(key string) (*models.ProjectLock, error)
GetLock attempts to get the lock stored at key. If successful, a pointer to the lock will be returned. Else, the pointer will be nil. An error will only be returned if there was an error getting the lock (i.e. not if there was no lock).
func (*Client) List ¶
func (c *Client) List() (map[string]models.ProjectLock, error)
List lists all current locks.
func (*Client) TryLock ¶
func (c *Client) TryLock(p models.Project, env string, pull models.PullRequest, user models.User) (TryLockResponse, error)
TryLock attempts to acquire a lock to a project and environment.
func (*Client) Unlock ¶
func (c *Client) Unlock(key string) (*models.ProjectLock, error)
Unlock attempts to unlock a project and environment. If successful, a pointer to the now deleted lock will be returned. Else, that pointer will be nil. An error will only be returned if there was an error deleting the lock (i.e. not if there was no lock).
func (*Client) UnlockByPull ¶
UnlockByPull deletes all locks associated with that pull request.
type TryLockResponse ¶
type TryLockResponse struct { // LockAcquired is true if the lock was acquired from this call. LockAcquired bool // CurrLock is what project is currently holding the lock. CurrLock models.ProjectLock // LockKey is an identified by which to lookup and delete this lock. LockKey string }
TryLockResponse results from an attempted lock.