re-enabled TestFnContainerGenerator with enable-gcp-services

This commit is contained in:
yutaroyamanaka
2023-03-27 23:00:24 +09:00
parent 436a047617
commit 71a7a7df13

View File

@@ -504,213 +504,49 @@ func skipIfNoDocker(t *testing.T) {
} }
func TestFnContainerGenerator(t *testing.T) { func TestFnContainerGenerator(t *testing.T) {
t.Skip("wait for #3881")
skipIfNoDocker(t) skipIfNoDocker(t)
// Function plugins should not need the env setup done by MakeEnhancedHarness
th := kusttest_test.MakeHarness(t) th := kusttest_test.MakeHarness(t)
o := th.MakeOptionsPluginsEnabled()
th.WriteK(".", ` fSys := filesys.MakeFsOnDisk()
resources: b := MakeKustomizer(&o)
- short_secret.yaml tmpDir, err := filesys.NewTmpConfirmedDir()
assert.NoError(t, err)
assert.NoError(t, fSys.WriteFile(filepath.Join(tmpDir.String(), "kustomization.yaml"), []byte(`
generators: generators:
- gener.yaml - project-service-set.yaml
`) `)))
// Create generator config assert.NoError(t, fSys.WriteFile(filepath.Join(tmpDir.String(), "project-service-set.yaml"), []byte(`
th.WriteF("gener.yaml", ` apiVersion: blueprints.cloud.google.com/v1alpha1
apiVersion: examples.config.kubernetes.io/v1beta1 kind: ProjectServiceSet
kind: CockroachDB
metadata: metadata:
name: demo name: demo
annotations: annotations:
config.kubernetes.io/function: | config.kubernetes.io/function: |
container: container:
image: gcr.io/kustomize-functions/example-cockroachdb:v0.1.0 image: gcr.io/kpt-fn/enable-gcp-services:v0.1.0
spec: spec:
replicas: 3 services:
`) - compute.googleapis.com
// Create some additional resource just to make sure everything is added projectID: foo
th.WriteF("short_secret.yaml", ` `)))
apiVersion: v1 m, err := b.Run(fSys, tmpDir.String())
kind: Secret assert.NoError(t, err)
metadata: actual, err := m.AsYaml()
labels: assert.NoError(t, err)
airshipit.org/ephemeral-user-data: "true" assert.Equal(t, `apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
name: node1-bmc-secret
type: Opaque
stringData:
userData: |
bootcmd:
- mkdir /mnt/vda
`)
m := th.Run(".", th.MakeOptionsPluginsEnabled())
th.AssertActualEqualsExpected(m, `
apiVersion: v1
kind: Secret
metadata:
labels:
airshipit.org/ephemeral-user-data: "true"
name: node1-bmc-secret
stringData:
userData: |
bootcmd:
- mkdir /mnt/vda
type: Opaque
---
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
labels:
app: cockroachdb
name: demo
name: demo-budget
spec:
minAvailable: 67%
selector:
matchLabels:
app: cockroachdb
name: demo
---
apiVersion: v1
kind: Service
metadata:
labels:
app: cockroachdb
name: demo
name: demo-public
spec:
ports:
- name: grpc
port: 26257
targetPort: 26257
- name: http
port: 8080
targetPort: 8080
selector:
app: cockroachdb
name: demo
---
apiVersion: v1
kind: Service kind: Service
metadata: metadata:
annotations: annotations:
prometheus.io/path: _status/vars blueprints.cloud.google.com/ownerReference: blueprints.cloud.google.com/ProjectServiceSet/demo
prometheus.io/port: "8080" config.kubernetes.io/function: |
prometheus.io/scrape: "true" container:
service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" image: gcr.io/kpt-fn/enable-gcp-services:v0.1.0
labels: name: demo-compute
app: cockroachdb
name: demo
name: demo
spec: spec:
clusterIP: None projectRef:
ports: external: foo
- name: grpc resourceID: compute.googleapis.com
port: 26257 `, string(actual))
targetPort: 26257
- name: http
port: 8080
targetPort: 8080
selector:
app: cockroachdb
name: demo
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app: cockroachdb
name: demo
name: demo
spec:
replicas: 3
selector:
matchLabels:
app: cockroachdb
name: demo
serviceName: demo
template:
metadata:
labels:
app: cockroachdb
name: demo
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- cockroachdb
topologyKey: kubernetes.io/hostname
weight: 100
containers:
- command:
- /bin/bash
- -ecx
- |
# The use of qualified `+"`hostname -f`"+` is crucial:
# Other nodes aren't able to look up the unqualified hostname.
CRARGS=("start" "--logtostderr" "--insecure" "--host" "$(hostname -f)" "--http-host" "0.0.0.0")
# We only want to initialize a new cluster (by omitting the join flag)
# if we're sure that we're the first node (i.e. index 0) and that
# there aren't any other nodes running as part of the cluster that
# this is supposed to be a part of (which indicates that a cluster
# already exists and we should make sure not to create a new one).
# It's fine to run without --join on a restart if there aren't any
# other nodes.
if [ ! "$(hostname)" == "cockroachdb-0" ] || [ -e "/cockroach/cockroach-data/cluster_exists_marker" ]
then
# We don't join cockroachdb in order to avoid a node attempting
# to join itself, which currently doesn't work
# (https://github.com/cockroachdb/cockroach/issues/9625).
CRARGS+=("--join" "cockroachdb-public")
fi
exec /cockroach/cockroach ${CRARGS[*]}
image: cockroachdb/cockroach:v1.1.0
imagePullPolicy: IfNotPresent
name: demo
ports:
- containerPort: 26257
name: grpc
- containerPort: 8080
name: http
volumeMounts:
- mountPath: /cockroach/cockroach-data
name: datadir
initContainers:
- args:
- -on-start=/on-start.sh
- -service=cockroachdb
env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
image: cockroachdb/cockroach-k8s-init:0.1
imagePullPolicy: IfNotPresent
name: bootstrap
volumeMounts:
- mountPath: /cockroach/cockroach-data
name: datadir
terminationGracePeriodSeconds: 60
volumes:
- name: datadir
persistentVolumeClaim:
claimName: datadir
volumeClaimTemplates:
- metadata:
name: datadir
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
`)
} }
func TestFnContainerTransformer(t *testing.T) { func TestFnContainerTransformer(t *testing.T) {
@@ -733,7 +569,6 @@ kind: Deployment
metadata: metadata:
name: foo name: foo
`))) `)))
assert.NoError(t, fSys.WriteFile(filepath.Join(tmpDir.String(), "e2econtainerconfig.yaml"), []byte(` assert.NoError(t, fSys.WriteFile(filepath.Join(tmpDir.String(), "e2econtainerconfig.yaml"), []byte(`
apiVersion: example.com/v1alpha1 apiVersion: example.com/v1alpha1
kind: Input kind: Input