Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move resource version annotation to a different file #4018

Merged
merged 1 commit into from
Aug 12, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions commands/alpha/rpkg/pull/command.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ func (r *runner) runE(_ *cobra.Command, args []string) error {
return errors.E(op, err)
}

if err := util.AddResourceVersionAnnotation(&resources); err != nil {
if err := util.AddRevisionMetadata(&resources); err != nil {
return errors.E(op, err)
}

Expand Down Expand Up @@ -200,7 +200,7 @@ func createScheme() (*runtime.Scheme, error) {
return scheme, nil
}

var matchResourceContents = append(kio.MatchAll, kptfilev1.KptFileName)
var matchResourceContents = append(kio.MatchAll, kptfilev1.KptFileName, kptfilev1.RevisionMetaDataFileName)

func includeFile(path string) bool {
for _, m := range matchResourceContents {
Expand Down
26 changes: 24 additions & 2 deletions commands/alpha/rpkg/pull/command_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,13 +68,24 @@ data:
apiVersion: config.kubernetes.io/v1
kind: ResourceList
items:
- apiVersion: porch.kpt.dev/v1alpha1
kind: KptRevisionMetadata
metadata:
name: repo-fjdos9u2nfe2f32
namespace: ns
creationTimestamp: null
resourceVersion: "999"
annotations:
config.kubernetes.io/index: '0'
internal.config.kubernetes.io/index: '0'
internal.config.kubernetes.io/path: '.KptRevisionMetadata'
config.kubernetes.io/path: '.KptRevisionMetadata'
- apiVersion: kpt.dev/v1
kind: Kptfile
metadata:
name: bar
annotations:
config.kubernetes.io/local-config: "true"
internal.kpt.dev/resource-version: "999"
config.kubernetes.io/index: '0'
internal.config.kubernetes.io/index: '0'
internal.config.kubernetes.io/path: 'Kptfile'
Expand Down Expand Up @@ -121,13 +132,24 @@ data:
apiVersion: config.kubernetes.io/v1
kind: ResourceList
items:
- apiVersion: porch.kpt.dev/v1alpha1
kind: KptRevisionMetadata
metadata:
name: repo-fjdos9u2nfe2f32
namespace: ns
creationTimestamp: null
resourceVersion: "999"
annotations:
config.kubernetes.io/index: '0'
internal.config.kubernetes.io/index: '0'
internal.config.kubernetes.io/path: '.KptRevisionMetadata'
config.kubernetes.io/path: '.KptRevisionMetadata'
- apiVersion: kpt.dev/v1
kind: Kptfile
metadata:
name: bar
annotations:
config.kubernetes.io/local-config: "true"
internal.kpt.dev/resource-version: "999"
config.kubernetes.io/index: '0'
internal.config.kubernetes.io/index: '0'
internal.config.kubernetes.io/path: 'Kptfile'
Expand Down
4 changes: 2 additions & 2 deletions commands/alpha/rpkg/push/command.go
Original file line number Diff line number Diff line change
Expand Up @@ -134,12 +134,12 @@ func (r *runner) runE(cmd *cobra.Command, args []string) error {
},
}

rv, err := util.GetResourceVersionAnnotation(&pkgResources)
rv, err := util.GetResourceVersion(&pkgResources)
if err != nil {
return errors.E(op, err)
}
pkgResources.ResourceVersion = rv
if err = util.RemoveResourceVersionAnnotation(&pkgResources); err != nil {
if err = util.RemoveRevisionMetadata(&pkgResources); err != nil {
return errors.E(op, err)
}

Expand Down
40 changes: 13 additions & 27 deletions commands/alpha/rpkg/util/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (
"fmt"

fnsdk "github.com/GoogleContainerTools/kpt-functions-sdk/go/fn"
kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
api "github.com/GoogleContainerTools/kpt/porch/api/porch/v1alpha1"
"sigs.k8s.io/controller-runtime/pkg/client"
)
Expand Down Expand Up @@ -67,43 +68,28 @@ func GetResourceFileKubeObject(prr *api.PackageRevisionResources, file, kind, na
return ko, nil
}

func GetResourceVersionAnnotation(prr *api.PackageRevisionResources) (string, error) {
ko, err := GetResourceFileKubeObject(prr, "Kptfile", "Kptfile", "")

func GetResourceVersion(prr *api.PackageRevisionResources) (string, error) {
ko, err := GetResourceFileKubeObject(prr, kptfilev1.RevisionMetaDataFileName, kptfilev1.RevisionMetaDataKind, "")
if err != nil {
return "", err
}
annotations := ko.GetAnnotations()
rv, ok := annotations[ResourceVersionAnnotation]
if !ok {
rv = ""
}
rv, _, _ := ko.NestedString("metadata", "resourceVersion")
return rv, nil
}

func AddResourceVersionAnnotation(prr *api.PackageRevisionResources) error {
ko, err := GetResourceFileKubeObject(prr, "Kptfile", "Kptfile", "")
if err != nil {
return err
func AddRevisionMetadata(prr *api.PackageRevisionResources) error {
kptMetaDataKo := fnsdk.NewEmptyKubeObject()
kptMetaDataKo.SetAPIVersion(prr.APIVersion)
kptMetaDataKo.SetKind(kptfilev1.RevisionMetaDataKind)
if err := kptMetaDataKo.SetNestedField(prr.GetObjectMeta(), "metadata"); err != nil {
return fmt.Errorf("cannot set metadata: %v", err)
}

ko.SetAnnotation(ResourceVersionAnnotation, prr.GetResourceVersion())
prr.Spec.Resources["Kptfile"] = ko.String()
prr.Spec.Resources[kptfilev1.RevisionMetaDataFileName] = kptMetaDataKo.String()

return nil
}

func RemoveResourceVersionAnnotation(prr *api.PackageRevisionResources) error {
ko, err := GetResourceFileKubeObject(prr, "Kptfile", "Kptfile", "")
if err != nil {
return err
}

_, err = ko.RemoveNestedField("metadata", "annotations", ResourceVersionAnnotation)
if err != nil {
return err
}
prr.Spec.Resources["Kptfile"] = ko.String()

func RemoveRevisionMetadata(prr *api.PackageRevisionResources) error {
delete(prr.Spec.Resources, kptfilev1.RevisionMetaDataFileName)
return nil
}
7 changes: 4 additions & 3 deletions e2e/porch_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -158,13 +158,14 @@ func reorderYamlStdout(t *testing.T, buf *bytes.Buffer) {
return
}

// strip out the internal.kpt.dev/resource-version
// annotation, because that will change with every run
// strip out the resourceVersion:, creationTimestamp:
// because that will change with every run
scanner := bufio.NewScanner(buf)
var newBuf bytes.Buffer
for scanner.Scan() {
line := scanner.Text()
if !strings.Contains(line, "internal.kpt.dev/resource-version:") {
if !strings.Contains(line, "resourceVersion:") &&
!strings.Contains(line, "creationTimestamp:") {
newBuf.Write([]byte(line))
newBuf.Write([]byte("\n"))
}
Expand Down
23 changes: 23 additions & 0 deletions e2e/testdata/porch/rpkg-clone/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,17 @@ commands:
stdout: |
apiVersion: config.kubernetes.io/v1
items:
- apiVersion: ""
kind: KptRevisionMetadata
metadata:
annotations:
config.kubernetes.io/index: "0"
config.kubernetes.io/path: .KptRevisionMetadata
internal.config.kubernetes.io/index: "0"
internal.config.kubernetes.io/path: .KptRevisionMetadata
name: git-3465eed5831e5c372243d048631c8ef1666b47d6
namespace: rpkg-clone
uid: uid:basens-clone:clone-2
- apiVersion: kpt.dev/v1
info:
description: sample description
Expand Down Expand Up @@ -107,13 +118,25 @@ commands:
stdout: |
apiVersion: config.kubernetes.io/v1
items:
- apiVersion: ""
kind: KptRevisionMetadata
metadata:
annotations:
config.kubernetes.io/index: "0"
config.kubernetes.io/path: .KptRevisionMetadata
internal.config.kubernetes.io/index: "0"
internal.config.kubernetes.io/path: .KptRevisionMetadata
name: git-b67f9ce14d378317ba83c9504eab9cc024932dd3
namespace: rpkg-clone
uid: uid:empty-clone:clone-1
- apiVersion: kpt.dev/v1
info:
description: Empty Blueprint
kind: Kptfile
metadata:
annotations:
config.kubernetes.io/index: "0"
config.kubernetes.io/path: Kptfile
internal.config.kubernetes.io/index: "0"
internal.config.kubernetes.io/path: Kptfile
internal.kpt.dev/upstream-identifier: kpt.dev|Kptfile|default|empty-clone
Expand Down
11 changes: 11 additions & 0 deletions e2e/testdata/porch/rpkg-copy/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,17 @@ commands:
stdout: |
apiVersion: config.kubernetes.io/v1
items:
- apiVersion: ""
kind: KptRevisionMetadata
metadata:
annotations:
config.kubernetes.io/index: "0"
config.kubernetes.io/path: .KptRevisionMetadata
internal.config.kubernetes.io/index: "0"
internal.config.kubernetes.io/path: .KptRevisionMetadata
name: git-a29df72d1135fd010ea49f4d4877001dee423be6
namespace: rpkg-copy
uid: uid:basens-edit:copy-2
- apiVersion: kpt.dev/v1
info:
description: sample description
Expand Down
11 changes: 11 additions & 0 deletions e2e/testdata/porch/rpkg-init-deploy/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,17 @@ commands:
stdout: |
apiVersion: config.kubernetes.io/v1
items:
- apiVersion: ""
kind: KptRevisionMetadata
metadata:
annotations:
config.kubernetes.io/index: "0"
config.kubernetes.io/path: .KptRevisionMetadata
internal.config.kubernetes.io/index: "0"
internal.config.kubernetes.io/path: .KptRevisionMetadata
name: git-628abd0a0903f5de6cb3604d917724f6fc1b5e08
namespace: rpkg-init-deploy
uid: uid:deploy-package:deploy
- apiVersion: kpt.dev/v1
info:
description: Test Package Description
Expand Down
11 changes: 11 additions & 0 deletions e2e/testdata/porch/rpkg-init/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,17 @@ commands:
stdout: |
apiVersion: config.kubernetes.io/v1
items:
- apiVersion: ""
kind: KptRevisionMetadata
metadata:
annotations:
config.kubernetes.io/index: "0"
config.kubernetes.io/path: .KptRevisionMetadata
internal.config.kubernetes.io/index: "0"
internal.config.kubernetes.io/path: .KptRevisionMetadata
name: git-95686470a1fd3a3ba726cce4c8f449f6bbe2b02a
namespace: rpkg-init
uid: uid:init-package:init-1
- apiVersion: kpt.dev/v1
info:
description: Test Package Description
Expand Down
33 changes: 33 additions & 0 deletions e2e/testdata/porch/rpkg-push/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,17 @@ commands:
stdout: |
apiVersion: config.kubernetes.io/v1
items:
- apiVersion: ""
kind: KptRevisionMetadata
metadata:
annotations:
config.kubernetes.io/index: "0"
config.kubernetes.io/path: .KptRevisionMetadata
internal.config.kubernetes.io/index: "0"
internal.config.kubernetes.io/path: .KptRevisionMetadata
name: git-efe3d01c68dfdcdd69114c9a7c65cce0d662a46f
namespace: rpkg-push
uid: uid:test-package:push
- apiVersion: kpt.dev/v1
info:
description: sample description
Expand Down Expand Up @@ -59,6 +70,17 @@ commands:
stdin: |
apiVersion: config.kubernetes.io/v1
items:
- apiVersion: ""
kind: KptRevisionMetadata
metadata:
annotations:
config.kubernetes.io/index: "0"
config.kubernetes.io/path: .KptRevisionMetadata
internal.config.kubernetes.io/index: "0"
internal.config.kubernetes.io/path: .KptRevisionMetadata
name: git-efe3d01c68dfdcdd69114c9a7c65cce0d662a46f
namespace: rpkg-push
uid: uid:test-package:push
- apiVersion: kpt.dev/v1
info:
description: sample description
Expand Down Expand Up @@ -122,6 +144,17 @@ commands:
stdout: |
apiVersion: config.kubernetes.io/v1
items:
- apiVersion: ""
kind: KptRevisionMetadata
metadata:
annotations:
config.kubernetes.io/index: "0"
config.kubernetes.io/path: .KptRevisionMetadata
internal.config.kubernetes.io/index: "0"
internal.config.kubernetes.io/path: .KptRevisionMetadata
name: git-efe3d01c68dfdcdd69114c9a7c65cce0d662a46f
namespace: rpkg-push
uid: uid:test-package:push
- apiVersion: kpt.dev/v1
info:
description: Updated Test Package Description
Expand Down
4 changes: 4 additions & 0 deletions pkg/api/kptfile/v1/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@ import (
const (
KptFileName = "Kptfile"

RevisionMetaDataFileName = ".KptRevisionMetadata"

RevisionMetaDataKind = "KptRevisionMetadata"

// Deprecated: prefer KptFileGVK
KptFileKind = "Kptfile"

Expand Down
Loading