Skip to content
This repository was archived by the owner on Dec 16, 2025. It is now read-only.

Commit 555b91b

Browse files
🌱 Add fake github client (#113)
* Add fake github client Signed-off-by: michal.gubricky <[email protected]> * Remove release-dir from args in manager_config_patch for local_mode Signed-off-by: michal.gubricky <[email protected]> --------- Signed-off-by: michal.gubricky <[email protected]>
1 parent d911179 commit 555b91b

File tree

8 files changed

+163
-10
lines changed

8 files changed

+163
-10
lines changed

Tiltfile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,10 @@ else:
188188
# Build cspo and add feature gates
189189
def deploy_cspo():
190190
# yaml = str(kustomizesub("./hack/observability")) # build an observable kind deployment by default
191-
yaml = str(kustomizesub("./config/default"))
191+
if settings.get("local_mode"):
192+
yaml = str(kustomizesub("./config/localmode"))
193+
else:
194+
yaml = str(kustomizesub("./config/default"))
192195
local_resource(
193196
name = "cspo-components",
194197
cmd = ["sh", "-ec", sed_cmd, yaml, "|", envsubst_cmd],

cmd/main.go

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"time"
2525

2626
githubclient "github.com/SovereignCloudStack/cluster-stack-operator/pkg/github/client"
27+
"github.com/SovereignCloudStack/cluster-stack-operator/pkg/github/client/fake"
2728
apiv1alpha1 "github.com/sovereignCloudStack/cluster-stack-provider-openstack/api/v1alpha1"
2829
"github.com/sovereignCloudStack/cluster-stack-provider-openstack/internal/controller"
2930
"k8s.io/apimachinery/pkg/runtime"
@@ -49,17 +50,15 @@ func init() {
4950
}
5051

5152
var (
52-
releaseDir string
53-
imageImportTimeout int
53+
releaseDir string
54+
imageImportTimeout int
55+
localMode bool
56+
metricsAddr string
57+
enableLeaderElection bool
58+
probeAddr string
5459
)
5560

5661
func main() {
57-
var (
58-
metricsAddr string
59-
enableLeaderElection bool
60-
probeAddr string
61-
)
62-
6362
flag.StringVar(&metricsAddr, "metrics-bind-address", ":8080", "The address the metric endpoint binds to.")
6463
flag.StringVar(&probeAddr, "health-probe-bind-address", ":8081", "The address the probe endpoint binds to.")
6564
flag.BoolVar(
@@ -70,6 +69,7 @@ func main() {
7069
)
7170
flag.StringVar(&releaseDir, "release-dir", "/tmp/downloads/", "Specify release directory for cluster-stack releases")
7271
flag.IntVar(&imageImportTimeout, "image-import-timeout", 0, "Maximum time in minutes that you allow cspo to import image. If image-import-timeout <= 0, cspo waits forever.")
72+
flag.BoolVar(&localMode, "local", false, "Enable local mode where no release assets will be downloaded from a remote Git repository. Useful for implementing cluster stacks.")
7373

7474
opts := zap.Options{
7575
Development: true,
@@ -100,7 +100,12 @@ func main() {
100100
// Initialize event recorder.
101101
record.InitFromRecorder(mgr.GetEventRecorderFor("cspo-controller"))
102102

103-
gitFactory := githubclient.NewFactory()
103+
var gitFactory githubclient.Factory
104+
if localMode {
105+
gitFactory = fake.NewFactory()
106+
} else {
107+
gitFactory = githubclient.NewFactory()
108+
}
104109

105110
if err = (&controller.OpenStackClusterStackReleaseReconciler{
106111
Client: mgr.GetClient(),
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
namespace: cspo-system
2+
3+
namePrefix: cspo-
4+
resources:
5+
- ../crd
6+
- ../rbac
7+
- ../manager
8+
patchesStrategicMerge:
9+
- manager_auth_proxy_patch.yaml
10+
- manager_config_patch.yaml
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# This patch inject a sidecar container which is a HTTP proxy for the
2+
# controller manager, it performs RBAC authorization against the Kubernetes API using SubjectAccessReviews.
3+
apiVersion: apps/v1
4+
kind: Deployment
5+
metadata:
6+
name: controller-manager
7+
namespace: system
8+
spec:
9+
template:
10+
spec:
11+
containers:
12+
- name: kube-rbac-proxy
13+
securityContext:
14+
allowPrivilegeEscalation: false
15+
capabilities:
16+
drop:
17+
- "ALL"
18+
image: gcr.io/kubebuilder/kube-rbac-proxy:v0.15.0
19+
args:
20+
- "--secure-listen-address=0.0.0.0:8443"
21+
- "--upstream=http://127.0.0.1:8080/"
22+
- "--logtostderr=true"
23+
- "--v=0"
24+
ports:
25+
- containerPort: 8443
26+
protocol: TCP
27+
name: https
28+
resources:
29+
limits:
30+
cpu: 500m
31+
memory: 128Mi
32+
requests:
33+
cpu: 5m
34+
memory: 64Mi
35+
- name: manager
36+
args:
37+
- "--health-probe-bind-address=:8081"
38+
- "--metrics-bind-address=127.0.0.1:8080"
39+
- "--leader-elect"
40+
- "--local=true"
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: controller-manager
5+
namespace: system
6+
spec:
7+
template:
8+
spec:
9+
containers:
10+
- image: ghcr.io/sovereigncloudstack/cspo-staging:dev
11+
name: manager
12+
args:
13+
- --leader-elect=true
14+
- --local=true
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: controller-manager
5+
namespace: system
6+
spec:
7+
template:
8+
spec:
9+
containers:
10+
- name: manager
11+
imagePullPolicy: Always

vendor/github.com/SovereignCloudStack/cluster-stack-operator/pkg/github/client/fake/github_client.go

Lines changed: 69 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/modules.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ github.com/ProtonMail/go-crypto/openpgp/s2k
2222
## explicit; go 1.19
2323
github.com/SovereignCloudStack/cluster-stack-operator/pkg/clusterstack
2424
github.com/SovereignCloudStack/cluster-stack-operator/pkg/github/client
25+
github.com/SovereignCloudStack/cluster-stack-operator/pkg/github/client/fake
2526
github.com/SovereignCloudStack/cluster-stack-operator/pkg/github/client/mocks
2627
github.com/SovereignCloudStack/cluster-stack-operator/pkg/kubernetesversion
2728
github.com/SovereignCloudStack/cluster-stack-operator/pkg/release

0 commit comments

Comments
 (0)