diff --git a/ci-operator/config/cloud-bulldozer/e2e-benchmarking/cloud-bulldozer-e2e-benchmarking-master.yaml b/ci-operator/config/cloud-bulldozer/e2e-benchmarking/cloud-bulldozer-e2e-benchmarking-master.yaml index 9fe6a8b0f49f4..87fa8430667c1 100644 --- a/ci-operator/config/cloud-bulldozer/e2e-benchmarking/cloud-bulldozer-e2e-benchmarking-master.yaml +++ b/ci-operator/config/cloud-bulldozer/e2e-benchmarking/cloud-bulldozer-e2e-benchmarking-master.yaml @@ -402,7 +402,7 @@ tests: - ref: cloud-bulldozer-e2e-benchmarking-router-perf workflow: openshift-qe-installer-aws - always_run: false - as: e2e-udn-density-pods-l3 + as: e2e-udn-density-pods-l3-single-node steps: allow_skip_on_success: true cluster_profile: aws-perfscale @@ -426,7 +426,7 @@ tests: - ref: cloud-bulldozer-e2e-benchmarking-udn-density-pods workflow: openshift-qe-installer-aws - always_run: false - as: e2e-udn-density-pods-l2 + as: e2e-udn-density-pods-l2-single-node steps: allow_skip_on_success: true cluster_profile: aws-perfscale @@ -473,6 +473,39 @@ tests: test: - ref: cloud-bulldozer-e2e-benchmarking-egressip workflow: openshift-qe-installer-aws +- always_run: false + as: e2e-rds-core-mno + capabilities: + - intranet + restrict_network_access: false + steps: + cluster_profile: metal-perfscale-jetlag + env: + BAREMETAL: "true" + BASTION_CP_INTERFACE: ens7f1 + CRUCIBLE: "false" + ISOLATED_CORES: 2-39,42-79 + JETLAG_BRANCH: main + LAB_CLOUD: cloud19 + LAB_INTERFACE: eno3 + LABEL: node-role.kubernetes.io/worker-dpdk,node-role.kubernetes.io/worker-metallb + OCP_BUILD: ga + OCP_VERSION: 4.18.5 + PUBLIC_VLAN: "true" + RESERVED_CORES: 0,40,1,41 + SRIOV_NODE_SELECTOR: node-role.kubernetes.io/worker + SRIOV_NUM_VFS: "64" + SRIOV_PF_NAME: ens7f0 + TELCO: "true" + test: + - chain: openshift-qe-installer-bm-ping + - chain: openshift-qe-installer-bm-deploy + - chain: openshift-qe-cluster-health + - chain: openshift-qe-installer-bm-day2-label + - chain: openshift-qe-installer-bm-day2-sriov + - chain: openshift-qe-installer-bm-day2-metallb + - chain: openshift-qe-installer-bm-day2-perf-profile-rds-core + - ref: cloud-bulldozer-e2e-benchmarking-rds-core zz_generated_metadata: branch: master org: cloud-bulldozer diff --git a/ci-operator/jobs/cloud-bulldozer/e2e-benchmarking/cloud-bulldozer-e2e-benchmarking-master-presubmits.yaml b/ci-operator/jobs/cloud-bulldozer/e2e-benchmarking/cloud-bulldozer-e2e-benchmarking-master-presubmits.yaml index 22dfa0de57c40..46a7aed79f03d 100644 --- a/ci-operator/jobs/cloud-bulldozer/e2e-benchmarking/cloud-bulldozer-e2e-benchmarking-master-presubmits.yaml +++ b/ci-operator/jobs/cloud-bulldozer/e2e-benchmarking/cloud-bulldozer-e2e-benchmarking-master-presubmits.yaml @@ -1125,6 +1125,82 @@ presubmits: secret: secretName: result-aggregator trigger: (?m)^/test( | .* )(e2e-pvc-density-single-node|remaining-required),?($|\s.*) + - agent: kubernetes + always_run: false + branches: + - ^master$ + - ^master- + cluster: build11 + context: ci/prow/e2e-rds-core-mno + decorate: true + decoration_config: + skip_cloning: true + labels: + capability/intranet: intranet + ci-operator.openshift.io/cloud: metal-perfscale-jetlag + ci-operator.openshift.io/cloud-cluster-profile: metal-perfscale-jetlag + ci.openshift.io/generator: prowgen + job-release: "4.18" + pj-rehearse.openshift.io/can-be-rehearsed: "true" + name: pull-ci-cloud-bulldozer-e2e-benchmarking-master-e2e-rds-core-mno + rerun_command: /test e2e-rds-core-mno + spec: + containers: + - args: + - --gcs-upload-secret=/secrets/gcs/service-account.json + - --image-import-pull-secret=/etc/pull-secret/.dockerconfigjson + - --lease-server-credentials-file=/etc/boskos/credentials + - --report-credentials-file=/etc/report/credentials + - --secret-dir=/secrets/ci-pull-credentials + - --target=e2e-rds-core-mno + command: + - ci-operator + image: ci-operator:latest + imagePullPolicy: Always + name: "" + resources: + requests: + cpu: 10m + volumeMounts: + - mountPath: /etc/boskos + name: boskos + readOnly: true + - mountPath: /secrets/ci-pull-credentials + name: ci-pull-credentials + readOnly: true + - mountPath: /secrets/gcs + name: gcs-credentials + readOnly: true + - mountPath: /secrets/manifest-tool + name: manifest-tool-local-pusher + readOnly: true + - mountPath: /etc/pull-secret + name: pull-secret + readOnly: true + - mountPath: /etc/report + name: result-aggregator + readOnly: true + serviceAccountName: ci-operator + volumes: + - name: boskos + secret: + items: + - key: credentials + path: credentials + secretName: boskos-credentials + - name: ci-pull-credentials + secret: + secretName: ci-pull-credentials + - name: manifest-tool-local-pusher + secret: + secretName: manifest-tool-local-pusher + - name: pull-secret + secret: + secretName: registry-pull-credentials + - name: result-aggregator + secret: + secretName: result-aggregator + trigger: (?m)^/test( | .* )(e2e-rds-core-mno|remaining-required),?($|\s.*) - agent: kubernetes always_run: false branches: @@ -1206,7 +1282,7 @@ presubmits: - ^master$ - ^master- cluster: build11 - context: ci/prow/e2e-udn-density-pods-l2 + context: ci/prow/e2e-udn-density-pods-l2-single-node decorate: true decoration_config: skip_cloning: true @@ -1216,8 +1292,8 @@ presubmits: ci.openshift.io/generator: prowgen job-release: "4.18" pj-rehearse.openshift.io/can-be-rehearsed: "true" - name: pull-ci-cloud-bulldozer-e2e-benchmarking-master-e2e-udn-density-pods-l2 - rerun_command: /test e2e-udn-density-pods-l2 + name: pull-ci-cloud-bulldozer-e2e-benchmarking-master-e2e-udn-density-pods-l2-single-node + rerun_command: /test e2e-udn-density-pods-l2-single-node spec: containers: - args: @@ -1226,7 +1302,7 @@ presubmits: - --lease-server-credentials-file=/etc/boskos/credentials - --report-credentials-file=/etc/report/credentials - --secret-dir=/secrets/ci-pull-credentials - - --target=e2e-udn-density-pods-l2 + - --target=e2e-udn-density-pods-l2-single-node command: - ci-operator image: ci-operator:latest @@ -1274,14 +1350,14 @@ presubmits: - name: result-aggregator secret: secretName: result-aggregator - trigger: (?m)^/test( | .* )(e2e-udn-density-pods-l2|remaining-required),?($|\s.*) + trigger: (?m)^/test( | .* )(e2e-udn-density-pods-l2-single-node|remaining-required),?($|\s.*) - agent: kubernetes always_run: false branches: - ^master$ - ^master- cluster: build11 - context: ci/prow/e2e-udn-density-pods-l3 + context: ci/prow/e2e-udn-density-pods-l3-single-node decorate: true decoration_config: skip_cloning: true @@ -1291,8 +1367,8 @@ presubmits: ci.openshift.io/generator: prowgen job-release: "4.18" pj-rehearse.openshift.io/can-be-rehearsed: "true" - name: pull-ci-cloud-bulldozer-e2e-benchmarking-master-e2e-udn-density-pods-l3 - rerun_command: /test e2e-udn-density-pods-l3 + name: pull-ci-cloud-bulldozer-e2e-benchmarking-master-e2e-udn-density-pods-l3-single-node + rerun_command: /test e2e-udn-density-pods-l3-single-node spec: containers: - args: @@ -1301,7 +1377,7 @@ presubmits: - --lease-server-credentials-file=/etc/boskos/credentials - --report-credentials-file=/etc/report/credentials - --secret-dir=/secrets/ci-pull-credentials - - --target=e2e-udn-density-pods-l3 + - --target=e2e-udn-density-pods-l3-single-node command: - ci-operator image: ci-operator:latest @@ -1349,7 +1425,7 @@ presubmits: - name: result-aggregator secret: secretName: result-aggregator - trigger: (?m)^/test( | .* )(e2e-udn-density-pods-l3|remaining-required),?($|\s.*) + trigger: (?m)^/test( | .* )(e2e-udn-density-pods-l3-single-node|remaining-required),?($|\s.*) - agent: kubernetes always_run: false branches: diff --git a/ci-operator/step-registry/cloud-bulldozer/e2e-benchmarking/rds-core/OWNERS b/ci-operator/step-registry/cloud-bulldozer/e2e-benchmarking/rds-core/OWNERS new file mode 120000 index 0000000000000..ec405d65a79df --- /dev/null +++ b/ci-operator/step-registry/cloud-bulldozer/e2e-benchmarking/rds-core/OWNERS @@ -0,0 +1 @@ +../OWNERS \ No newline at end of file diff --git a/ci-operator/step-registry/cloud-bulldozer/e2e-benchmarking/rds-core/cloud-bulldozer-e2e-benchmarking-rds-core-commands.sh b/ci-operator/step-registry/cloud-bulldozer/e2e-benchmarking/rds-core/cloud-bulldozer-e2e-benchmarking-rds-core-commands.sh new file mode 100644 index 0000000000000..68b7758328862 --- /dev/null +++ b/ci-operator/step-registry/cloud-bulldozer/e2e-benchmarking/rds-core/cloud-bulldozer-e2e-benchmarking-rds-core-commands.sh @@ -0,0 +1,45 @@ +#!/bin/bash +set -o errexit +set -o nounset +set -o pipefail +set -x +cat /etc/os-release +oc config view +oc projects +pushd /tmp + + +if [[ "$JOB_TYPE" == "presubmit" ]] && [[ "$REPO_OWNER" = "cloud-bulldozer" ]] && [[ "$REPO_NAME" = "e2e-benchmarking" ]]; then + if [ ${BAREMETAL} == "true" ]; then + SSH_ARGS="-i /bm/jh_priv_ssh_key -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null" + bastion="$(cat /bm/address)" + # Copy over the kubeconfig + if [ ! -f "${SHARED_DIR}/kubeconfig" ]; then + ssh ${SSH_ARGS} root@$bastion "cat ${KUBECONFIG_PATH}" > /tmp/kubeconfig + export KUBECONFIG=/tmp/kubeconfig + else + export KUBECONFIG=${SHARED_DIR}/kubeconfig + fi + # Setup socks proxy + ssh ${SSH_ARGS} root@$bastion -fNT -D 12345 + export https_proxy=socks5://localhost:12345 + export http_proxy=socks5://localhost:12345 + oc --kubeconfig="$KUBECONFIG" config set-cluster bm --proxy-url=socks5://localhost:12345 + fi + git clone https://github.com/${REPO_OWNER}/${REPO_NAME} + pushd ${REPO_NAME} + git config --global user.email "ocp-perfscale@redhat.com" + git config --global user.name "ocp-perfscale" + git pull origin pull/${PULL_NUMBER}/head:${PULL_NUMBER} --rebase + git switch ${PULL_NUMBER} + pushd workloads/kube-burner-ocp-wrapper + export WORKLOAD=rds-core + ES_SERVER="" ITERATIONS=1 PPROF=false CHURN=false PERFORMANCE_PROFILE="cpt-pao" ./run.sh + + if [ ${BAREMETAL} == "true" ]; then + # kill the ssh tunnel so the job completes + pkill ssh + fi +else + echo "We are sorry, this job is only meant for cloud-bulldozer/e2e-benchmarking repo PR testing" +fi diff --git a/ci-operator/step-registry/cloud-bulldozer/e2e-benchmarking/rds-core/cloud-bulldozer-e2e-benchmarking-rds-core-ref.metadata.json b/ci-operator/step-registry/cloud-bulldozer/e2e-benchmarking/rds-core/cloud-bulldozer-e2e-benchmarking-rds-core-ref.metadata.json new file mode 100644 index 0000000000000..ac7b412d9c024 --- /dev/null +++ b/ci-operator/step-registry/cloud-bulldozer/e2e-benchmarking/rds-core/cloud-bulldozer-e2e-benchmarking-rds-core-ref.metadata.json @@ -0,0 +1,27 @@ +{ + "path": "cloud-bulldozer/e2e-benchmarking/rds-core/cloud-bulldozer-e2e-benchmarking-rds-core-ref.yaml", + "owners": { + "approvers": [ + "jtaleric", + "rsevilla87", + "venkataanil", + "afcollins", + "mukrishn", + "mohit-sheth", + "morenod", + "chentex", + "vishnuchalla" + ], + "reviewers": [ + "jtaleric", + "rsevilla87", + "venkataanil", + "afcollins", + "mukrishn", + "mohit-sheth", + "morenod", + "chentex", + "vishnuchalla" + ] + } +} \ No newline at end of file diff --git a/ci-operator/step-registry/cloud-bulldozer/e2e-benchmarking/rds-core/cloud-bulldozer-e2e-benchmarking-rds-core-ref.yaml b/ci-operator/step-registry/cloud-bulldozer/e2e-benchmarking/rds-core/cloud-bulldozer-e2e-benchmarking-rds-core-ref.yaml new file mode 100644 index 0000000000000..cf7439c6879dd --- /dev/null +++ b/ci-operator/step-registry/cloud-bulldozer/e2e-benchmarking/rds-core/cloud-bulldozer-e2e-benchmarking-rds-core-ref.yaml @@ -0,0 +1,31 @@ +ref: + as: cloud-bulldozer-e2e-benchmarking-rds-core + from_image: + namespace: e2e + name: e2e-benchmarking + tag: latest + cli: latest + commands: cloud-bulldozer-e2e-benchmarking-rds-core-commands.sh + credentials: + - namespace: test-credentials + name: cluster-secrets-metal-perscale-jetlag + mount_path: /secret + - namespace: test-credentials + name: perfscale-metal-bastion + mount_path: /bm + timeout: 6h + resources: + requests: + cpu: 100m + memory: 100Mi + documentation: >- + This step runs the perfscale rds-core workload in the deployed cluster + env: + - name: BAREMETAL + default: "true" + documentation: |- + Set to true if the job is for baremetal + - name: KUBECONFIG_PATH + default: "~/mno/kubeconfig" + documentation: |- + Set kubeconfig path inside the bm, default to ~/mno/kubeconfig \ No newline at end of file diff --git a/ci-operator/step-registry/openshift-qe/installer/bm/day2/label/openshift-qe-installer-bm-day2-label-commands.sh b/ci-operator/step-registry/openshift-qe/installer/bm/day2/label/openshift-qe-installer-bm-day2-label-commands.sh index 87085ff609472..30dd858df10b8 100644 --- a/ci-operator/step-registry/openshift-qe/installer/bm/day2/label/openshift-qe-installer-bm-day2-label-commands.sh +++ b/ci-operator/step-registry/openshift-qe/installer/bm/day2/label/openshift-qe-installer-bm-day2-label-commands.sh @@ -9,13 +9,17 @@ if [ ${BAREMETAL} == "true" ]; then SSH_ARGS="-i /bm/jh_priv_ssh_key -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null" bastion="$(cat /bm/address)" # Copy over the kubeconfig - ssh ${SSH_ARGS} root@$bastion "cat ${KUBECONFIG_PATH}" > /tmp/kubeconfig + if [ ! -f "${SHARED_DIR}/kubeconfig" ]; then + ssh ${SSH_ARGS} root@$bastion "cat ${KUBECONFIG_PATH}" > /tmp/kubeconfig + export KUBECONFIG=/tmp/kubeconfig + else + export KUBECONFIG=${SHARED_DIR}/kubeconfig + fi # Setup socks proxy ssh ${SSH_ARGS} root@$bastion -fNT -D 12345 - export KUBECONFIG=/tmp/kubeconfig export https_proxy=socks5://localhost:12345 export http_proxy=socks5://localhost:12345 - oc --kubeconfig=/tmp/kubeconfig config set-cluster bm --proxy-url=socks5://localhost:12345 + oc --kubeconfig="$KUBECONFIG" config set-cluster bm --proxy-url=socks5://localhost:12345 fi oc config view @@ -33,10 +37,14 @@ fi if [ ${TELCO} == "true" ]; then # Label the nodes - if [ ${LABEL} ]; then - for node in $(oc get node -oname -l node-role.kubernetes.io/worker | head -n ${LABEL_NUM_NODES} | grep -oP "^node/\K.*") - do - oc label node $node ${LABEL}="" --overwrite + if [ -n "${LABEL}" ]; then + for node in $(oc get node -oname -l node-role.kubernetes.io/worker | head -n ${LABEL_NUM_NODES} | grep -oP "^node/\K.*"); do + for label in $(echo "${LABEL}" | tr ',' '\n' | sed 's/^ *//;s/ *$//'); do + if [ -n "$label" ]; then + echo "Applying label: $label to node: $node" + oc label node "$node" "$label=" --overwrite + fi + done done fi fi diff --git a/ci-operator/step-registry/openshift-qe/installer/bm/day2/label/openshift-qe-installer-bm-day2-label-ref.yaml b/ci-operator/step-registry/openshift-qe/installer/bm/day2/label/openshift-qe-installer-bm-day2-label-ref.yaml index 306929e06ddf5..5b0145180bc82 100644 --- a/ci-operator/step-registry/openshift-qe/installer/bm/day2/label/openshift-qe-installer-bm-day2-label-ref.yaml +++ b/ci-operator/step-registry/openshift-qe/installer/bm/day2/label/openshift-qe-installer-bm-day2-label-ref.yaml @@ -26,7 +26,7 @@ ref: - name: LABEL default: "node-role.kubernetes.io/worker-spk" documentation: |- - Label to apply to worker nodes, if any + Comma separated list of labels to apply to worker nodes, if any - name: LABEL_NUM_NODES default: "1" documentation: |- diff --git a/ci-operator/step-registry/openshift-qe/installer/bm/day2/metallb/openshift-qe-installer-bm-day2-metallb-commands.sh b/ci-operator/step-registry/openshift-qe/installer/bm/day2/metallb/openshift-qe-installer-bm-day2-metallb-commands.sh index ed0c75fc446c0..3e92b5b233163 100644 --- a/ci-operator/step-registry/openshift-qe/installer/bm/day2/metallb/openshift-qe-installer-bm-day2-metallb-commands.sh +++ b/ci-operator/step-registry/openshift-qe/installer/bm/day2/metallb/openshift-qe-installer-bm-day2-metallb-commands.sh @@ -9,13 +9,17 @@ if [ ${BAREMETAL} == "true" ]; then SSH_ARGS="-i /bm/jh_priv_ssh_key -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null" bastion="$(cat /bm/address)" # Copy over the kubeconfig - ssh ${SSH_ARGS} root@$bastion "cat ${KUBECONFIG_PATH}" > /tmp/kubeconfig + if [ ! -f "${SHARED_DIR}/kubeconfig" ]; then + ssh ${SSH_ARGS} root@$bastion "cat ${KUBECONFIG_PATH}" > /tmp/kubeconfig + export KUBECONFIG=/tmp/kubeconfig + else + export KUBECONFIG=${SHARED_DIR}/kubeconfig + fi # Setup socks proxy ssh ${SSH_ARGS} root@$bastion -fNT -D 12345 - export KUBECONFIG=/tmp/kubeconfig export https_proxy=socks5://localhost:12345 export http_proxy=socks5://localhost:12345 - oc --kubeconfig=/tmp/kubeconfig config set-cluster bm --proxy-url=socks5://localhost:12345 + oc --kubeconfig="$KUBECONFIG" config set-cluster bm --proxy-url=socks5://localhost:12345 fi oc config view diff --git a/ci-operator/step-registry/openshift-qe/installer/bm/day2/perf-profile/rds-core/openshift-qe-installer-bm-day2-perf-profile-rds-core-commands.sh b/ci-operator/step-registry/openshift-qe/installer/bm/day2/perf-profile/rds-core/openshift-qe-installer-bm-day2-perf-profile-rds-core-commands.sh index 691b003f69de1..5f33d407e7725 100644 --- a/ci-operator/step-registry/openshift-qe/installer/bm/day2/perf-profile/rds-core/openshift-qe-installer-bm-day2-perf-profile-rds-core-commands.sh +++ b/ci-operator/step-registry/openshift-qe/installer/bm/day2/perf-profile/rds-core/openshift-qe-installer-bm-day2-perf-profile-rds-core-commands.sh @@ -9,13 +9,17 @@ if [ ${BAREMETAL} == "true" ]; then SSH_ARGS="-i /bm/jh_priv_ssh_key -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null" bastion="$(cat /bm/address)" # Copy over the kubeconfig - ssh ${SSH_ARGS} root@$bastion "cat ${KUBECONFIG_PATH}" > /tmp/kubeconfig + if [ ! -f "${SHARED_DIR}/kubeconfig" ]; then + ssh ${SSH_ARGS} root@$bastion "cat ${KUBECONFIG_PATH}" > /tmp/kubeconfig + export KUBECONFIG=/tmp/kubeconfig + else + export KUBECONFIG=${SHARED_DIR}/kubeconfig + fi # Setup socks proxy ssh ${SSH_ARGS} root@$bastion -fNT -D 12345 - export KUBECONFIG=/tmp/kubeconfig export https_proxy=socks5://localhost:12345 export http_proxy=socks5://localhost:12345 - oc --kubeconfig=/tmp/kubeconfig config set-cluster bm --proxy-url=socks5://localhost:12345 + oc --kubeconfig="$KUBECONFIG" config set-cluster bm --proxy-url=socks5://localhost:12345 fi oc config view @@ -60,8 +64,8 @@ spec: userLevelNetworking: false EOF -sleep 60 kubectl wait --for jsonpath='{.status.updatedMachineCount}'="$(oc get node --no-headers -l node-role.kubernetes.io/worker= | wc -l)" --timeout=30m mcp worker +oc adm wait-for-stable-cluster --minimum-stable-period=2m --timeout=20m if [ ${BAREMETAL} == "true" ]; then # kill the ssh tunnel so the job completes diff --git a/ci-operator/step-registry/openshift-qe/installer/bm/day2/sriov/openshift-qe-installer-bm-day2-sriov-commands.sh b/ci-operator/step-registry/openshift-qe/installer/bm/day2/sriov/openshift-qe-installer-bm-day2-sriov-commands.sh index da60337d32d70..0e7ed31eaee80 100644 --- a/ci-operator/step-registry/openshift-qe/installer/bm/day2/sriov/openshift-qe-installer-bm-day2-sriov-commands.sh +++ b/ci-operator/step-registry/openshift-qe/installer/bm/day2/sriov/openshift-qe-installer-bm-day2-sriov-commands.sh @@ -9,13 +9,17 @@ if [ ${BAREMETAL} == "true" ]; then SSH_ARGS="-i /bm/jh_priv_ssh_key -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null" bastion="$(cat /bm/address)" # Copy over the kubeconfig - ssh ${SSH_ARGS} root@$bastion "cat ${KUBECONFIG_PATH}" > /tmp/kubeconfig + if [ ! -f "${SHARED_DIR}/kubeconfig" ]; then + ssh ${SSH_ARGS} root@$bastion "cat ${KUBECONFIG_PATH}" > /tmp/kubeconfig + export KUBECONFIG=/tmp/kubeconfig + else + export KUBECONFIG=${SHARED_DIR}/kubeconfig + fi # Setup socks proxy ssh ${SSH_ARGS} root@$bastion -fNT -D 12345 - export KUBECONFIG=/tmp/kubeconfig export https_proxy=socks5://localhost:12345 export http_proxy=socks5://localhost:12345 - oc --kubeconfig=/tmp/kubeconfig config set-cluster bm --proxy-url=socks5://localhost:12345 + oc --kubeconfig="$KUBECONFIG" config set-cluster bm --proxy-url=socks5://localhost:12345 fi oc config view