Skip to content

Commit

Permalink
feat: add ClusterPolicy CRD
Browse files Browse the repository at this point in the history
  • Loading branch information
binbin-li committed Apr 18, 2024
1 parent 226d4fc commit d8ce82d
Show file tree
Hide file tree
Showing 41 changed files with 1,751 additions and 206 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ delete-demo-constraints:

.PHONY: deploy-rego-policy
deploy-rego-policy:
kubectl apply -f ./config/samples/policy/config_v1beta1_policy_rego.yaml
kubectl apply -f ./config/samples/clustered/policy/config_v1beta1_policy_rego.yaml

.PHONY: deploy-gatekeeper
deploy-gatekeeper:
Expand Down
12 changes: 8 additions & 4 deletions PROJECT
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
# Code generated by tool. DO NOT EDIT.
# This file is used to track the info used to scaffold your project
# and allow the plugins properly work.
# More info: https://book.kubebuilder.io/reference/project-config.html
domain: ratify.deislabs.io
layout:
- go.kubebuilder.io/v3
Expand Down Expand Up @@ -80,4 +76,12 @@ resources:
kind: KeyManagementProvider
path: github.com/deislabs/ratify/api/v1beta1
version: v1beta1
- api:
crdVersion: v1
namespaced: true
domain: ratify.deislabs.io
group: config
kind: ClusterPolicy
path: github.com/deislabs/ratify/api/v1beta1
version: v1beta1
version: "3"
60 changes: 60 additions & 0 deletions api/unversioned/clusterpolicy_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
/*
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 unversioned

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

// ClusterPolicySpec defines the desired state of ClusterPolicy
type ClusterPolicySpec struct {
// Important: Run "make" to regenerate code after modifying this file

// Type of the cluster policy
Type string `json:"type,omitempty"`
// Parameters for this cluster policy
Parameters runtime.RawExtension `json:"parameters,omitempty"`
}

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

// Is successful while applying the cluster policy.
IsSuccess bool `json:"issuccess"`
// Error message if cluster policy is not successfully applied.
// +optional
Error string `json:"error,omitempty"`
// Truncated error message if the message is too long
// +optional
BriefError string `json:"brieferror,omitempty"`
}

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

Spec ClusterPolicySpec `json:"spec,omitempty"`
Status ClusterPolicyStatus `json:"status,omitempty"`
}

// ClusterPolicyList contains a list of ClusterPolicy
type ClusterPolicyList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []ClusterPolicy `json:"items"`
}
74 changes: 74 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.

2 changes: 1 addition & 1 deletion api/v1alpha1/policy_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ type PolicyStatus struct {
}

// +kubebuilder:object:root=true
// +kubebuilder:resource:scope="Cluster"
// +kubebuilder:resource:scope="Namespaced"
// +kubebuilder:deprecatedversion:warning="v1alpha1 of the Policy API has been deprecated. Please migrate to v1beta1."
// Policy is the Schema for the policies API
type Policy struct {
Expand Down
75 changes: 75 additions & 0 deletions api/v1beta1/clusterpolicy_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
/*
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.

// ClusterPolicySpec defines the desired state of ClusterPolicy
type ClusterPolicySpec struct {
// Important: Run "make" to regenerate code after modifying this file

// Type of the cluster policy
Type string `json:"type,omitempty"`
// +kubebuilder:pruning:PreserveUnknownFields
// Parameters for this cluster policy
Parameters runtime.RawExtension `json:"parameters,omitempty"`
}

// ClusterPolicyStatus defines the observed state of ClusterPolicy
type ClusterPolicyStatus struct {
// Important: Run "make" to regenerate code after modifying this file

// Is successful while applying the cluster policy.
IsSuccess bool `json:"issuccess"`
// Error message if cluster policy is not successfully applied.
// +optional
Error string `json:"error,omitempty"`
// Truncated error message if the message is too long
// +optional
BriefError string `json:"brieferror,omitempty"`
}

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

Spec ClusterPolicySpec `json:"spec,omitempty"`
Status ClusterPolicyStatus `json:"status,omitempty"`
}

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

func init() {
SchemeBuilder.Register(&ClusterPolicy{}, &ClusterPolicyList{})
}
2 changes: 1 addition & 1 deletion api/v1beta1/policy_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ type PolicyStatus struct {
}

// +kubebuilder:object:root=true
// +kubebuilder:resource:scope="Cluster"
// +kubebuilder:resource:scope="Namespaced"
// +kubebuilder:subresource:status
// +kubebuilder:storageversion
// +kubebuilder:printcolumn:name="IsSuccess",type=boolean,JSONPath=`.status.issuccess`
Expand Down
Loading

0 comments on commit d8ce82d

Please sign in to comment.