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

update sharedresource to use featuregate generation #1798

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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions sharedresource/v1alpha1/0000_10_sharedconfigmap.crd.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ kind: CustomResourceDefinition
metadata:
annotations:
api-approved.openshift.io: https://github.com/openshift/api/pull/979
api.openshift.io/merged-by-featuregates: "true"
description: Extension for sharing ConfigMaps across Namespaces
displayName: SharedConfigMap
name: sharedconfigmaps.sharedresource.openshift.io
Expand Down
1 change: 1 addition & 0 deletions sharedresource/v1alpha1/0000_10_sharedsecret.crd.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ kind: CustomResourceDefinition
metadata:
annotations:
api-approved.openshift.io: https://github.com/openshift/api/pull/979
api.openshift.io/merged-by-featuregates: "true"
description: Extension for sharing Secrets across Namespaces
displayName: SharedSecret
name: sharedsecrets.sharedresource.openshift.io
Expand Down
11 changes: 10 additions & 1 deletion sharedresource/v1alpha1/types_shared_configmap.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,18 @@ import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
//
// Compatibility level 4: No compatibility is provided, the API can change at any point for any reason. These capabilities should not be used by applications needing long term support.
// These capabilities should not be used by applications needing long term support.
// +kubebuilder:object:root=true
// +kubebuilder:resource:path=sharedconfigmaps,scope=Cluster
// +kubebuilder:subresource:status
// +openshift:api-approved.openshift.io=https://github.com/openshift/api/pull/979
// +openshift:file-pattern=0000_10_sharedconfigmapMARKERS.crd.yaml
// +kubebuilder:metadata:annotations="include.release.openshift.io/ibm-cloud-managed-="
// +kubebuilder:metadata:annotations="include.release.openshift.io/self-managed-high-availability-="
// +kubebuilder:metadata:annotations="include.release.openshift.io/single-node-developer-="
// +kubebuilder:metadata:annotations="description=Extension for sharing ConfigMaps across Namespaces"
// +kubebuilder:metadata:annotations="displayName=SharedConfigMap"
// +k8s:openapi-gen=true
// +openshift:compatibility-gen:level=4
// +kubebuilder:subresource:status
type SharedConfigMap struct {
metav1.TypeMeta `json:",inline"`

Expand Down
10 changes: 9 additions & 1 deletion sharedresource/v1alpha1/types_shared_secret.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,16 @@ import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
// Compatibility level 4: No compatibility is provided, the API can change at any point for any reason. These capabilities should not be used by applications needing long term support.
// These capabilities should not be used by applications needing long term support.
// +openshift:compatibility-gen:level=4
// +kubebuilder:object:root=true
// +kubebuilder:resource:path=sharedsecrets,scope=Cluster
// +kubebuilder:subresource:status
//
// +openshift:api-approved.openshift.io=https://github.com/openshift/api/pull/979
// +openshift:file-pattern=0000_10_sharedsecretMARKERS.crd.yaml
// +kubebuilder:metadata:annotations="include.release.openshift.io/ibm-cloud-managed-="
// +kubebuilder:metadata:annotations="include.release.openshift.io/self-managed-high-availability-="
// +kubebuilder:metadata:annotations="include.release.openshift.io/single-node-developer-="
// +kubebuilder:metadata:annotations="description=Extension for sharing Secrets across Namespaces"
// +kubebuilder:metadata:annotations="displayName=SharedSecret"
type SharedSecret struct {
metav1.TypeMeta `json:",inline"`

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
sharedconfigmaps.sharedresource.openshift.io:
Annotations:
description: Extension for sharing ConfigMaps across Namespaces
displayName: SharedConfigMap
include.release.openshift.io/ibm-cloud-managed-: ""
include.release.openshift.io/self-managed-high-availability-: ""
include.release.openshift.io/single-node-developer-: ""
ApprovedPRNumber: https://github.com/openshift/api/pull/979
CRDName: sharedconfigmaps.sharedresource.openshift.io
Capability: ""
Category: ""
FeatureGates: []
GroupName: sharedresource.openshift.io
HasStatus: true
KindName: SharedConfigMap
Labels: {}
PluralName: sharedconfigmaps
PrinterColumns: []
Scope: Cluster
ShortName: ""
TargetFilenamePattern: 0000_10_sharedconfigmapMARKERS.crd.yaml
TopLevelFeatureGates: []
Version: v1alpha1

sharedsecrets.sharedresource.openshift.io:
Annotations:
description: Extension for sharing Secrets across Namespaces
displayName: SharedSecret
include.release.openshift.io/ibm-cloud-managed-: ""
include.release.openshift.io/self-managed-high-availability-: ""
include.release.openshift.io/single-node-developer-: ""
ApprovedPRNumber: https://github.com/openshift/api/pull/979
CRDName: sharedsecrets.sharedresource.openshift.io
Capability: ""
Category: ""
FeatureGates: []
GroupName: sharedresource.openshift.io
HasStatus: true
KindName: SharedSecret
Labels: {}
PluralName: sharedsecrets
PrinterColumns: []
Scope: Cluster
ShortName: ""
TargetFilenamePattern: 0000_10_sharedsecretMARKERS.crd.yaml
TopLevelFeatureGates: []
Version: v1alpha1

Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
api-approved.openshift.io: https://github.com/openshift/api/pull/979
api.openshift.io/filename-pattern: 0000_10_sharedconfigmapMARKERS.crd.yaml
description: Extension for sharing ConfigMaps across Namespaces
displayName: SharedConfigMap
feature-gate.release.openshift.io/: "true"
include.release.openshift.io/ibm-cloud-managed-: ""
include.release.openshift.io/self-managed-high-availability-: ""
include.release.openshift.io/single-node-developer-: ""
name: sharedconfigmaps.sharedresource.openshift.io
spec:
group: sharedresource.openshift.io
names:
kind: SharedConfigMap
listKind: SharedConfigMapList
plural: sharedconfigmaps
singular: sharedconfigmap
scope: Cluster
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: "SharedConfigMap allows a ConfigMap to be shared across namespaces.
Pods can mount the shared ConfigMap by adding a CSI volume to the pod specification
using the \"csi.sharedresource.openshift.io\" CSI driver and a reference
to the SharedConfigMap in the volume attributes: \n spec: volumes: - name:
shared-configmap csi: driver: csi.sharedresource.openshift.io volumeAttributes:
sharedConfigMap: my-share \n For the mount to be successful, the pod's service
account must be granted permission to 'use' the named SharedConfigMap object
within its namespace with an appropriate Role and RoleBinding. For compactness,
here are example `oc` invocations for creating such Role and RoleBinding
objects. \n `oc create role shared-resource-my-share --verb=use --resource=sharedconfigmaps.sharedresource.openshift.io
--resource-name=my-share` `oc create rolebinding shared-resource-my-share
--role=shared-resource-my-share --serviceaccount=my-namespace:default` \n
Shared resource objects, in this case ConfigMaps, have default permissions
of list, get, and watch for system authenticated users. \n Compatibility
level 4: No compatibility is provided, the API can change at any point for
any reason. These capabilities should not be used by applications needing
long term support. These capabilities should not be used by applications
needing long term support."
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: spec is the specification of the desired shared configmap
properties:
configMapRef:
description: configMapRef is a reference to the ConfigMap to share
properties:
name:
description: name represents the name of the ConfigMap that is
being referenced.
type: string
namespace:
description: namespace represents the namespace where the referenced
ConfigMap is located.
type: string
required:
- name
- namespace
type: object
description:
description: description is a user readable explanation of what the
backing resource provides.
type: string
required:
- configMapRef
type: object
status:
description: status is the observed status of the shared configmap
properties:
conditions:
description: conditions represents any observations made on this particular
shared resource by the underlying CSI driver or Share controller.
items:
description: "Condition contains details for one aspect of the current
state of this API Resource. --- This struct is intended for direct
use as an array at the field path .status.conditions. For example,
\n type FooStatus struct{ // Represents the observations of a
foo's current state. // Known .status.conditions.type are: \"Available\",
\"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge
// +listType=map // +listMapKey=type Conditions []metav1.Condition
`json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }"
properties:
lastTransitionTime:
description: lastTransitionTime is the last time the condition
transitioned from one status to another. This should be when
the underlying condition changed. If that is not known, then
using the time when the API field changed is acceptable.
format: date-time
type: string
message:
description: message is a human readable message indicating
details about the transition. This may be an empty string.
maxLength: 32768
type: string
observedGeneration:
description: observedGeneration represents the .metadata.generation
that the condition was set based upon. For instance, if .metadata.generation
is currently 12, but the .status.conditions[x].observedGeneration
is 9, the condition is out of date with respect to the current
state of the instance.
format: int64
minimum: 0
type: integer
reason:
description: reason contains a programmatic identifier indicating
the reason for the condition's last transition. Producers
of specific condition types may define expected values and
meanings for this field, and whether the values are considered
a guaranteed API. The value should be a CamelCase string.
This field may not be empty.
maxLength: 1024
minLength: 1
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type: string
status:
description: status of the condition, one of True, False, Unknown.
enum:
- "True"
- "False"
- Unknown
type: string
type:
description: type of condition in CamelCase or in foo.example.com/CamelCase.
--- Many .condition.type values are consistent across resources
like Available, but because arbitrary conditions can be useful
(see .node.status.conditions), the ability to deconflict is
important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
maxLength: 316
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type: string
required:
- lastTransitionTime
- message
- reason
- status
- type
type: object
type: array
type: object
type: object
served: true
storage: true
subresources:
status: {}