Skip to content

Commit

Permalink
Add Druid and DruidVersion API
Browse files Browse the repository at this point in the history
Signed-off-by: Tapajit Chandra Paul <tapajit@appscode.com>
  • Loading branch information
tapojit047 committed Jan 16, 2024
1 parent 556a36d commit 3b67495
Show file tree
Hide file tree
Showing 35 changed files with 27,983 additions and 145 deletions.
146 changes: 2 additions & 144 deletions .config/api-rules/violation_exceptions.list

Large diffs are not rendered by default.

63 changes: 63 additions & 0 deletions apis/catalog/v1alpha1/druid_version_helpers.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
/*
Copyright AppsCode Inc. and Contributors
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 v1alpha1

import (
"fmt"

"kubedb.dev/apimachinery/apis"
"kubedb.dev/apimachinery/apis/catalog"
"kubedb.dev/apimachinery/crds"

"kmodules.xyz/client-go/apiextensions"
)

func (d DruidVersion) CustomResourceDefinition() *apiextensions.CustomResourceDefinition {
return crds.MustCustomResourceDefinition(SchemeGroupVersion.WithResource(ResourcePluralDruidVersion))
}

var _ apis.ResourceInfo = &DruidVersion{}

func (d DruidVersion) ResourceFQN() string {
return fmt.Sprintf("%s.%s", ResourcePluralDruidVersion, catalog.GroupName)
}

func (d DruidVersion) ResourceShortCode() string {
return ResourceCodeDruidVersion
}

func (d DruidVersion) ResourceKind() string {
return ResourceKindDruidVersion
}

func (d DruidVersion) ResourceSingular() string {
return ResourceSingularDruidVersion
}

func (d DruidVersion) ResourcePlural() string {
return ResourcePluralDruidVersion
}

func (d DruidVersion) ValidateSpecs() error {
if d.Spec.Version == "" ||
d.Spec.DB.Image == "" {
return fmt.Errorf(`atleast one of the following specs is not set for druidVersion "%v":
spec.version,
spec.db.image`, d.Name)
}
return nil
}
92 changes: 92 additions & 0 deletions apis/catalog/v1alpha1/druidversion_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
/*
Copyright 2023.
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 v1alpha1

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

const (
ResourceCodeDruidVersion = "drversion"
ResourceKindDruidVersion = "DruidVersion"
ResourceSingularDruidVersion = "druidversion"
ResourcePluralDruidVersion = "druidversions"
)

// +genclient
// +genclient:nonNamespaced
// +genclient:skipVerbs=updateStatus
// +k8s:openapi-gen=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object

// +kubebuilder:object:root=true
// +kubebuilder:resource:path=druidversions,singular=druidversion,scope=Cluster,shortName=drversion,categories={datastore,kubedb,appscode}
// +kubebuilder:printcolumn:name="Version",type="string",JSONPath=".spec.version"
// +kubebuilder:printcolumn:name="DB_IMAGE",type="string",JSONPath=".spec.db.image"
// +kubebuilder:printcolumn:name="Deprecated",type="boolean",JSONPath=".spec.deprecated"
// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
type DruidVersion struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec DruidVersionSpec `json:"spec,omitempty"`
}

// DruidVersionSpec defines the desired state of DruidVersion
type DruidVersionSpec struct {
// Version
Version string `json:"version"`
// Database Image
DB DruidVersionDatabase `json:"db"`
// Init Container Image
InitContainer DruidInitContainer `json:"initContainer"`
// Deprecated versions usable but regarded as obsolete and best avoided, typically due to having been superseded.
// +optional
Deprecated bool `json:"deprecated,omitempty"`
// SecurityContext is for the additional security information for the Solr container
// +optional
SecurityContext DruidSecurityContext `json:"securityContext"`
}

// DruidVersionDatabase is the Druid Database image
type DruidVersionDatabase struct {
Image string `json:"image"`
}

// Druid is the Druid Init Container image
type DruidInitContainer struct {
Image string `json:"image"`
}

// DruidSecurityContext provides additional securityContext settings for the Solr Image
type DruidSecurityContext struct {
// RunAsUser is default UID for the DB container. It defaults to 8983.
RunAsUser *int64 `json:"runAsUser,omitempty"`

RunAsGroup *int64 `json:"runAsGroup,omitempty"`

// RunAsAnyNonRoot will be true if user can change the default UID to other than 8983.
RunAsAnyNonRoot bool `json:"runAsAnyNonRoot,omitempty"`
}

// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object

// DruidVersionList contains a list of DruidVersion
type DruidVersionList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []DruidVersion `json:"items,omitempty"`
}
221 changes: 221 additions & 0 deletions apis/catalog/v1alpha1/openapi_generated.go

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

Loading

0 comments on commit 3b67495

Please sign in to comment.