Documentation ¶
Index ¶
- Constants
- func AddAccessLog(accessLog models.AccessLog) error
- func AddAdminJob(job *models.AdminJob) (int64, error)
- func AddLabel(label *models.Label) (int64, error)
- func AddProject(project models.Project) (int64, error)
- func AddProjectMetadata(meta *models.ProjectMetadata) error
- func AddRepJob(job models.RepJob) (int64, error)
- func AddRepPolicy(policy models.RepPolicy) (int64, error)
- func AddRepTarget(target models.RepTarget) (int64, error)
- func AddRepository(repo models.RepoRecord) error
- func AddResourceLabel(rl *models.ResourceLabel) (int64, error)
- func AddScanJob(job models.ScanJob) (int64, error)
- func ArrayEqual(arrayA, arrayB []int) bool
- func AuthModeCanBeModified() (bool, error)
- func ChangeUserPassword(u models.User) error
- func ChangeUserProfile(user models.User, cols ...string) error
- func CheckSchemaVersion() error
- func CleanUser(id int64) error
- func ClearTable(table string) error
- func CountPull(repoName string) (int64, error)
- func CreateOrUpdateJobLog(log *models.JobLog) (int64, error)
- func CreatePagination(query *models.ProjectQueryParam, sql string, params []interface{}) (string, []interface{})
- func DeleteAdminJob(id int64) error
- func DeleteJobLogsBefore(t time.Time) (int64, error)
- func DeleteLabel(id int64) error
- func DeleteLabelsOfResource(rType string, rIDOrName interface{}) error
- func DeleteProject(id int64) error
- func DeleteProjectMetadata(projectID int64, name ...string) error
- func DeleteRepJob(id int64) error
- func DeleteRepJobs(policyID int64) error
- func DeleteRepPolicy(id int64) error
- func DeleteRepTarget(id int64) error
- func DeleteRepository(name string) error
- func DeleteResourceLabel(id int64) error
- func DeleteResourceLabelByLabel(id int64) error
- func DeleteUser(userID int) error
- func Escape(str string) string
- func FilterRepPolicies(name string, projectID, page, pageSize int64) ([]*models.RepPolicy, error)
- func FilterRepTargets(name string) ([]*models.RepTarget, error)
- func GetAccessLogs(query *models.LogQueryParam) ([]models.AccessLog, error)
- func GetAdminJob(id int64) (*models.AdminJob, error)
- func GetAdminJobs(query *models.AdminJobQuery) ([]*models.AdminJob, error)
- func GetConfigEntries() ([]*models.ConfigEntry, error)
- func GetGroupProjects(groupDNCondition string, query *models.ProjectQueryParam) ([]*models.Project, error)
- func GetImgScanOverview(digest string) (*models.ImgScanOverview, error)
- func GetJobLog(uuid string) (*models.JobLog, error)
- func GetLabel(id int64) (*models.Label, error)
- func GetLabelsOfResource(rType string, rIDOrName interface{}) ([]*models.Label, error)
- func GetOrmer() orm.Ormer
- func GetProjectByID(id int64) (*models.Project, error)
- func GetProjectByName(name string) (*models.Project, error)
- func GetProjectMetadata(projectID int64, name ...string) ([]*models.ProjectMetadata, error)
- func GetProjects(query *models.ProjectQueryParam) ([]*models.Project, error)
- func GetRepJob(id int64) (*models.RepJob, error)
- func GetRepJobs(query ...*models.RepJobQuery) ([]*models.RepJob, error)
- func GetRepPolicy(id int64) (*models.RepPolicy, error)
- func GetRepPolicyByName(name string) (*models.RepPolicy, error)
- func GetRepPolicyByProject(projectID int64) ([]*models.RepPolicy, error)
- func GetRepPolicyByProjectAndTarget(projectID, targetID int64) ([]*models.RepPolicy, error)
- func GetRepPolicyByTarget(targetID int64) ([]*models.RepPolicy, error)
- func GetRepTarget(id int64) (*models.RepTarget, error)
- func GetRepTargetByEndpoint(endpoint string) (*models.RepTarget, error)
- func GetRepTargetByName(name string) (*models.RepTarget, error)
- func GetRepositories(query ...*models.RepositoryQuery) ([]*models.RepoRecord, error)
- func GetRepositoryByName(name string) (*models.RepoRecord, error)
- func GetResourceLabel(rType string, rIDOrName interface{}, labelID int64) (*models.ResourceLabel, error)
- func GetRoleByID(id int) (*models.Role, error)
- func GetRolesByLDAPGroup(projectID int64, groupDNCondition string) ([]int, error)
- func GetScanJob(id int64) (*models.ScanJob, error)
- func GetScanJobsByDigest(digest string, limit ...int) ([]*models.ScanJob, error)
- func GetScanJobsByImage(repository, tag string, limit ...int) ([]*models.ScanJob, error)
- func GetScanJobsByStatus(status ...string) ([]*models.ScanJob, error)
- func GetSchemaVersion() (*models.SchemaVersion, error)
- func GetTop10AdminJobsOfName(name string) ([]*models.AdminJob, error)
- func GetTopRepos(projectIDs []int64, n int) ([]*models.RepoRecord, error)
- func GetTotalCountOfRepJobs(query ...*models.RepJobQuery) (int64, error)
- func GetTotalGroupProjects(groupDNCondition string, query *models.ProjectQueryParam) (int, error)
- func GetTotalOfAccessLogs(query *models.LogQueryParam) (int64, error)
- func GetTotalOfLabels(query *models.LabelQuery) (int64, error)
- func GetTotalOfProjects(query *models.ProjectQueryParam) (int64, error)
- func GetTotalOfRepPolicies(name string, projectID int64) (int64, error)
- func GetTotalOfRepositories(query ...*models.RepositoryQuery) (int64, error)
- func GetTotalOfUsers(query *models.UserQuery) (int64, error)
- func GetUser(query models.User) (*models.User, error)
- func GetUserProjectRoles(userID int, projectID int64, entityType string) ([]models.Role, error)
- func IncreasePullCount(name string) (err error)
- func InitClairDB(clairDB *models.PostGreSQL) error
- func InitDatabase(database *models.Database) error
- func IsAdminRole(userIDOrUsername interface{}) (bool, error)
- func IsSuperUser(username string) bool
- func ListClairVulnTimestamps() ([]*models.ClairVulnTimestamp, error)
- func ListImgScanOverviews() ([]*models.ImgScanOverview, error)
- func ListLabels(query *models.LabelQuery) ([]*models.Label, error)
- func ListProjectMetadata(name, value string) ([]*models.ProjectMetadata, error)
- func ListResourceLabels(query ...*models.ResourceLabelQuery) ([]*models.ResourceLabel, error)
- func ListUsers(query *models.UserQuery) ([]models.User, error)
- func LoginByDb(auth models.AuthModel) (*models.User, error)
- func OnBoardUser(u *models.User) error
- func PrepareTestData(clearSqls []string, initSqls []string)
- func PrepareTestForMySQL()
- func PrepareTestForPostgresSQL()
- func PrepareTestForSQLite()
- func ProjectExistsByName(name string) bool
- func Register(user models.User) (int64, error)
- func RepositoryExists(name string) bool
- func ResetUserPassword(u models.User) error
- func SaveConfigEntries(entries []models.ConfigEntry) error
- func SetAdminJobUUID(id int64, uuid string) error
- func SetClairVulnTimestamp(namespace string, timestamp time.Time) error
- func SetRepJobUUID(id int64, uuid string) error
- func SetScanJobForImg(digest string, jobID int64) error
- func SetScanJobUUID(id int64, uuid string) error
- func ToggleUserAdminRole(userID int, hasAdmin bool) error
- func UpdateAdminJobStatus(id int64, status string) error
- func UpdateImgScanOverview(digest, detailsKey string, sev models.Severity, ...) error
- func UpdateLabel(label *models.Label) error
- func UpdateProjectMetadata(meta *models.ProjectMetadata) error
- func UpdateRepJobStatus(id int64, status string) error
- func UpdateRepPolicy(policy *models.RepPolicy) error
- func UpdateRepTarget(target models.RepTarget) error
- func UpdateRepository(repo models.RepoRecord) error
- func UpdateScanJobStatus(id int64, status string) error
- func UpdateUserResetUUID(u models.User) error
- func UpgradeSchema(database *models.Database) error
- func UserExists(user models.User, target string) (bool, error)
- type Database
- type DatabaseWatchItemDAO
- type WatchItemDAO
Constants ¶
const ( // NonExistUserID : if a user does not exist, the ID of the user will be 0. NonExistUserID = 0 // ClairDBAlias ... ClairDBAlias = "clair-db" )
const (
// SchemaVersion is the version of database schema
SchemaVersion = "1.6.0"
)
Variables ¶
This section is empty.
Functions ¶
func AddAccessLog ¶
AddAccessLog persists the access logs
func AddProject ¶
AddProject adds a project to the database along with project roles information and access log records.
func AddProjectMetadata ¶
func AddProjectMetadata(meta *models.ProjectMetadata) error
AddProjectMetadata adds metadata for a project
func AddRepository ¶
func AddRepository(repo models.RepoRecord) error
AddRepository adds a repo to the database.
func AddResourceLabel ¶
func AddResourceLabel(rl *models.ResourceLabel) (int64, error)
AddResourceLabel add a label to a resource
func AuthModeCanBeModified ¶
AuthModeCanBeModified determines whether auth mode can be modified or not. Auth mode can modified when there is only admin user in database.
func ChangeUserProfile ¶
ChangeUserProfile - Update user in local db, cols to specify the columns need to update, Email, and RealName, Comment are updated by default.
func CheckSchemaVersion ¶
func CheckSchemaVersion() error
CheckSchemaVersion checks that whether the schema version matches with the expected one
func ClearTable ¶
ClearTable is the shortcut for test cases, it should be called only in test cases.
func CreateOrUpdateJobLog ¶
CreateOrUpdateJobLog ...
func CreatePagination ¶
func CreatePagination(query *models.ProjectQueryParam, sql string, params []interface{}) (string, []interface{})
CreatePagination ...
func DeleteJobLogsBefore ¶
DeleteJobLogsBefore ...
func DeleteLabelsOfResource ¶
DeleteLabelsOfResource removes all labels of the resource
func DeleteProjectMetadata ¶
DeleteProjectMetadata deleted metadata of a project. If name is absent all metadatas will be deleted, otherwise only the metadatas specified by name will be deleted
func DeleteRepJobs ¶
DeleteRepJobs deletes replication jobs by policy ID
func DeleteResourceLabelByLabel ¶
DeleteResourceLabelByLabel delete the mapping relationship by label ID
func FilterRepPolicies ¶
FilterRepPolicies filters policies by name and project ID
func FilterRepTargets ¶
FilterRepTargets filters targets by name
func GetAccessLogs ¶
func GetAccessLogs(query *models.LogQueryParam) ([]models.AccessLog, error)
GetAccessLogs gets access logs according to different conditions
func GetAdminJobs ¶
func GetAdminJobs(query *models.AdminJobQuery) ([]*models.AdminJob, error)
GetAdminJobs get admin jobs bases on query conditions
func GetConfigEntries ¶
func GetConfigEntries() ([]*models.ConfigEntry, error)
GetConfigEntries Get configuration from database
func GetGroupProjects ¶
func GetGroupProjects(groupDNCondition string, query *models.ProjectQueryParam) ([]*models.Project, error)
GetGroupProjects - Get user's all projects, including user is the user member of this project and the user is in the group which is a group member of this project.
func GetImgScanOverview ¶
func GetImgScanOverview(digest string) (*models.ImgScanOverview, error)
GetImgScanOverview returns the ImgScanOverview based on the digest.
func GetLabelsOfResource ¶
GetLabelsOfResource returns the label list of the resource Get the labels by ResourceID if rIDOrName is int, or get the labels by ResourceName
func GetProjectByName ¶
GetProjectByName ...
func GetProjectMetadata ¶
func GetProjectMetadata(projectID int64, name ...string) ([]*models.ProjectMetadata, error)
GetProjectMetadata returns the metadata of a project. If name is absent all metadatas will be returned, otherwise only the metadatas specified by name will be returned
func GetProjects ¶
func GetProjects(query *models.ProjectQueryParam) ([]*models.Project, error)
GetProjects returns a project list according to the query conditions
func GetRepJobs ¶
func GetRepJobs(query ...*models.RepJobQuery) ([]*models.RepJob, error)
GetRepJobs ...
func GetRepPolicyByName ¶
GetRepPolicyByName ...
func GetRepPolicyByProject ¶
GetRepPolicyByProject ...
func GetRepPolicyByProjectAndTarget ¶
GetRepPolicyByProjectAndTarget ...
func GetRepPolicyByTarget ¶
GetRepPolicyByTarget ...
func GetRepTargetByEndpoint ¶
GetRepTargetByEndpoint ...
func GetRepTargetByName ¶
GetRepTargetByName ...
func GetRepositories ¶
func GetRepositories(query ...*models.RepositoryQuery) ([]*models.RepoRecord, error)
GetRepositories ... 查询 存储库的信息
func GetRepositoryByName ¶
func GetRepositoryByName(name string) (*models.RepoRecord, error)
GetRepositoryByName ...
func GetResourceLabel ¶
func GetResourceLabel(rType string, rIDOrName interface{}, labelID int64) (*models.ResourceLabel, error)
GetResourceLabel specified by resource ID or name Get the ResourceLabel by ResourceID if rIDOrName is int Get the ResourceLabel by ResourceName if rIDOrName is string
func GetRolesByLDAPGroup ¶
GetRolesByLDAPGroup - Get Project roles of the specified group DN is a member of current project
func GetScanJobsByDigest ¶
GetScanJobsByDigest returns a list of scan jobs with given digest
func GetScanJobsByImage ¶
GetScanJobsByImage returns a list of scan jobs with given repository and tag
func GetScanJobsByStatus ¶
GetScanJobsByStatus return a list of scan jobs with any of the given statuses in param
func GetSchemaVersion ¶
func GetSchemaVersion() (*models.SchemaVersion, error)
GetSchemaVersion return the version of database schema
func GetTop10AdminJobsOfName ¶
GetTop10AdminJobsOfName ...
func GetTopRepos ¶
func GetTopRepos(projectIDs []int64, n int) ([]*models.RepoRecord, error)
GetTopRepos returns the most popular repositories whose project ID is in projectIDs
func GetTotalCountOfRepJobs ¶
func GetTotalCountOfRepJobs(query ...*models.RepJobQuery) (int64, error)
GetTotalCountOfRepJobs ...
func GetTotalGroupProjects ¶
func GetTotalGroupProjects(groupDNCondition string, query *models.ProjectQueryParam) (int, error)
GetTotalGroupProjects - Get the total count of projects, including user is the member of this project and the user is in the group, which is the group member of this project.
func GetTotalOfAccessLogs ¶
func GetTotalOfAccessLogs(query *models.LogQueryParam) (int64, error)
GetTotalOfAccessLogs ...
func GetTotalOfLabels ¶
func GetTotalOfLabels(query *models.LabelQuery) (int64, error)
GetTotalOfLabels returns the total count of labels
func GetTotalOfProjects ¶
func GetTotalOfProjects(query *models.ProjectQueryParam) (int64, error)
GetTotalOfProjects returns the total count of projects according to the query conditions
func GetTotalOfRepPolicies ¶
GetTotalOfRepPolicies returns the total count of replication policies
func GetTotalOfRepositories ¶
func GetTotalOfRepositories(query ...*models.RepositoryQuery) (int64, error)
GetTotalOfRepositories ...
func GetTotalOfUsers ¶
GetTotalOfUsers ...
func GetUserProjectRoles ¶
GetUserProjectRoles returns roles that the user has according to the project.
func InitDatabase ¶
InitDatabase registers the database
func IsAdminRole ¶
IsAdminRole returns whether the user is admin.
func IsSuperUser ¶
IsSuperUser checks if the user is super user(conventionally id == 1) of Harbor
func ListClairVulnTimestamps ¶
func ListClairVulnTimestamps() ([]*models.ClairVulnTimestamp, error)
ListClairVulnTimestamps return a list of all records in vuln timestamp table.
func ListImgScanOverviews ¶
func ListImgScanOverviews() ([]*models.ImgScanOverview, error)
ListImgScanOverviews list all records in table img_scan_overview, it is called in notification handler when it needs to refresh the severity of all images.
func ListLabels ¶
func ListLabels(query *models.LabelQuery) ([]*models.Label, error)
ListLabels list labels according to the query conditions
func ListProjectMetadata ¶
func ListProjectMetadata(name, value string) ([]*models.ProjectMetadata, error)
ListProjectMetadata ...
func ListResourceLabels ¶
func ListResourceLabels(query ...*models.ResourceLabelQuery) ([]*models.ResourceLabel, error)
ListResourceLabels lists ResourceLabel according to the query conditions
func OnBoardUser ¶
OnBoardUser will check if a user exists in user table, if not insert the user and put the id in the pointer of user model, if it does exist, return the user's profile. This is used for ldap and uaa authentication, such the user can have an ID in Harbor.
func PrepareTestData ¶
PrepareTestData -- Clean and Create data
func PrepareTestForPostgresSQL ¶
func PrepareTestForPostgresSQL()
PrepareTestForPostgresSQL is for test only.
func ProjectExistsByName ¶
ProjectExistsByName returns whether the project exists according to its name.
func Register ¶
Register is used for user to register, the password is encrypted before the record is inserted into database. 用户注册后,将相关数据存储到数据库中。这个方法被UserAPI 调用
func RepositoryExists ¶
RepositoryExists returns whether the repository exists according to its name.
func SaveConfigEntries ¶
func SaveConfigEntries(entries []models.ConfigEntry) error
SaveConfigEntries Save configuration to database.
func SetClairVulnTimestamp ¶
SetClairVulnTimestamp update the last_update of a namespace. If there's no record for this namespace, one will be created.
func SetScanJobForImg ¶
SetScanJobForImg updates the scan_job_id based on the digest of image, if there's no data, it created one record.
func SetScanJobUUID ¶
SetScanJobUUID set UUID to the record so it associates with the job in job service.
func ToggleUserAdminRole ¶
ToggleUserAdminRole gives a user admin role.
func UpdateAdminJobStatus ¶
UpdateAdminJobStatus ...
func UpdateImgScanOverview ¶
func UpdateImgScanOverview(digest, detailsKey string, sev models.Severity, compOverview *models.ComponentsOverview) error
UpdateImgScanOverview updates the serverity and components status of a record in img_scan_overview
func UpdateProjectMetadata ¶
func UpdateProjectMetadata(meta *models.ProjectMetadata) error
UpdateProjectMetadata updates metadata of a project
func UpdateRepJobStatus ¶
UpdateRepJobStatus ...
func UpdateScanJobStatus ¶
UpdateScanJobStatus updates the status of a scan job.
func UpgradeSchema ¶
UpgradeSchema will call the internal migrator to upgrade schema based on the setting of database.
Types ¶
type Database ¶
type Database interface { // Name returns the name of database Name() string // String returns the details of database String() string // Register registers the database which will be used Register(alias ...string) error // UpgradeSchema upgrades the DB schema to the latest version UpgradeSchema() error }
Database is an interface of different databases
type DatabaseWatchItemDAO ¶
type DatabaseWatchItemDAO struct{}
DatabaseWatchItemDAO implements interface WatchItemDAO for database
func (*DatabaseWatchItemDAO) Add ¶
func (d *DatabaseWatchItemDAO) Add(item *models.WatchItem) (int64, error)
Add a WatchItem
func (*DatabaseWatchItemDAO) DeleteByPolicyID ¶
func (d *DatabaseWatchItemDAO) DeleteByPolicyID(policyID int64) error
DeleteByPolicyID deletes the WatchItem specified by policy ID
type WatchItemDAO ¶
type WatchItemDAO interface { Add(*models.WatchItem) (int64, error) DeleteByPolicyID(int64) error Get(namespace, operation string) ([]models.WatchItem, error) }
WatchItemDAO defines operations about WatchItem
var DefaultDatabaseWatchItemDAO WatchItemDAO = &DatabaseWatchItemDAO{}
DefaultDatabaseWatchItemDAO is an instance of DatabaseWatchItemDAO