Add child artifact digest in reference model

As we only provide the API to get artifact information via project name, repository name and digest, the digest of child artifact must be returned

Signed-off-by: Wenkai Yin <yinw@vmware.com>
This commit is contained in:
Wenkai Yin 2020-02-02 09:13:51 +08:00
parent 5cf0481b51
commit 7930e4f38a
5 changed files with 18 additions and 5 deletions

View File

@ -467,6 +467,9 @@ definitions:
type: integer
format: int64
description: The child ID of the reference
child_digest:
type: string
description: The digest of the child artifact
platform:
$ref: '#/definitions/Platform'
Platform:

View File

@ -47,8 +47,9 @@ func (a *Artifact) ToSwagger() *models.Artifact {
}
for _, reference := range a.References {
ref := &models.Reference{
ChildID: reference.ChildID,
ParentID: reference.ParentID,
ChildID: reference.ChildID,
ChildDigest: reference.ChildDigest,
ParentID: reference.ParentID,
}
if reference.Platform != nil {
ref.Platform = &models.Platform{

View File

@ -127,6 +127,11 @@ func (m *manager) assemble(ctx context.Context, art *dao.Artifact) (*Artifact, e
for _, ref := range refs {
reference := &Reference{}
reference.From(ref)
art, err := m.dao.Get(ctx, reference.ChildID)
if err != nil {
return nil, err
}
reference.ChildDigest = art.Digest
artifact.References = append(artifact.References, reference)
}
return artifact, nil

View File

@ -105,6 +105,9 @@ func (m *managerTestSuite) TestAssemble() {
ChildID: 3,
},
}, nil)
m.dao.On("Get").Return(&dao.Artifact{
Digest: "digest",
}, nil)
artifact, err := m.mgr.assemble(nil, art)
m.Require().Nil(err)
m.dao.AssertExpectations(m.T())

View File

@ -101,9 +101,10 @@ func (a *Artifact) To() *dao.Artifact {
// Reference records the child artifact referenced by parent artifact
type Reference struct {
ParentID int64
ChildID int64
Platform *v1.Platform
ParentID int64
ChildID int64
ChildDigest string // As we only provide the API based on digest rather than ID, the digest of child artifact is needed
Platform *v1.Platform
}
// From converts the data level reference to business level