本文整理匯總了Golang中github.com/flynn/flynn/controller/types.Release.FileArtifactIDs方法的典型用法代碼示例。如果您正苦於以下問題:Golang Release.FileArtifactIDs方法的具體用法?Golang Release.FileArtifactIDs怎麽用?Golang Release.FileArtifactIDs使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/flynn/flynn/controller/types.Release
的用法示例。
在下文中一共展示了Release.FileArtifactIDs方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: Delete
// Delete deletes any formations for the given app and release, then deletes
// the release and any associated file artifacts if there are no remaining
// formations for the release, enqueueing a worker job to delete any files
// stored in the blobstore
func (r *ReleaseRepo) Delete(app *ct.App, release *ct.Release) error {
tx, err := r.db.Begin()
if err != nil {
return err
}
if err := tx.Exec("formation_delete", app.ID, release.ID); err != nil {
tx.Rollback()
return err
}
// if the release still has formations, don't remove it entirely, just
// save a release deletion event and return
rows, err := tx.Query("formation_list_by_release", release.ID)
if err != nil {
tx.Rollback()
return err
}
formations, err := scanFormations(rows)
if err != nil {
tx.Rollback()
return err
}
if len(formations) > 0 {
apps := make([]string, len(formations))
for i, f := range formations {
apps[i] = f.AppID
}
event := ct.ReleaseDeletionEvent{
ReleaseDeletion: &ct.ReleaseDeletion{
RemainingApps: apps,
ReleaseID: release.ID,
},
}
if err := createEvent(tx.Exec, &ct.Event{
AppID: app.ID,
ObjectID: release.ID,
ObjectType: ct.EventTypeReleaseDeletion,
}, event); err != nil {
tx.Rollback()
return err
}
return tx.Commit()
}
fileArtifacts, err := r.artifacts.ListIDs(release.FileArtifactIDs()...)
if err != nil {
return err
}
if err := tx.Exec("release_delete", release.ID); err != nil {
tx.Rollback()
return err
}
blobstoreFiles := make([]string, 0, len(fileArtifacts))
for _, artifact := range fileArtifacts {
if err := tx.Exec("release_artifacts_delete", release.ID, artifact.ID); err != nil {
tx.Rollback()
return err
}
// only delete artifacts which aren't still referenced by other releases
var count int64
if err := tx.QueryRow("artifact_release_count", artifact.ID).Scan(&count); err != nil {
tx.Rollback()
return err
}
if count > 0 {
continue
}
if artifact.Blobstore() {
blobstoreFiles = append(blobstoreFiles, artifact.URI)
}
if err := tx.Exec("artifact_delete", artifact.ID); err != nil {
tx.Rollback()
return err
}
}
// if there are no blobstore files to delete, just save a release
// deletion event and return
if len(blobstoreFiles) == 0 {
event := ct.ReleaseDeletionEvent{
ReleaseDeletion: &ct.ReleaseDeletion{
ReleaseID: release.ID,
},
}
if err := createEvent(tx.Exec, &ct.Event{
AppID: app.ID,
ObjectID: release.ID,
ObjectType: ct.EventTypeReleaseDeletion,
}, event); err != nil {
tx.Rollback()
return err
//.........這裏部分代碼省略.........