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

feat: add NamespacedKMP and switch KMP scope to cluster [multi-tenancy PR 9] #1422

Merged
merged 20 commits into from
May 2, 2024
Merged
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
ede25b9
feat: add Stores interface to wrap operations on namespaced stores
binbin-li Apr 3, 2024
d76e2a9
feat: add Policies interface to wrap operations on namespaced policies
binbin-li Apr 2, 2024
0eb8df5
feat: add KMPManager interface to wrap operations on namespaced kmp
binbin-li Apr 12, 2024
c0b5769
feat: revert extra namespace mapping
binbin-li Apr 19, 2024
05e34fa
Merge branch 'dev' into multi-tenancy-pr-6
binbin-li Apr 20, 2024
6e69159
Merge remote-tracking branch 'upstream/dev' into multi-tenancy-pr-6
binbin-li Apr 25, 2024
5dc63d0
feat: add context to GetKeys
binbin-li Apr 25, 2024
7d93b96
feat: add ClusterPolicy CRD
binbin-li Apr 17, 2024
cf7c563
chore: address comments
binbin-li Apr 24, 2024
7521fb2
feat: add NamespacedStore CRD
binbin-li Apr 23, 2024
db364e6
Merge remote-tracking branch 'upstream/dev' into multi-tenancy-pr-8
binbin-li Apr 26, 2024
80a229e
Merge branch 'dev' into multi-tenancy-pr-8
binbin-li Apr 28, 2024
d59067a
Merge remote-tracking branch 'upstream/dev' into multi-tenancy-pr-8
binbin-li Apr 29, 2024
13131f7
chore: remove deprecated tests
binbin-li Apr 29, 2024
d06b1a0
feat: add NamespacedKMP and switch KMP scope to cluster
binbin-li Apr 29, 2024
e856f53
Merge remote-tracking branch 'upstream/dev' into multi-tenancy-pr-9
binbin-li Apr 29, 2024
96f8ad3
Merge branch 'dev' into multi-tenancy-pr-9
binbin-li Apr 30, 2024
4d68169
Merge remote-tracking branch 'upstream/dev' into multi-tenancy-pr-9
binbin-li Apr 30, 2024
7321d5c
Merge branch 'dev' into multi-tenancy-pr-9
binbin-li May 1, 2024
d06f954
Merge branch 'dev' into multi-tenancy-pr-9
susanshi May 1, 2024
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
8 changes: 8 additions & 0 deletions PROJECT
Original file line number Diff line number Diff line change
Expand Up @@ -96,4 +96,12 @@ resources:
kind: NamespacedStore
path: github.com/deislabs/ratify/api/v1beta1
version: v1beta1
- api:
crdVersion: v1
namespaced: true
domain: ratify.deislabs.io
group: config
kind: NamespacedKeyManagementProvider
path: github.com/deislabs/ratify/api/v1beta1
version: v1beta1
version: "3"
76 changes: 76 additions & 0 deletions api/unversioned/namespacedkeymanagementprovider_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
/*
Copyright The Ratify Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

// +kubebuilder:skip
package unversioned

import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
)

// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.

// NamespacedKeyManagementProviderSpec defines the desired state of NamespacedKeyManagementProvider
type NamespacedKeyManagementProviderSpec struct {
// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
// Important: Run "make" to regenerate code after modifying this file

// Name of the key management provider
Type string `json:"type,omitempty"`

// +kubebuilder:pruning:PreserveUnknownFields
// Parameters of the key management provider
Parameters runtime.RawExtension `json:"parameters,omitempty"`
}

// NamespacedKeyManagementProviderStatus defines the observed state of NamespacedKeyManagementProvider
type NamespacedKeyManagementProviderStatus struct {
// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
// Important: Run "make" to regenerate code after modifying this file

// Is successful in loading certificate/key files
IsSuccess bool `json:"issuccess"`
// Error message if operation was unsuccessful
// +optional
Error string `json:"error,omitempty"`
// Truncated error message if the message is too long
// +optional
BriefError string `json:"brieferror,omitempty"`
// The time stamp of last successful certificate/key fetch operation. If operation failed, last fetched time shows the time of error
// +optional
LastFetchedTime *metav1.Time `json:"lastfetchedtime,omitempty"`
// provider specific properties of the each individual certificate/key
// +optional
Properties runtime.RawExtension `json:"properties,omitempty"`
}

// NamespacedKeyManagementProvider is the Schema for the namespacedkeymanagementproviders API
type NamespacedKeyManagementProvider struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`

Spec NamespacedKeyManagementProviderSpec `json:"spec,omitempty"`
Status NamespacedKeyManagementProviderStatus `json:"status,omitempty"`
}

// NamespacedKeyManagementProviderList contains a list of NamespacedKeyManagementProvider
type NamespacedKeyManagementProviderList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []NamespacedKeyManagementProvider `json:"items"`
}
79 changes: 79 additions & 0 deletions api/unversioned/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions api/v1beta1/keymanagementproviders_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ type KeyManagementProviderStatus struct {
}

// +kubebuilder:object:root=true
// +kubebuilder:resource:scope="Cluster"
// +kubebuilder:subresource:status
// +kubebuilder:storageversion
// +kubebuilder:printcolumn:name="IsSuccess",type=boolean,JSONPath=`.status.issuccess`
Expand Down
89 changes: 89 additions & 0 deletions api/v1beta1/namespacedkeymanagementprovider_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
/*
Copyright The Ratify Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package v1beta1

import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
)

// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.

// NamespacedKeyManagementProviderSpec defines the desired state of NamespacedKeyManagementProvider
type NamespacedKeyManagementProviderSpec struct {
// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
// Important: Run "make" to regenerate code after modifying this file

// Name of the key management provider
Type string `json:"type,omitempty"`

// +kubebuilder:pruning:PreserveUnknownFields
// Parameters of the key management provider
Parameters runtime.RawExtension `json:"parameters,omitempty"`
}

// NamespacedKeyManagementProviderStatus defines the observed state of NamespacedKeyManagementProvider
type NamespacedKeyManagementProviderStatus struct {
// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
// Important: Run "make" to regenerate code after modifying this file

// Is successful in loading certificate/key files
IsSuccess bool `json:"issuccess"`
// Error message if operation was unsuccessful
// +optional
Error string `json:"error,omitempty"`
// Truncated error message if the message is too long
// +optional
BriefError string `json:"brieferror,omitempty"`
// The time stamp of last successful certificate/key fetch operation. If operation failed, last fetched time shows the time of error
// +optional
LastFetchedTime *metav1.Time `json:"lastfetchedtime,omitempty"`
// +kubebuilder:pruning:PreserveUnknownFields
// provider specific properties of the each individual certificate/key
// +optional
Properties runtime.RawExtension `json:"properties,omitempty"`
}

// +kubebuilder:object:root=true
// +kubebuilder:resource:scope="Namespaced"
// +kubebuilder:subresource:status
// +kubebuilder:storageversion
// +kubebuilder:printcolumn:name="IsSuccess",type=boolean,JSONPath=`.status.issuccess`
// +kubebuilder:printcolumn:name="Error",type=string,JSONPath=`.status.brieferror`
// +kubebuilder:printcolumn:name="LastFetchedTime",type=date,JSONPath=`.status.lastfetchedtime`
// NamespacedKeyManagementProvider is the Schema for the namespacedkeymanagementproviders API
type NamespacedKeyManagementProvider struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`

Spec NamespacedKeyManagementProviderSpec `json:"spec,omitempty"`
Status NamespacedKeyManagementProviderStatus `json:"status,omitempty"`
}

// +kubebuilder:object:root=true
// +kubebuilder:storageversion
// NamespacedKeyManagementProviderList contains a list of NamespacedKeyManagementProvider
type NamespacedKeyManagementProviderList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []NamespacedKeyManagementProvider `json:"items"`
}

func init() {
SchemeBuilder.Register(&NamespacedKeyManagementProvider{}, &NamespacedKeyManagementProviderList{})
}
Loading
Loading