Skip to content

Commit

Permalink
Move resource version annotation to a different file
Browse files Browse the repository at this point in the history
The newly added file can be used for storing all the metadata going
forward
It is added and removed from the client side and will not be present in
porch

Please refer this for more info: #4017
  • Loading branch information
bharat-m1 committed Aug 9, 2023
1 parent f5d414e commit 3295ee5
Show file tree
Hide file tree
Showing 6 changed files with 111 additions and 24 deletions.
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
50 changes: 48 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,36 @@ data:
apiVersion: config.kubernetes.io/v1
kind: ResourceList
items:
- apiVersion: kpt.dev/v1
<<<<<<< HEAD
kind: KptRevisionMetaData
metadata:
name: bar
annotations:
internal.kpt.dev/resource-version: "999"
config.kubernetes.io/index: '0'
internal.config.kubernetes.io/index: '0'
internal.config.kubernetes.io/path: 'KptRevisionMetaData'
config.kubernetes.io/path: 'KptRevisionMetaData'
=======
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'
>>>>>>> 90760422 (Moved resource version annotation to a different file)
- 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 +144,36 @@ data:
apiVersion: config.kubernetes.io/v1
kind: ResourceList
items:
- apiVersion: kpt.dev/v1
<<<<<<< HEAD
kind: KptRevisionMetaData
metadata:
name: bar
annotations:
internal.kpt.dev/resource-version: "999"
config.kubernetes.io/index: '0'
internal.config.kubernetes.io/index: '0'
internal.config.kubernetes.io/path: 'KptRevisionMetaData'
config.kubernetes.io/path: 'KptRevisionMetaData'
=======
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'
>>>>>>> 90760422 (Moved resource version annotation to a different file)
- 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
45 changes: 27 additions & 18 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,51 @@ func GetResourceFileKubeObject(prr *api.PackageRevisionResources, file, kind, na
return ko, nil
}

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

=======
func GetResourceVersion(prr *api.PackageRevisionResources) (string, error) {
>>>>>>> 90760422 (Moved resource version annotation to a different file)
ko, err := GetResourceFileKubeObject(prr, kptfilev1.RevisionMetaDataFileName, kptfilev1.RevisionMetaDataKind, "")
if err != nil {
return "", err
}

<<<<<<< HEAD
annotations := ko.GetAnnotations()
rv, ok := annotations[ResourceVersionAnnotation]
if !ok {
rv = ""
}
=======
rv, _, _ := ko.NestedString("metadata", "resourceVersion")
>>>>>>> 90760422 (Moved resource version annotation to a different file)
return rv, nil
}

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

ko.SetAnnotation(ResourceVersionAnnotation, prr.GetResourceVersion())
prr.Spec.Resources["Kptfile"] = ko.String()
kptMetaDataKo := fnsdk.NewEmptyKubeObject()
kptMetaDataKo.SetAPIVersion(kptfileKo.GetAPIVersion())
kptMetaDataKo.SetKind(kptfilev1.RevisionMetaDataKind)
<<<<<<< HEAD
kptMetaDataKo.SetName(kptfileKo.GetName())
kptMetaDataKo.SetAnnotation(ResourceVersionAnnotation, prr.GetResourceVersion())
=======
if err := kptMetaDataKo.SetNestedField(prr.GetObjectMeta(), "metadata"); err != nil {
return fmt.Errorf("cannot set metadata: %v", err)
}
>>>>>>> 90760422 (Moved resource version annotation to a different file)
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
}
22 changes: 22 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: kpt.dev/v1
kind: KptRevisionMetadata
metadata:
name: git-3465eed5831e5c372243d048631c8ef1666b47d6
namespace: rpkg-clone
creationTimestamp: null
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
info:
description: sample description
Expand Down Expand Up @@ -107,6 +118,17 @@ commands:
stdout: |
apiVersion: config.kubernetes.io/v1
items:
- apiVersion: kpt.dev/v1
kind: KptRevisionMetadata
metadata:
name: git-b67f9ce14d378317ba83c9504eab9cc024932dd3
namespace: rpkg-clone
creationTimestamp: null
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
info:
description: Empty Blueprint
Expand Down
10 changes: 10 additions & 0 deletions pkg/api/kptfile/v1/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,16 @@ import (
const (
KptFileName = "Kptfile"

<<<<<<< HEAD
RevisionMetaDataFileName = "KptRevisionMetaData"

RevisionMetaDataKind = "KptRevisionMetaData"
=======
RevisionMetaDataFileName = ".KptRevisionMetadata"

RevisionMetaDataKind = "KptRevisionMetadata"
>>>>>>> 90760422 (Moved resource version annotation to a different file)

// Deprecated: prefer KptFileGVK
KptFileKind = "Kptfile"

Expand Down

0 comments on commit 3295ee5

Please sign in to comment.