Skip to content

Commit

Permalink
[EPMDEDP-7391]: feat: implement SonarGroup custom resource
Browse files Browse the repository at this point in the history
Change-Id: I375665da0dcd8d3c01b7b0aa35d75f8db179c854
  • Loading branch information
mykhailo-b committed Dec 7, 2021
1 parent 0b8e55c commit 1a2834c
Show file tree
Hide file tree
Showing 27 changed files with 1,116 additions and 88 deletions.
17 changes: 16 additions & 1 deletion cmd/manager/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import (
"flag"
"os"

"github.com/epam/edp-sonar-operator/v2/pkg/controller/group"

buildInfo "github.com/epam/edp-common/pkg/config"
edpCompApi "github.com/epam/edp-component-operator/pkg/apis/v1/v1alpha1"
jenkinsApi "github.com/epam/edp-jenkins-operator/v2/pkg/apis/v2/v1alpha1"
Expand Down Expand Up @@ -111,7 +113,9 @@ func main() {
os.Exit(1)
}

sonarCtrl, err := sonar.NewReconcileSonar(mgr.GetClient(), mgr.GetScheme(), ctrl.Log.WithName("controllers"))
ctrlLog := ctrl.Log.WithName("controllers")

sonarCtrl, err := sonar.NewReconcileSonar(mgr.GetClient(), mgr.GetScheme(), ctrlLog)
if err != nil {
setupLog.Error(err, "unable to create controller", "controller", "sonar")
os.Exit(1)
Expand All @@ -122,6 +126,17 @@ func main() {
os.Exit(1)
}

groupCtrl, err := group.NewReconcile(mgr.GetClient(), mgr.GetScheme(), ctrlLog, helper.GetPlatformTypeEnv())
if err != nil {
setupLog.Error(err, "unable to create controller", "controller", "sonar-group")
os.Exit(1)
}

if err := groupCtrl.SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "sonar-group")
os.Exit(1)
}

if err := mgr.AddHealthzCheck("healthz", healthz.Ping); err != nil {
setupLog.Error(err, "unable to set up health check")
os.Exit(1)
Expand Down
10 changes: 10 additions & 0 deletions deploy-templates/_crd_examples/group.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
apiVersion: v2.edp.epam.com/v1alpha1
kind: SonarGroup
metadata:
name: test-sonar-group
spec:
sonarOwner: sonar
name: testgroup1
description: "group description"


45 changes: 45 additions & 0 deletions deploy-templates/crds/edp_v1alpha1_sonar_group_crd.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: sonargroups.v2.edp.epam.com
spec:
group: v2.edp.epam.com
names:
kind: SonarGroup
listKind: SonarGroupList
plural: sonargroups
singular: sonargroup
scope: Namespaced
versions:
- name: v1alpha1
served: true
storage: true
schema:
openAPIV3Schema:
type: object
properties:
apiVersion:
type: string
kind:
type: string
metadata:
type: object
spec:
properties:
sonarOwner:
type: string
description: 'name of root sonar custom resource'
name:
type: string
description: 'group name'
description:
type: string
required:
- sonarOwner
- name
type: object
status:
type: object
additionalProperties: true
subresources:
status: {}
3 changes: 3 additions & 0 deletions deploy-templates/templates/role_kubernetes.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ rules:
- keycloakrealms/finalizers
- keycloakrealms/status
- events
- sonargroups
- sonargroups/finalizers
- sonargroups/status
verbs:
- '*'
- apiGroups:
Expand Down
3 changes: 3 additions & 0 deletions deploy-templates/templates/role_openshift.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,9 @@ rules:
- keycloakrealms/finalizers
- keycloakrealms/status
- events
- sonargroups
- sonargroups/finalizers
- sonargroups/status
verbs:
- '*'
- apiGroups:
Expand Down
9 changes: 8 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -66,12 +66,13 @@ require (
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.1 // indirect
github.com/openshift/api v3.9.0+incompatible // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/prometheus/client_golang v1.7.1 // indirect
github.com/prometheus/client_model v0.2.0 // indirect
github.com/prometheus/common v0.10.0 // indirect
github.com/prometheus/procfs v0.2.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
github.com/stretchr/objx v0.2.0 // indirect
go.uber.org/atomic v1.6.0 // indirect
go.uber.org/multierr v1.5.0 // indirect
go.uber.org/zap v1.15.0 // indirect
Expand All @@ -96,3 +97,9 @@ require (
sigs.k8s.io/structured-merge-diff/v4 v4.1.1 // indirect
sigs.k8s.io/yaml v1.2.0 // indirect
)

require (
github.com/jarcoal/httpmock v1.0.8
github.com/stretchr/testify v1.7.0
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
)
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -534,6 +534,7 @@ github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANyt
github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ=
github.com/jackc/pgx v3.2.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I=
github.com/jarcoal/httpmock v1.0.8 h1:8kI16SoO6LQKgPE7PvQuV+YuD/inwHd7fOOe2zMbo4k=
github.com/jarcoal/httpmock v1.0.8/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
Expand Down Expand Up @@ -854,6 +855,7 @@ github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3
github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48=
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
Expand Down
46 changes: 46 additions & 0 deletions pkg/apis/edp/v1alpha1/sonar_group.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package v1alpha1

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

// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type SonarGroup struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec SonarGroupSpec `json:"spec"`
Status SonarGroupStatus `json:"status"`
}

type SonarGroupSpec struct {
SonarOwner string `json:"sonarOwner"`
Name string `json:"name"`
Description string `json:"description"`
}

type SonarGroupStatus struct {
Value string `json:"value"`
FailureCount int64 `json:"failureCount"`
ID string `json:"id"`
}

// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type SonarGroupList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []SonarGroup `json:"items"`
}

func (in SonarGroup) GetFailureCount() int64 {
return in.Status.FailureCount
}

func (in *SonarGroup) SetFailureCount(count int64) {
in.Status.FailureCount = count
}

func (in SonarGroup) GetStatus() string {
return in.Status.Value
}

func (in *SonarGroup) SetStatus(value string) {
in.Status.Value = value
}
5 changes: 3 additions & 2 deletions pkg/apis/edp/v1alpha1/sonar_types.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package v1alpha1

import (
"time"

coreV1Api "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"time"
)

// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
Expand Down Expand Up @@ -70,5 +71,5 @@ type SonarList struct {
}

func init() {
SchemeBuilder.Register(&Sonar{}, &SonarList{})
SchemeBuilder.Register(&Sonar{}, &SonarList{}, &SonarGroup{}, &SonarGroupList{})
}
95 changes: 94 additions & 1 deletion pkg/apis/edp/v1alpha1/zz_generated.deepcopy.go

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

14 changes: 14 additions & 0 deletions pkg/client/sonar/errors.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package sonar

import "github.com/pkg/errors"

type ErrNotFound string

func (e ErrNotFound) Error() string {
return string(e)
}

func IsErrNotFound(err error) bool {
_, ok := errors.Cause(err).(ErrNotFound)
return ok
}
9 changes: 9 additions & 0 deletions pkg/client/sonar/errors_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package sonar

import "testing"

func TestIsErrNotFound(t *testing.T) {
if IsErrNotFound(nil) {
t.Fatal("wrong error")
}
}
Loading

0 comments on commit 1a2834c

Please sign in to comment.