Skip to content

Commit

Permalink
Update aliases and deprecation warnings (#921)
Browse files Browse the repository at this point in the history
* Add aliases for `NetworkPolicy`, `PodSecurityPolicy`,
`PriorityClass`, `ClusterRole`, `ClusterRoleBinding`,
`Role`, and `RoleBinding`

* Update "removed in" warning for `rbac/v1alpha1` and `rbac/v1beta1`

* Fix NetworkPolicy case

* Add reference links and handle scheduling API
  • Loading branch information
lblackstone authored Dec 17, 2019
1 parent 2a4168f commit 9d7c258
Show file tree
Hide file tree
Showing 42 changed files with 407 additions and 41 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

### Bug fixes

- Fix deprecation warnings and docs. (https://github.com/pulumi/pulumi-kubernetes/pull/918).
- Fix deprecation warnings and docs. (https://github.com/pulumi/pulumi-kubernetes/pull/918 and https://github.com /pulumi/pulumi-kubernetes/pull/921).

## 1.4.0 (December 9, 2019)

Expand Down
49 changes: 29 additions & 20 deletions pkg/gen/typegen.go
Original file line number Diff line number Diff line change
Expand Up @@ -1207,36 +1207,45 @@ func aliasesForGVK(gvk schema.GroupVersionKind) []string {
kind := kinds.Kind(gvk.Kind)

switch kind {
case kinds.DaemonSet:
case kinds.ClusterRole, kinds.ClusterRoleBinding, kinds.Role, kinds.RoleBinding:
return []string{
"kubernetes:apps/v1:DaemonSet",
"kubernetes:apps/v1beta2:DaemonSet",
"kubernetes:extensions/v1beta1:DaemonSet",
fmt.Sprintf("kubernetes:rbac/v1:%s", gvk.Kind),
fmt.Sprintf("kubernetes:rbac/v1beta1:%s", gvk.Kind),
fmt.Sprintf("kubernetes:rbac/v1alpha1:%s", gvk.Kind),
}
case kinds.Deployment:
case kinds.DaemonSet, kinds.ReplicaSet:
return []string{
"kubernetes:apps/v1:Deployment",
"kubernetes:apps/v1beta1:Deployment",
"kubernetes:apps/v1beta2:Deployment",
"kubernetes:extensions/v1beta1:Deployment",
fmt.Sprintf("kubernetes:apps/v1:%s", gvk.Kind),
fmt.Sprintf("kubernetes:apps/v1beta2:%s", gvk.Kind),
fmt.Sprintf("kubernetes:extensions/v1beta1:%s", gvk.Kind),
}
case kinds.Deployment, kinds.StatefulSet:
return []string{
fmt.Sprintf("kubernetes:apps/v1:%s", gvk.Kind),
fmt.Sprintf("kubernetes:apps/v1beta1:%s", gvk.Kind),
fmt.Sprintf("kubernetes:apps/v1beta2:%s", gvk.Kind),
fmt.Sprintf("kubernetes:extensions/v1beta1:%s", gvk.Kind),
}
case kinds.Ingress:
return []string{
"kubernetes:networking/v1beta1:Ingress",
"kubernetes:extensions/v1beta1:Ingress",
fmt.Sprintf("kubernetes:networking/v1beta1:%s", gvk.Kind),
fmt.Sprintf("kubernetes:extensions/v1beta1:%s", gvk.Kind),
}
case kinds.NetworkPolicy:
return []string{
fmt.Sprintf("kubernetes:networking/v1:%s", gvk.Kind),
fmt.Sprintf("kubernetes:extensions/v1beta1:%s", gvk.Kind),
}
case kinds.ReplicaSet:
case kinds.PodSecurityPolicy:
return []string{
"kubernetes:apps/v1:ReplicaSet",
"kubernetes:apps/v1beta2:ReplicaSet",
"kubernetes:extensions/v1beta1:ReplicaSet",
fmt.Sprintf("kubernetes:policy/v1beta1:%s", gvk.Kind),
fmt.Sprintf("kubernetes:extensions/v1beta1:%s", gvk.Kind),
}
case kinds.StatefulSet:
case kinds.PriorityClass:
return []string{
"kubernetes:apps/v1:StatefulSet",
"kubernetes:apps/v1beta1:StatefulSet",
"kubernetes:apps/v1beta2:StatefulSet",
"kubernetes:extensions/v1beta1:StatefulSet",
fmt.Sprintf("kubernetes:scheduling/v1:%s", gvk.Kind),
fmt.Sprintf("kubernetes:scheduling/v1beta1:%s", gvk.Kind),
fmt.Sprintf("kubernetes:scheduling/v1alpha1:%s", gvk.Kind),
}
default:
return []string{}
Expand Down
48 changes: 47 additions & 1 deletion pkg/kinds/deprecated.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,36 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"
)

//
// Reference links:
//
// GVK / Deprecated Version / Removed Version
// Upstream Docs Link
// -----------------------------------------------------------
// extensions/v1beta1/DaemonSet / 1.14 / 1.16
// apps/v1beta1/DaemonSet / 1.14 / 1.16
// apps/v1beta2/DaemonSet / 1.14 / 1.16
// extensions/v1beta1/Deployment / 1.14 / 1.16
// apps/v1beta1/Deployment / 1.14 / 1.16
// apps/v1beta2/Deployment / 1.14 / 1.16
// extensions/v1beta1/NetworkPolicy / 1.14 / 1.16
// extensions/v1beta1/PodSecurityPolicy / 1.14 / 1.16
// extensions/v1beta1/ReplicaSet / 1.14 / 1.16
// apps/v1beta1/ReplicaSet / 1.14 / 1.16
// apps/v1beta2/ReplicaSet / 1.14 / 1.16
// https://git.k8s.io/kubernetes/CHANGELOG-1.14.md#deprecations
//
// scheduling/v1alpha1/PriorityClass / 1.14 / 1.17
// scheduling/v1beta1/PriorityClass / 1.14 / 1.17
// https://git.k8s.io/kubernetes/CHANGELOG-1.14.md#deprecations
//
// extensions/v1beta1/Ingress / 1.14 / 1.18
// https://git.k8s.io/kubernetes/CHANGELOG-1.14.md#deprecations
//
// rbac/v1alpha1/* / 1.17 / 1.20
// rbac/v1beta1/* / 1.17 / 1.20
// https://git.k8s.io/kubernetes/CHANGELOG-1.17.md#deprecations-and-removals

func gvkStr(gvk schema.GroupVersionKind) string {
return gvk.GroupVersion().String() + "/" + gvk.Kind
}
Expand All @@ -45,6 +75,12 @@ func RemovedInVersion(gvk schema.GroupVersionKind) *cluster.ServerVersion {
} else {
removedIn = cluster.ServerVersion{Major: 1, Minor: 16}
}
case schema.GroupVersion{Group: "rbac", Version: "v1beta1"},
schema.GroupVersion{Group: "rbac", Version: "v1alpha1"}:
removedIn = cluster.ServerVersion{Major: 1, Minor: 20}
case schema.GroupVersion{Group: "scheduling", Version: "v1beta1"},
schema.GroupVersion{Group: "scheduling", Version: "v1alpha1"}:
removedIn = cluster.ServerVersion{Major: 1, Minor: 17}
default:
return nil
}
Expand Down Expand Up @@ -72,15 +108,23 @@ func SuggestedApiVersion(gvk schema.GroupVersionKind) string {
return "apps/v1/" + gvk.Kind
case schema.GroupVersion{Group: "extensions", Version: "v1beta1"}:
switch Kind(gvk.Kind) {
case DaemonSet, Deployment, NetworkPolicy, ReplicaSet:
case DaemonSet, Deployment, ReplicaSet:
return "apps/v1/" + gvk.Kind
case Ingress:
return "networking/v1beta1/" + gvk.Kind
case NetworkPolicy:
return "networking/v1/" + gvk.Kind
case PodSecurityPolicy:
return "policy/v1beta1/" + gvk.Kind
default:
return gvkStr(gvk)
}
case schema.GroupVersion{Group: "rbac", Version: "v1beta1"},
schema.GroupVersion{Group: "rbac", Version: "v1alpha1"}:
return "rbac/v1/" + gvk.Kind
case schema.GroupVersion{Group: "scheduling", Version: "v1beta1"},
schema.GroupVersion{Group: "scheduling", Version: "v1alpha1"}:
return "scheduling/v1/" + gvk.Kind
default:
return gvkStr(gvk)
}
Expand All @@ -91,6 +135,8 @@ func upstreamDocsLink(version cluster.ServerVersion) string {
switch version {
case cluster.ServerVersion{Major: 1, Minor: 16}:
return "https://git.k8s.io/kubernetes/CHANGELOG-1.16.md#deprecations-and-removals"
case cluster.ServerVersion{Major: 1, Minor: 17}:
return "https://git.k8s.io/kubernetes/CHANGELOG-1.17.md#deprecations-and-removals"
default:
return ""
}
Expand Down
34 changes: 34 additions & 0 deletions pkg/kinds/deprecated_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ func TestDeprecatedApiVersion(t *testing.T) {
{GroupVersionKind{Group: "extensions", Version: "v1beta1", Kind: "NetworkPolicy"}, true},
{GroupVersionKind{Group: "extensions", Version: "v1beta1", Kind: "PodSecurityPolicy"}, true},
{GroupVersionKind{Group: "extensions", Version: "v1beta1", Kind: "ReplicaSet"}, true},
{GroupVersionKind{Group: "rbac", Version: "v1alpha1", Kind: "ClusterRole"}, true},
{GroupVersionKind{Group: "rbac", Version: "v1beta1", Kind: "ClusterRole"}, true},
}
for _, tt := range tests {
t.Run(tt.gvk.String(), func(t *testing.T) {
Expand Down Expand Up @@ -68,10 +70,30 @@ func TestSuggestedApiVersion(t *testing.T) {
GroupVersionKind{Group: "extensions", Version: "v1beta1", Kind: "Ingress"},
"networking/v1beta1/Ingress",
},
{
GroupVersionKind{Group: "extensions", Version: "v1beta1", Kind: "NetworkPolicy"},
"networking/v1/NetworkPolicy",
},
{
GroupVersionKind{Group: "extensions", Version: "v1beta1", Kind: "PodSecurityPolicy"},
"policy/v1beta1/PodSecurityPolicy",
},
{
GroupVersionKind{Group: "rbac", Version: "v1alpha1", Kind: "ClusterRole"},
"rbac/v1/ClusterRole",
},
{
GroupVersionKind{Group: "rbac", Version: "v1beta1", Kind: "ClusterRole"},
"rbac/v1/ClusterRole",
},
{
GroupVersionKind{Group: "scheduling", Version: "v1beta1", Kind: "PriorityClass"},
"scheduling/v1/PriorityClass",
},
{
GroupVersionKind{Group: "scheduling", Version: "v1alpha1", Kind: "PriorityClass"},
"scheduling/v1/PriorityClass",
},
// Current ApiVersions return the same version string.
{
GroupVersionKind{Group: "apps", Version: "v1", Kind: "Deployment"},
Expand Down Expand Up @@ -102,6 +124,18 @@ func TestRemovedInVersion(t *testing.T) {
{"extensions/v1beta1:Ingress", args{
GroupVersionKind{Group: "extensions", Version: "v1beta1", Kind: "Ingress"},
}, &cluster.ServerVersion{Major: 1, Minor: 20}},
{"rbac/v1beta1:ClusterRole", args{
GroupVersionKind{Group: "rbac", Version: "v1beta1", Kind: "ClusterRole"},
}, &cluster.ServerVersion{Major: 1, Minor: 20}},
{"rbac/v1alpha1:ClusterRole", args{
GroupVersionKind{Group: "rbac", Version: "v1alpha1", Kind: "ClusterRole"},
}, &cluster.ServerVersion{Major: 1, Minor: 20}},
{"scheduling/v1beta1:PriorityClass", args{
GroupVersionKind{Group: "scheduling", Version: "v1beta1", Kind: "PriorityClass"},
}, &cluster.ServerVersion{Major: 1, Minor: 17}},
{"scheduling/v1alpha1:PriorityClass", args{
GroupVersionKind{Group: "scheduling", Version: "v1alpha1", Kind: "PriorityClass"},
}, &cluster.ServerVersion{Major: 1, Minor: 17}},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
Expand Down
9 changes: 8 additions & 1 deletion sdk/nodejs/extensions/v1beta1/NetworkPolicy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,13 @@ import { getVersion } from "../../version";
opts.version = getVersion();
}

super(NetworkPolicy.__pulumiType, name, props, opts);
const _opts = pulumi.mergeOptions(opts, {
aliases: [
{ parent: opts.parent, type: "kubernetes:networking/v1:NetworkPolicy", name: name },
{ parent: opts.parent, type: "kubernetes:extensions/v1beta1:NetworkPolicy", name: name },
],
});

super(NetworkPolicy.__pulumiType, name, props, _opts);
}
}
9 changes: 8 additions & 1 deletion sdk/nodejs/extensions/v1beta1/PodSecurityPolicy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,13 @@ import { getVersion } from "../../version";
opts.version = getVersion();
}

super(PodSecurityPolicy.__pulumiType, name, props, opts);
const _opts = pulumi.mergeOptions(opts, {
aliases: [
{ parent: opts.parent, type: "kubernetes:policy/v1beta1:PodSecurityPolicy", name: name },
{ parent: opts.parent, type: "kubernetes:extensions/v1beta1:PodSecurityPolicy", name: name },
],
});

super(PodSecurityPolicy.__pulumiType, name, props, _opts);
}
}
9 changes: 8 additions & 1 deletion sdk/nodejs/networking/v1/NetworkPolicy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,13 @@ import { getVersion } from "../../version";
opts.version = getVersion();
}

super(NetworkPolicy.__pulumiType, name, props, opts);
const _opts = pulumi.mergeOptions(opts, {
aliases: [
{ parent: opts.parent, type: "kubernetes:networking/v1:NetworkPolicy", name: name },
{ parent: opts.parent, type: "kubernetes:extensions/v1beta1:NetworkPolicy", name: name },
],
});

super(NetworkPolicy.__pulumiType, name, props, _opts);
}
}
9 changes: 8 additions & 1 deletion sdk/nodejs/policy/v1beta1/PodSecurityPolicy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,13 @@ import { getVersion } from "../../version";
opts.version = getVersion();
}

super(PodSecurityPolicy.__pulumiType, name, props, opts);
const _opts = pulumi.mergeOptions(opts, {
aliases: [
{ parent: opts.parent, type: "kubernetes:policy/v1beta1:PodSecurityPolicy", name: name },
{ parent: opts.parent, type: "kubernetes:extensions/v1beta1:PodSecurityPolicy", name: name },
],
});

super(PodSecurityPolicy.__pulumiType, name, props, _opts);
}
}
10 changes: 9 additions & 1 deletion sdk/nodejs/rbac/v1/ClusterRole.ts
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,14 @@ import { getVersion } from "../../version";
opts.version = getVersion();
}

super(ClusterRole.__pulumiType, name, props, opts);
const _opts = pulumi.mergeOptions(opts, {
aliases: [
{ parent: opts.parent, type: "kubernetes:rbac/v1:ClusterRole", name: name },
{ parent: opts.parent, type: "kubernetes:rbac/v1beta1:ClusterRole", name: name },
{ parent: opts.parent, type: "kubernetes:rbac/v1alpha1:ClusterRole", name: name },
],
});

super(ClusterRole.__pulumiType, name, props, _opts);
}
}
10 changes: 9 additions & 1 deletion sdk/nodejs/rbac/v1/ClusterRoleBinding.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,14 @@ import { getVersion } from "../../version";
opts.version = getVersion();
}

super(ClusterRoleBinding.__pulumiType, name, props, opts);
const _opts = pulumi.mergeOptions(opts, {
aliases: [
{ parent: opts.parent, type: "kubernetes:rbac/v1:ClusterRoleBinding", name: name },
{ parent: opts.parent, type: "kubernetes:rbac/v1beta1:ClusterRoleBinding", name: name },
{ parent: opts.parent, type: "kubernetes:rbac/v1alpha1:ClusterRoleBinding", name: name },
],
});

super(ClusterRoleBinding.__pulumiType, name, props, _opts);
}
}
10 changes: 9 additions & 1 deletion sdk/nodejs/rbac/v1/Role.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,14 @@ import { getVersion } from "../../version";
opts.version = getVersion();
}

super(Role.__pulumiType, name, props, opts);
const _opts = pulumi.mergeOptions(opts, {
aliases: [
{ parent: opts.parent, type: "kubernetes:rbac/v1:Role", name: name },
{ parent: opts.parent, type: "kubernetes:rbac/v1beta1:Role", name: name },
{ parent: opts.parent, type: "kubernetes:rbac/v1alpha1:Role", name: name },
],
});

super(Role.__pulumiType, name, props, _opts);
}
}
10 changes: 9 additions & 1 deletion sdk/nodejs/rbac/v1/RoleBinding.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,14 @@ import { getVersion } from "../../version";
opts.version = getVersion();
}

super(RoleBinding.__pulumiType, name, props, opts);
const _opts = pulumi.mergeOptions(opts, {
aliases: [
{ parent: opts.parent, type: "kubernetes:rbac/v1:RoleBinding", name: name },
{ parent: opts.parent, type: "kubernetes:rbac/v1beta1:RoleBinding", name: name },
{ parent: opts.parent, type: "kubernetes:rbac/v1alpha1:RoleBinding", name: name },
],
});

super(RoleBinding.__pulumiType, name, props, _opts);
}
}
10 changes: 9 additions & 1 deletion sdk/nodejs/rbac/v1alpha1/ClusterRole.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,14 @@ import { getVersion } from "../../version";
opts.version = getVersion();
}

super(ClusterRole.__pulumiType, name, props, opts);
const _opts = pulumi.mergeOptions(opts, {
aliases: [
{ parent: opts.parent, type: "kubernetes:rbac/v1:ClusterRole", name: name },
{ parent: opts.parent, type: "kubernetes:rbac/v1beta1:ClusterRole", name: name },
{ parent: opts.parent, type: "kubernetes:rbac/v1alpha1:ClusterRole", name: name },
],
});

super(ClusterRole.__pulumiType, name, props, _opts);
}
}
10 changes: 9 additions & 1 deletion sdk/nodejs/rbac/v1alpha1/ClusterRoleBinding.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,14 @@ import { getVersion } from "../../version";
opts.version = getVersion();
}

super(ClusterRoleBinding.__pulumiType, name, props, opts);
const _opts = pulumi.mergeOptions(opts, {
aliases: [
{ parent: opts.parent, type: "kubernetes:rbac/v1:ClusterRoleBinding", name: name },
{ parent: opts.parent, type: "kubernetes:rbac/v1beta1:ClusterRoleBinding", name: name },
{ parent: opts.parent, type: "kubernetes:rbac/v1alpha1:ClusterRoleBinding", name: name },
],
});

super(ClusterRoleBinding.__pulumiType, name, props, _opts);
}
}
10 changes: 9 additions & 1 deletion sdk/nodejs/rbac/v1alpha1/Role.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,14 @@ import { getVersion } from "../../version";
opts.version = getVersion();
}

super(Role.__pulumiType, name, props, opts);
const _opts = pulumi.mergeOptions(opts, {
aliases: [
{ parent: opts.parent, type: "kubernetes:rbac/v1:Role", name: name },
{ parent: opts.parent, type: "kubernetes:rbac/v1beta1:Role", name: name },
{ parent: opts.parent, type: "kubernetes:rbac/v1alpha1:Role", name: name },
],
});

super(Role.__pulumiType, name, props, _opts);
}
}
Loading

0 comments on commit 9d7c258

Please sign in to comment.