Skip to content

Commit

Permalink
Renaming ObjectMeta field to Metadata as a workaround for the issue k…
Browse files Browse the repository at this point in the history
  • Loading branch information
Nail Islamov committed Mar 9, 2017
1 parent 6cae2d0 commit f5de3d5
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 13 deletions.
2 changes: 1 addition & 1 deletion cmd/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ func TestCanaryRelease(t *testing.T) {
APIVersion: deployv1.ReleaseResourceGroupVersion,
Kind: deployv1.ReleaseResourceKind,
},
ObjectMeta: apiv1.ObjectMeta{
Metadata: apiv1.ObjectMeta{
Name: "release2",
},
Spec: deployv1.ReleaseSpec{
Expand Down
10 changes: 7 additions & 3 deletions pkg/apis/v1/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,13 @@ const (
// Release enables declarative updates for Pods and ReplicaSets.
type Release struct {
metav1.TypeMeta `json:",inline"`

// *** SECRET KNOWLEDGE ***: Don't call the field below ObjectMeta, it will blow up the JSON deserialization
// Issue: https://github.com/kubernetes/client-go/issues/8

// Standard object metadata.
// +optional
apiv1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
Metadata apiv1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`

// Specification of the desired behavior of the Release.
// +optional
Expand Down Expand Up @@ -164,7 +168,7 @@ func (e *Release) GetObjectKind() schema.ObjectKind {

// Required to satisfy ObjectMetaAccessor interface
func (e *Release) GetObjectMeta() metav1.Object {
return &e.ObjectMeta
return &e.Metadata
}

// Required to satisfy Object interface
Expand All @@ -191,7 +195,7 @@ func (e *Release) UnmarshalJSON(data []byte) error {
log.Printf("UnmarshalJSON Error")
return err
}
log.Printf("UnmarshalJSON: %s", tmp.ObjectMeta.SelfLink)
log.Printf("UnmarshalJSON: %s", tmp.Metadata.SelfLink)
tmp2 := Release(tmp)
*e = tmp2
return nil
Expand Down
10 changes: 5 additions & 5 deletions pkg/release/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ func NewHandler(clientset kubernetes.Interface) *ReleaseEventHandler {

func (h *ReleaseEventHandler) OnAdd(obj interface{}) {
release := obj.(*deployv1.Release)
log.Printf("[REH] OnAdd %s", release.ObjectMeta.SelfLink)
log.Printf("[REH] OnAdd %s", release.Metadata.SelfLink)

if release.TypeMeta.Kind == "" {
log.Printf("ERROR Unknown release, skipping")
Expand All @@ -36,17 +36,17 @@ func (h *ReleaseEventHandler) OnAdd(obj interface{}) {
func (h *ReleaseEventHandler) OnUpdate(oldObj, newObj interface{}) {
oldRelease := oldObj.(*deployv1.Release)
newRelease := newObj.(*deployv1.Release)
log.Printf("[REH] OnUpdate oldObj: %s", oldRelease.ObjectMeta.SelfLink)
log.Printf("[REH] OnUpdate newObj: %s", newRelease.ObjectMeta.SelfLink)
log.Printf("[REH] OnUpdate oldObj: %s", oldRelease.Metadata.SelfLink)
log.Printf("[REH] OnUpdate newObj: %s", newRelease.Metadata.SelfLink)
}

func (h *ReleaseEventHandler) OnDelete(obj interface{}) {
release := obj.(*deployv1.Release)
log.Printf("[REH] OnDelete %s", release.ObjectMeta.SelfLink)
log.Printf("[REH] OnDelete %s", release.Metadata.SelfLink)
}

func (h *ReleaseEventHandler) handle(release *deployv1.Release) {
log.Printf("Processing new release %s", release.ObjectMeta.Name)
log.Printf("Processing new release %s", release.Metadata.Name)
switch release.Spec.Strategy.Type {
case "Canary":
log.Printf("Starting Canary deployment")
Expand Down
8 changes: 4 additions & 4 deletions pkg/release/strategy/canary.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ func (c *Canary) Run(release *deployv1.Release) error {
// First ensure that canary deployment object exists
canaryDeployment := &v1beta1.Deployment{
ObjectMeta: metav1.ObjectMeta{
Namespace: release.ObjectMeta.Namespace,
Name: release.ObjectMeta.Name + "-canary",
Namespace: release.Metadata.Namespace,
Name: release.Metadata.Name + "-canary",
},
Spec: v1beta1.DeploymentSpec{
Replicas: release.Spec.Replicas,
Expand All @@ -42,8 +42,8 @@ func (c *Canary) Run(release *deployv1.Release) error {
// Check if stable deployment object exists too
stableDeployment := &v1beta1.Deployment{
ObjectMeta: metav1.ObjectMeta{
Namespace: release.ObjectMeta.Namespace,
Name: release.ObjectMeta.Name + "-stable",
Namespace: release.Metadata.Namespace,
Name: release.Metadata.Name + "-stable",
},
Spec: v1beta1.DeploymentSpec{
Replicas: release.Spec.Replicas,
Expand Down

0 comments on commit f5de3d5

Please sign in to comment.