Jump to: Complete Features | Incomplete Features | Complete Epics | Incomplete Epics | Other Complete | Other Incomplete |
Note: this page shows the Feature-Based Change Log for a release
These features were completed when this image was assembled
Requirement | Notes | isMvp? |
---|
CI - MUST be running successfully with test automation | This is a requirement for ALL features. | YES |
Release Technical Enablement | Provide necessary release enablement details and documents. | YES |
This Section:
This Section: What does the person writing code, testing, documenting need to know? What context can be provided to frame this feature.
Questions to be addressed:
Customers typically run more than one cluster and/or applications deployed across different regions. In such a hybrid cloud environment, aggregating metrics is a key requirement to avoid admins and or applications owners to drop in into individual clusters to troubleshoot specific problems. And since Red Hat does not offer a standalone metrics aggregation service, customers have started to use existing, home-grown technologies based on, for example, InfluxDB or Kafka to achieve that.
In summary:
Expose Prometheus remote-write configuration via our OpenShift Monitoring (Cluster and User Workload) ConfigMap to allow customers to push time-series data to a remote location.
Please note that we do not plan to support certain third party “receivers” with this solution. Customers will be responsible to ensure an appropriate receiving component is up and running that implements the “remote-write” API. Here is a list of possible “receiver” plugins.
User configures one of the available ConfigMaps to allow node_cpu_seconds_total to be written into a remote Thanos system.
Remote write allows to replicate time-series data to a remote location. This is important for several scenarios like you want to use "remote-write enabled" systems (e.g. InfluxDB) for long-term storage and historical analysis; as well as for aggregating metrics across multiple clusters.
Currently, remote-write is in an experimental stage in Prometheus[1] but the chances are high that it will be stable some time this year. Furthermore, we are using remote-write pretty extensively already for Telemetry as well as ACM in the near future. With that in mind, we think that we are in a perfect spot to move what we already have[2] from dev preview to at least tech preview.
[1] https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#prometheusspec - "If specified, the remote_write spec. This is an experimental feature, it may change in any upcoming release in a breaking way." The experimental flag was removed.
We'll want to give user the option to add remote_write configs to both the cluster monitoring and UWM.
AC:
As a OpenShift administrator, I would like a solution that allows me to upgrade from one EUS version to another with very few steps and only minimum disruption to application workloads while still allowing new application services to be deployed.
Functional requirements break down into the following prioritized list:
Non-Functional Requirements
Requirement | Notes | isMvp? |
---|---|---|
Release Technical Enablement | Provide necessary release enablement details and documents. | YES |
Documentation | This is a requirement for ALL end user facing features | YES |
Questions to be addressed:
EUS to EUS Focus Area Discussion: https://docs.google.com/document/d/17I1Wd7-R1wRxmboyv1jUFHFkqQcBTorJccdGi1ZqjQE/edit?usp=sharing
EUS Feature: https://issues.redhat.com/browse/OCPPLAN-5484
Use case
As an Admin, one of my operators says it can't be upgraded. An action is required, as I will be unable to upgrade to a .y minor release until I fix the problem.
Possible Design Solution
Create a message saying you can upgrade to .z patch releases even when one of your cluster operators says it's not upgradeable.
Ideally, the message string on the condition explains what the admin needs to resolve , and until they resolve the issue they can only update within their current z stream.
Questions
Need to do a little R&D to find out when this happens and what happens when you're in this state.
Designs (WIP)
Doc: https://docs.google.com/document/d/1iUZlHbv5nTYtb7Cq4rn_bYPqD4Jtie59xIogxN-2Eyc/edit#heading=h.5eoflxvaj1m4
OCP/Telco Definition of Done
Epic Template descriptions and documentation.
<--- Cut-n-Paste the entire contents of this description into your new Epic --->
this will allow cipher customization work to be completed.
When this image was assembled, these features were not yet completed. Therefore, only the Jira Cards included here are part of this release
Story: As an OpenShift admin I want the internal registry of the cluster use storage from Azure Stack Hub so that I can run a fully supported OpenShift environment on that infrastructure provider.
As a cluster administrator,
I want OpenShift to include a recent CoreDNS version,
so that I have the latest available performance and security fixes.
We should strive to follow upstream CoreDNS releases by bumping openshift/coredns with every OpenShift 4.y release, so that OpenShift benefits from upstream performance and security fixes, and so that we avoid large version-number jumps when an urgently needed change necessitates bumping CoreDNS to the latest upstream release. This bump should happen as early as possible in the OpenShift release cycle, so as to maximize soak time.
For OpenShift 4.9, this means bumping from CoreDNS 1.8.1 to 1.8.3, or possibly a later release should one ship before we do the bump.
Note that CoreDNS upstream does not maintain release branches—that is, once CoreDNS is released, there will be no further 1.8.z releases—so we may be better off updating to 1.9 as soon as it is released, rather than staying on the 1.8 series which would then be unmaintained.
We may consider bumping CoreDNS again during the OpenShift 4.9 release cycle if upstream ships additional releases during the 4.9 development cycle. However, we will need to weigh the risks and available remaining soak time in the release schedule before doing so, should that contingency arise.
We drive OpenShift cross-market customer success and new customer adoption with constant improvements and feature additions to the existing capabilities of our OpenShift Core Networking (SDN and Network Edge). This feature captures that natural progression of the product.
There are definitely grey areas, but in general:
Questions to be addressed:
Plugin teams need a mechanism to extend the OCP console that is decoupled enough so they can deliver at the cadence of their projects and not be forced in to the OCP Console release timelines.
The OCP Console Dynamic Plugin Framework will enable all our plugin teams to do the following:
Requirement | Notes | isMvp? |
---|---|---|
UI to enable and disable plugins | YES | |
Dynamic Plugin Framework in place | YES | |
Testing Infra up and running | YES | |
Docs and read me for creating and testing Plugins | YES | |
CI - MUST be running successfully with test automation | This is a requirement for ALL features. | YES |
Release Technical Enablement | Provide necessary release enablement details and documents. | YES |
Documentation Considerations
Questions to be addressed:
The dynamic plugins enhancement describes a `disable-plugins` query parameter for disabling specific console plugins.
This has no effect on static plugins, which are built into the Console application.
We need to support localization of dynamic plugins. The current proposal is to have one i18n namespace per dynamic plugin with a fixed name: `${plugin-name}-plugin`. Since console will know the list of plugins on startup, it can add these namespaces to the i18next config.
The console backend will need to implement an endpoint at the i18next load path. The endpoint will see if the namespace matches the known plugin namespaces. If so, it will proxy to the plugin. Otherwise it will serve the static file from the local filesystem.
We need a UI for enabling and disabling dynamic plugins. The plugins will be discovered either through a custom resource or an annotation on the operator CSV. The enabled plugins will be persisted through the operator config (consoles.operator.openshift.io).
This story tracks enabling and disabling the plugin during operator install through Cluster Settings. This is needed in the future if a plugin is installed outside of an OLM operator.
UX design: https://github.com/openshift/openshift-origin-design/pull/536
Requirement | Notes | isMvp? |
---|
CI - MUST be running successfully with test automation | This is a requirement for ALL features. | YES |
Release Technical Enablement | Provide necessary release enablement details and documents. | YES |
This Section:
This Section: What does the person writing code, testing, documenting need to know? What context can be provided to frame this feature.
Questions to be addressed:
Currently we are showing system projects within the list view of the Projects page. As stated here https://issues.redhat.com/browse/RFE-185, there are many projects that are considered as system projects that are not important to the user. The value should be remember across sessions, but it something we should be able to toggle directly from the list.
In OpenShift, reserved namespaces are `default`, `openshift`, and those that start with `openshift-`, `kubernetes-`, or `kube-`.
As a admin, I want to be able to access the node logs from the nodes detail page in order to troubleshoot what is going on with the node.
We should support getting node logs for different units for node journal logs and evaluate the other CLI flags.
We currently have a gap with the CLI:
We need to investigate whether the k8s API supports WebSockets for streaming node logs.
Goal
By default the Cluster Utilization card should not include metrics from `master` nodes in its queries for CPU, Memory, Filesystem, Network, and Pod count.
A new filter option should allow users to toggle between a combined view of what is seen on the Cluster Utilization card today, which is mostly useful on small clusters where masters are schedulable for user workloads.
Assets
Background
As discussed in this thread, the`kube_node_role` metric available since 4.3 should allow us to filter the card's PromQL queries to not include master node metrics.
This filtered view would likely make the card's data more useful for users who aren't running their workloads on masters, like OpenShift Dedicated users.
As noted by some folks during design discussions, this filter isn't perfect, and wouldn't filter out the data from "Infra" nodes that users may have set up using labels/taints. Until we determine a good way to provide more advanced filtering, this basic "Include masters" checkbox is still more flexible than what the card offers today.
Requirements
OpenShift console supports new features and elevated experience for Operator Lifecycle Manager (OLM) Operators and Cluster Operators.
OCP Console improves the controls and visibility for managing vendor-provided software in customers’ infrastructure and making these solutions available for customers' internal users.
To achieve this,
We want to make sure OLM’s and Cluster Operators' new features are exposed in the console so admin console users can benefit from them.
Requirement | Notes | isMvp? |
---|---|---|
OCP console supports the latest OLM APIs and features | This is a requirement for ALL features. | YES |
OCP console improves visibility to Cluster Operators related resources and features. | This is a requirement for ALL features. | YES |
(Optional) Use Cases
<--- Remove this text when creating a Feature in Jira, only for reference --->
* Main success scenarios - high-level user stories
* Alternate flow/scenarios - high-level user stories
* ...
Questions to answer...
How will the user interact with this feature?
Which users will use this and when will they use it?
Is this feature used as part of the current user interface?
Out of Scope
<--- Remove this text when creating a Feature in Jira, only for reference --->
# List of non-requirements or things not included in this feature
# ...
Background, and strategic fit
<--- Remove this text when creating a Feature in Jira, only for reference --->
What does the person writing code, testing, documenting need to know? What context can be provided to frame this feature.
Assumptions
<--- Remove this text when creating a Feature in Jira, only for reference --->
* Are there assumptions being made regarding prerequisites and dependencies?
* Are there assumptions about hardware, software or people resources?
* ...
Customer Considerations
<--- Remove this text when creating a Feature in Jira, only for reference --->
* Are there specific customer environments that need to be considered (such as working with existing h/w and software)?
...
Documentation Considerations
<--- Remove this text when creating a Feature in Jira, only for reference --->
Questions to be addressed:
* What educational or reference material (docs) is required to support this product feature? For users/admins? Other functions (security officers, etc)?
* Does this feature have doc impact?
* New Content, Updates to existing content, Release Note, or No Doc Impact
* If unsure and no Technical Writer is available, please contact Content Strategy.
* What concepts do customers need to understand to be successful in [action]?
* How do we expect customers will use the feature? For what purpose(s)?
* What reference material might a customer want/need to complete [action]?
* Is there source material that can be used as reference for the Technical Writer in writing the content? If yes, please link if available.
* What is the doc impact (New Content, Updates to existing content, or Release Note)?
OLM is adding a property to the CSV to signal that the operator should clean up the operand on operator uninstall. See https://github.com/operator-framework/enhancements/pull/46
Console will need to add a checkbox to the UI to prompt ask the user if the operand should be cleaned up (with strong warnings about what this means). On delete, console should set the `spec.cleanup` property on the CSV to indicate whether cleanup should happen.
Additionally, console needs to be able to show proper status for CSVs that are terminating in the UI so it's clear the operator is being deleted and cleanup is in progress. If there are errors with cleanup, those should be surfaced back through the UI.
Depends on OLM-1733
As a user of OperatorHub, I'd like to have an improved "status display" for Operators being installed before so I can better understand if those Operators actually being successfully installed or require additional actions from me to complete the installation.
Improve visibility of Operator installation status on OperatorHub page
OperatorHub page currently shows an Operator as Installed as long as a Subscription object exists for that operator in the current namespace.
This can be misleading because the installation could be stalled or require additional interactions from the user (e.g. "manual upgrade approval") in order to complete the installation.
The console could potentially have some indication of an "in-between" or "requires attention" state for Operators that are in these states + links to the actual "Installed Operators" page for more details.
1. BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1899359
2. RFE: https://issues.redhat.com/browse/RFE-1691
Current version is 2.5.1, and we are still on 1.x. Updating the package is required to support the additional validation keywords in CONSOLE-2807.
https://github.com/rjsf-team/react-jsonschema-form/releases
Breaking changes are listed in the v2 notes:
https://github.com/rjsf-team/react-jsonschema-form/releases/tag/v2.0.0
Key Objective
Providing our customers with a single simplified User Experience(Hybrid Cloud Console)that is extensible, can run locally or in the cloud, and is capable of managing the fleet to deep diving into a single cluster.
Why customers want this?
Why we want this?
Phase 1 Goal: Get something to market (OCP 4.8, ACM 2.3)
Phase 1 —> OCP deploys ACM Hub Operator —> ACM Perspective becomes available —> User can switch between ACM multi-cluster view and local OCP Console —> No SSO user has to login in twice
Phase 2 Goal: Productization of the united Console (OCP 4.9, ACM 2.4)
Phase 2 Use Cases:
We need to coordinate with the ACM team so that the masthead looks the same when switching between contexts. This might require us to consume a common masthead component in OCP console.
The ACM team will need to honor our custom branding configuration so that the logo does not change when switching contexts.
Known differences:
Open questions:
OCP/Telco Definition of Done
Feature Template descriptions and documentation.
Feature Overview
Enable customers to access Google services from workloads on OpenShift clusters using Google Workload Identity (aka WIF)
https://cloud.google.com/kubernetes-engine/docs/concepts/workload-identity
Requirement | Notes | isMvp? |
---|---|---|
CI - MUST be running successfully with test automation | This is a requirement for ALL features. | YES |
Release Technical Enablement | Provide necessary release enablement details and documents. | YES |
This Section:
This Section: What does the person writing code, testing, documenting need to know? What context can be provided to frame this feature.
Questions to be addressed:
Dependencies (internal and external)
Investigate if this will work for OpenShift components similar to how we implemented STS.
Can we distribute credentials fashion that is transparent to the callers (as to whether it is normal service account of a short lived token) like we did for AWS?
What changes would be required for operators?
Can ccoctl do the heavy lifting as we did for AWS?
Enable sharing ConfigMap and Secret across namespaces
Requirement | Notes | isMvp? |
---|---|---|
Secrets and ConfigMaps can get shared across namespaces | YES |
NA
NA
Consumption of RHEL entitlements has been a challenge on OCP 4 since it moved to a cluster-based entitlement model compared to the node-based (RHEL subscription manager) entitlement mode. In order to provide a sufficiently similar experience to OCP 3, the entitlement certificates that are made available on the cluster (OCPBU-93) should be shared across namespaces in order to prevent the need for cluster admin to copy these entitlements in each namespace which leads to additional operational challenges for updating and refreshing them.
Questions to be addressed:
* What educational or reference material (docs) is required to support this product feature? For users/admins? Other functions (security officers, etc)?
* Does this feature have doc impact?
* New Content, Updates to existing content, Release Note, or No Doc Impact
* If unsure and no Technical Writer is available, please contact Content Strategy.
* What concepts do customers need to understand to be successful in [action]?
* How do we expect customers will use the feature? For what purpose(s)?
* What reference material might a customer want/need to complete [action]?
* Is there source material that can be used as reference for the Technical Writer in writing the content? If yes, please link if available.
* What is the doc impact (New Content, Updates to existing content, or Release Note)?
OCP/Telco Definition of Done
Epic Template descriptions and documentation.
<--- Cut-n-Paste the entire contents of this description into your new Epic --->
Reduce the OpenShift platform and associated RH provided components to a single physical core on Intel Sapphire Rapids platform for vDU deployments on SingleNode OpenShift.
Requirement | Notes | isMvp? |
---|---|---|
CI - MUST be running successfully with test automation | This is a requirement for ALL features. | YES |
Release Technical Enablement | Provide necessary release enablement details and documents. | YES |
Provide a mechanism to tune the platform to use only one physical core. |
Users need to be able to tune different platforms. | YES |
Allow for full zero touch provisioning of a node with the minimal core budget configuration. | Node provisioned with SNO Far Edge provisioning method - i.e. ZTP via RHACM, using DU Profile. | YES |
Platform meets all MVP KPIs | YES |
Questions to be addressed:
Currently, OpenShift Monitoring is a full E2E solution for monitoring infrastructure and workloads locally inside a single cluster. It comes with everything that an SRE needs from allowing to configure scraping of metrics to configuring where alerts go.
With deployment models like Single Node OpenShift and/or resource restricted environments, we now face challenges that a lot of the functions are already available centrally or are not necessary due to the nature of a specific cluster (e.g. Far Edge). Therefore, you don't need to deploy components that expose these functions.
Also, Grafana is not FIPS compliant, because it uses PBKDF2 from x/crypto to derive a 32 byte key from a secret and salt, which is then used as the encryption key. Quoting https://bugzilla.redhat.com/show_bug.cgi?id=1931408#c10 "it may be a problem to sell Openshift into govt agencies if
grafana is a required component."
We could make the Monitoring stack as is completely optional and provide a more "agent-like" component. Unfortunately, that would probably take much more time and in the end just reproduce what we already have just with fewer components. It would also not reduce the amount of samples scraped which has the most impact on CPU usage.
Use cases like single-node deployments (e.g. far-edge) don't need to deploy a local Alertmanager cluster because alerts are centralized at the core (e.g. hub cluster), running Alertmanager locally takes resources from user workloads and adds management overhead. Cluster admins should be able to not deploy Alertmanager as a day-2 operation.
DoD
This section includes Jira cards that are linked to an Epic, but the Epic itself is not linked to any Feature. These epics were completed when this image was assembled
Monitoring needs to be reliable and is the very useful when trying to debug clusters in an already degraded state. We want to ensure that metrics scraping can always work if the scraper can reach the target, even if the kube-apiserver is unavailable or unreachable. To do this, we will combine a local authorizer (already merged in many binaries and the rbac-proxy) and client-cert based authentication to have a fully local authentication and authorization path for scraper targets.
If networking (or part of networking) is down and a scraper target cannot reach the kube-apiserver to verify a token and a subjectaccessreview, then the metrics scraper can be rejected. The subjectaccessreview (authorization) is already largely addressed, but service account tokens are still used for scraping targets. Tokens require an external network call that we can avoid by using client certificates. Gathering metrics, especially client metrics, from partially functionally clusters helps narrow the search area between kube-apiserver, etcd, kubelet, and SDN considerably.
In addition, this will significantly reduce the load on the kube-apiserver. We have observed in the CI cluster that token and subject access reviews are a significant percentage of all kube-apiserver traffic.
User story:
As cluster-policy-controller I automatically approve cert signing requests issued by monitoring.
DoD:
Implementation hints: leverage approving logic implemented in https://github.com/openshift/library-go/pull/1083.
An epic we can duplicate for each release to ensure we have a place to catch things we ought to be doing regularly but can tend to fall by the wayside.
Table component is Class component currently, we want to update to function component.
There's also many properties with `any` type, we will want to reduce those and be more strict.
ListPage is still JSX, we should convert to TSX, add proper types and make sure rest of the code is passing correct props.
resources.js contains functions to work with k8s API (CRUD). It would be good to convert to TS and add proper types. We will want to expose these functions in some form to dynamic plugins too so proper types is a must
OCP/Telco Definition of Done
Epic Template descriptions and documentation.
<--- Cut-n-Paste the entire contents of this description into your new Epic --->
This epic is mainly focused to track the dev console QE activities for 4.9 Release
1. Identify the scenarios for automation
2. Segregate the test Scenarios into smoke, Regression and other user stories
a. Update the https://docs.jboss.org/display/ODC/Automation+Status+Report
3. Align with layered operator teams for updating scripts
3. Work closely with dev team for epic automation
4. Create the automation scripts using cypress
5. Implement CI for nightly builds
6. Execute scripts on sprint basis
To the track the QE progress at one place
Deleting the Service mesh folder and adding the OWNERS file to the service-mesh folder
Update the OWNERS file in all plugin folder. As Gaja and praveen left from the org
While executing the script "Yarn run gherkin-lint", error is displaying due to ","
Scenario length increased to 20. To avoid couple of quick start scenarios errors
max scenarios increased to 20 in feature files, because for few features this is needed
This epic is mainly focused on the 4.10 Release QE activities
1. Identify the scenarios for automation
2. Segregate the test Scenarios into smoke, Regression and other user stories
a. Update the https://docs.jboss.org/display/ODC/Automation+Status+Report
3. Align with layered operator teams for updating scripts
3. Work closely with dev team for epic automation
4. Create the automation scripts using cypress
5. Implement CI for nightly builds
6. Execute scripts on sprint basis
To the track the QE progress at one place in 4.10 Release Confluence page
Acceptance criteria:
To fix the CI related prow issues, creating this task
This section includes Jira cards that are linked to an Epic, but the Epic itself is not linked to any Feature. These epics were not completed when this image was assembled
This section includes Jira cards that are not linked to either an Epic or a Feature. These tickets were completed when this image was assembled
Description of problem:
All default catalogsources in 4.11 are built using file-based catalogsouce. Those catalogsources fail to deploy successfully in 4.11 OCP cluster. Multiple CI runs on nightly build have failed due to this reason.
The main culprit is the longer process time for YAML/JSON unmarshalling in the registry pod. The proposal to address this issue to add startupProbe to the registry pod. The startupProbe will check for grpc health before activating the liveness/readiness probe.
Version-Release number of selected component (if applicable):
4.11
How reproducible:
Steps to Reproduce:
1. Delay an 4.11 OpenShift cluster
2. Check registry pods for default catalogsources such as redhat-operators
Actual results:
The pods fail due to liveness/readiness probe failure: openshift-marketplace pod/redhat-operators-h22ms node/ci-op-s04xckx3-de73b-7fxs4-master-1 - reason/Unhealthy Readiness probe failed: timeout: failed to connect service ":50051" within 1s
Expected results:
The registry pods for default catalogsources should be up and running.
Additional info:
See Slack thread for more information:
https://coreos.slack.com/archives/C01CQA76KMX/p1654190057669689
Note: This bug is for backporting process. The 4.10.z BZ is https://bugzilla.redhat.com/show_bug.cgi?id=2115874
This is a clone of issue OCPBUGS-249. The following is the description of the original issue:
—
+++ This bug was initially created as a clone of
Bug #2070318
+++
Description of problem:
In OCP VRRP deployment (using OCP cluster networking), we have an additional data interface which is configured along with the regular management interface in each control node. In some deployments, the kubernetes address 172.30.0.1:443 is nat’ed to the data management interface instead of the mgmt interface (10.40.1.4:6443 vs 10.30.1.4:6443 as we configure the boostrap node) even though the default route is set to 10.30.1.0 network. Because of that, all requests to 172.30.0.1:443 were failed. After 10-15 minutes, OCP magically fixes it and nat’ing correctly to 10.30.1.4:6443.
Version-Release number of selected component (if applicable):
How reproducible:
Steps to Reproduce:
1.Provision OCP cluster using cluster networking for DNS & Load Balancer instead of external DNS & Load Balancer. Provision the host with 1 management interface and an additional interface for data network. Along with OCP manifest, add manifest to create a pod which will trigger communication with kube-apiserver.
2.Start cluster installation.
3.Check on the custom pod log in the cluster when the first 2 master nodes were installing to see GET operation to kube-apiserver timed out. Check nft table and chase the ip chains to see the that the data IP address was nat'ed to kubernetes service IP address instead of the management IP. This is not happening all the time, we have seen 50:50 chance.
Actual results:
After 10-15 minutes OCP will correct that by itself.
Expected results:
Wrong natting should not happen.
Additional info:
ClusterID: 24bbde0b-79b3-4ae6-afc5-cb694fa48895
ClusterVersion: Stable at "4.8.29"
ClusterOperators:
clusteroperator/authentication is not available (OAuthServerRouteEndpointAccessibleControllerAvailable: Get "
https://oauth-openshift.apps.ocp-binhle-wqepch.contrail.juniper.net/healthz
": context deadline exceeded (Client.Timeout exceeded while awaiting headers)) because OAuthServerRouteEndpointAccessibleControllerDegraded: Get "
https://oauth-openshift.apps.ocp-binhle-wqepch.contrail.juniper.net/healthz
": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
clusteroperator/baremetal is degraded because metal3 deployment inaccessible
clusteroperator/console is not available (RouteHealthAvailable: failed to GET route (
https://console-openshift-console.apps.ocp-binhle-wqepch.contrail.juniper.net/health
): Get "
https://console-openshift-console.apps.ocp-binhle-wqepch.contrail.juniper.net/health
": context deadline exceeded (Client.Timeout exceeded while awaiting headers)) because RouteHealthDegraded: failed to GET route (
https://console-openshift-console.apps.ocp-binhle-wqepch.contrail.juniper.net/health
): Get "
https://console-openshift-console.apps.ocp-binhle-wqepch.contrail.juniper.net/health
": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
clusteroperator/dns is progressing: DNS "default" reports Progressing=True: "Have 4 available DNS pods, want 5."
clusteroperator/ingress is degraded because The "default" ingress controller reports Degraded=True: DegradedConditions: One or more other status conditions indicate a degraded state: CanaryChecksSucceeding=False (CanaryChecksRepetitiveFailures: Canary route checks for the default ingress controller are failing)
clusteroperator/insights is degraded because Unable to report: unable to build request to connect to Insights server: Post "
https://cloud.redhat.com/api/ingress/v1/upload
": dial tcp: lookup cloud.redhat.com on 172.30.0.10:53: read udp 10.128.0.26:53697->172.30.0.10:53: i/o timeout
clusteroperator/network is progressing: DaemonSet "openshift-network-diagnostics/network-check-target" is not available (awaiting 1 nodes)
— Additional comment from
bnemec@redhat.com
on 2022-03-30 20:00:25 UTC —
This is not managed by runtimecfg, but in order to route the bug correctly I need to know which CNI plugin you're using - OpenShiftSDN or OVNKubernetes. Thanks.
— Additional comment from
lpbinh@gmail.com
on 2022-03-31 08:09:11 UTC —
Hi Ben,
We were deploying Contrail CNI with OCP. However, this issue happens at very early deployment time, right after the bootstrap node is started
and there's no SDN/CNI there yet.
— Additional comment from
bnemec@redhat.com
on 2022-03-31 15:26:23 UTC —
Okay, I'm just going to send this to the SDN team then. They'll be able to provide more useful input than I can.
— Additional comment from
trozet@redhat.com
on 2022-04-04 15:22:21 UTC —
Can you please provide the iptables rules causing the DNAT as well as the routes on the host? Might be easiest to get a sosreport during initial bring up during that 10-15 min when the problem occurs.
— Additional comment from
lpbinh@gmail.com
on 2022-04-05 16:45:13 UTC —
All nodes have two interfaces:
eth0: 10.30.1.0/24
eth1: 10.40.1.0/24
machineNetwork is 10.30.1.0/24
default route points to 10.30.1.1
The kubeapi service ip is 172.30.0.1:443
all Kubernetes services are supposed to be reachable via machineNetwork (10.30.1.0/24)
To make the kubeapi service ip reachable in hostnetwork, something (openshift installer?) creates a set of nat rules which translates the service ip to the real ip of the nodes which have kubeapi active.
Initially kubeapi is only active on the bootstrap node so there should be a nat rule like
172.30.0.1:443 -> 10.30.1.10:6443 (assuming that 10.30.1.10 is the bootstrap nodes' ip address in the machine network)
However, what we see is
172.30.0.1:443 -> 10.40.1.10:6443 (which is the bootstrap nodes' eth1 ip address)
The rule is configured on the controller nodes and lead to asymmetrical routing as the controller sends a packet FROM machineNetwork (10.30.1.x) to 172.30.0.1 which is then translated and forwarded to 10.40.1.10 which then tries to reply back on the 10.40.1.0 network which fails as the request came from 10.30.1.0 network.
So, we want to understand why openshift installer picks the 10.40.1.x ip address rather than the 10.30.1.x ip for the nat rule. What's the mechanism for getting the ip in case the system has multiple interfaces with ips configured.
Note: after a while (10-20 minutes) the bootstrap process resets itself and then it picks the correct ip address from the machineNetwork and things start to work.
— Additional comment from
smerrow@redhat.com
on 2022-04-13 13:55:04 UTC —
Note from Juniper regarding requested SOS report:
In reference to
https://bugzilla.redhat.com/show_bug.cgi?id=2070318
that @Binh Le has been working on. The mustgather was too big to upload for this Bugzilla. Can you access this link?
https://junipernetworks-my.sharepoint.com/:u:/g/personal/sleigon_juniper_net/ETOrHMqao1tLm10Gmq9rzikB09H5OUwQWZRAuiOvx1nZpQ
— Additional comment from
smerrow@redhat.com
on 2022-04-21 12:24:33 UTC —
Can we please get an update on this BZ?
Do let us know if there is any other information needed.
— Additional comment from
trozet@redhat.com
on 2022-04-21 14:06:00 UTC —
Can you please provide another link to the sosreport? Looks like the link is dead.
— Additional comment from
smerrow@redhat.com
on 2022-04-21 19:01:39 UTC —
See mustgather here:
https://drive.google.com/file/d/16y9IfLAs7rtO-SMphbYBPgSbR4od5hcQ
— Additional comment from
trozet@redhat.com
on 2022-04-21 20:57:24 UTC —
Looking at the must-gather I think your iptables rules are most likely coming from the fact that kube-proxy is installed:
[trozet@fedora must-gather.local.288458111102725709]$ omg get pods -n openshift-kube-proxy
NAME READY STATUS RESTARTS AGE
openshift-kube-proxy-kmm2p 2/2 Running 0 19h
openshift-kube-proxy-m2dz7 2/2 Running 0 16h
openshift-kube-proxy-s9p9g 2/2 Running 1 19h
openshift-kube-proxy-skrcv 2/2 Running 0 19h
openshift-kube-proxy-z4kjj 2/2 Running 0 19h
I'm not sure why this is installed. Is it intentional? I don't see the configuration in CNO to enable kube-proxy. Anyway the node IP detection is done via:
https://github.com/kubernetes/kubernetes/blob/f173d01c011c3574dea73a6fa3e20b0ab94531bb/cmd/kube-proxy/app/server.go#L844
Which just looks at the IP of the node. During bare metal install a VIP is chosen and used with keepalived for kubelet to have kapi access. I don't think there is any NAT rule for services until CNO comes up. So I suspect what really is happening is your node IP is changing during install, and kube-proxy is getting deployed (either intentionally or unintentionally) and that is causing the behavior you see. The node IP is chosen via the node ip configuration service:
https://github.com/openshift/machine-config-operator/blob/da6494c26c643826f44fbc005f26e0dfd10513ae/templates/common/_base/units/nodeip-configuration.service.yaml
This service will determine the node ip via which interfaces have a default route and which one has the lowest metric. With your 2 interfaces, do they both have default routes? If so, are they using dhcp and perhaps its random which route gets installed with a lower metric?
— Additional comment from
trozet@redhat.com
on 2022-04-21 21:13:15 UTC —
Correction: looks like standalone kube-proxy is installed by default when the provider is not SDN, OVN, or kuryr so this looks like the correct default behavior for kube-proxy to be deployed.
— Additional comment from
lpbinh@gmail.com
on 2022-04-25 04:05:14 UTC —
Hi Tim,
You are right, kube-proxy is deployed by default and we don't change that behavior.
There is only 1 default route configured for the management interface (10.30.1.x) , we used to have a default route for the data/vrrp interface (10.40.1.x) with higher metric before. As said, we don't have the default route for the second interface any more but still encounter the issue pretty often.
— Additional comment from
trozet@redhat.com
on 2022-04-25 14:24:05 UTC —
Binh, can you please provide a sosreport for one of the nodes that shows this behavior? Then we can try to figure out what is going on with the interfaces and the node ip service. Thanks.
— Additional comment from
trozet@redhat.com
on 2022-04-25 16:12:04 UTC —
Actually Ben reminded me that the invalid endpoint is actually the boostrap node itself:
172.30.0.1:443 -> 10.30.1.10:6443 (assuming that 10.30.1.10 is the bootstrap nodes' ip address in the machine network)
vs
172.30.0.1:443 -> 10.40.1.10:6443 (which is the bootstrap nodes' eth1 ip address)
So maybe a sosreport off that node is necessary? I'm not as familiar with the bare metal install process, moving back to Ben.
— Additional comment from
lpbinh@gmail.com
on 2022-04-26 08:33:45 UTC —
Created attachment 1875023 [details]sosreport
— Additional comment from
lpbinh@gmail.com
on 2022-04-26 08:34:59 UTC —
Created attachment 1875024 [details]sosreport-part2
Hi Tim,
We observe this issue when deploying clusters using OpenStack instances as our infrastructure is based on OpenStack.
I followed the steps here to collect the sosreport:
https://docs.openshift.com/container-platform/4.8/support/gathering-cluster-data.html
Got the sosreport which is 22MB which exceeds the size permitted (19MB), so I split it to 2 files (xaa and xab), if you can't join them then we will need to put the collected sosreport on a share drive like we did with the must-gather data.
Here are some notes about the cluster:
First two control nodes are below, ocp-binhle-8dvald-ctrl-3 is the bootstrap node.
[core@ocp-binhle-8dvald-ctrl-2 ~]$ oc get node
NAME STATUS ROLES AGE VERSION
ocp-binhle-8dvald-ctrl-1 Ready master 14m v1.21.8+ed4d8fd
ocp-binhle-8dvald-ctrl-2 Ready master 22m v1.21.8+ed4d8fd
We see the behavior that wrong nat'ing was done at the beginning, then corrected later:
sh-4.4# nft list table ip nat | grep 172.30.0.1
meta l4proto tcp ip daddr 172.30.0.1 tcp dport 443 counter packets 3 bytes 180 jump KUBE-SVC-NPX46M4PTMTKRN6Y
sh-4.4# nft list chain ip nat KUBE-SVC-NPX46M4PTMTKRN6Y
table ip nat {
chain KUBE-SVC-NPX46M4PTMTKRN6Y
}
sh-4.4# nft list chain ip nat KUBE-SEP-VZ2X7DROOLWBXBJ4
table ip nat {
chain KUBE-SEP-VZ2X7DROOLWBXBJ4
}
sh-4.4#
sh-4.4#
<....after a while....>
sh-4.4# nft list chain ip nat KUBE-SVC-NPX46M4PTMTKRN6Y
table ip nat {
chain KUBE-SVC-NPX46M4PTMTKRN6Y
}
sh-4.4# nft list chain ip nat KUBE-SEP-X33IBTDFOZRR6ONM
table ip nat {
chain KUBE-SEP-X33IBTDFOZRR6ONM
}
sh-4.4#
— Additional comment from
lpbinh@gmail.com
on 2022-05-12 17:46:51 UTC —
@
trozet@redhat.com
May we have an update on the fix, or the plan for the fix? Thank you.
— Additional comment from
lpbinh@gmail.com
on 2022-05-18 21:27:45 UTC —
Created support Case 03223143.
— Additional comment from
vkochuku@redhat.com
on 2022-05-31 16:09:47 UTC —
Hello Team,
Any update on this?
Thanks,
Vinu K
— Additional comment from
smerrow@redhat.com
on 2022-05-31 17:28:54 UTC —
This issue is causing delays in Juniper's CI/CD pipeline and makes for a less than ideal user experience for deployments.
I'm getting a lot of pressure from the partner on this for an update and progress. I've had them open a case [1] to help progress.
Please let us know if there is any other data needed by Juniper or if there is anything I can do to help move this forward.
[1]
https://access.redhat.com/support/cases/#/case/03223143
— Additional comment from
vpickard@redhat.com
on 2022-06-02 22:14:23 UTC —
@
bnemec@redhat.com
Tim mentioned in
https://bugzilla.redhat.com/show_bug.cgi?id=2070318#c14
that this issue appears to be at BM install time. Is this something you can help with, or do we need help from the BM install team?
— Additional comment from
bnemec@redhat.com
on 2022-06-03 18:15:17 UTC —
Sorry, I missed that this came back to me.
(In reply to Binh Le from
comment #16
)> We observe this issue when deploying clusters using OpenStack instances as
> our infrastructure is based on OpenStack.This does not match the configuration in the must-gathers provided so far, which are baremetal. Are we talking about the same environments?
I'm currently discussing this with some other internal teams because I'm unfamiliar with this type of bootstrap setup. I need to understand what the intended behavior is before we decide on a path forward.
— Additional comment from
rurena@redhat.com
on 2022-06-06 14:36:54 UTC —
(In reply to Ben Nemec from
comment #22
)> Sorry, I missed that this came back to me.
>
> (In reply to Binh Le from comment #16)
> > We observe this issue when deploying clusters using OpenStack instances as
> > our infrastructure is based on OpenStack.
>
> This does not match the configuration in the must-gathers provided so far,
> which are baremetal. Are we talking about the same environments?
>
> I'm currently discussing this with some other internal teams because I'm
> unfamiliar with this type of bootstrap setup. I need to understand what the
> intended behavior is before we decide on a path forward.I spoke to the CU they tell me that all work should be on baremetal. They were probably just testing on OSP and pointing out that they saw the same behavior.
— Additional comment from
bnemec@redhat.com
on 2022-06-06 16:19:37 UTC —
Okay, I see now that this is an assisted installer deployment. Can we get the cluster ID assigned by AI so we can take a look at the logs on our side? Thanks.
— Additional comment from
lpbinh@gmail.com
on 2022-06-06 16:38:56 UTC —
Here is the cluster ID, copied from the bug description:
ClusterID: 24bbde0b-79b3-4ae6-afc5-cb694fa48895
In regard to your earlier question about OpenStack & baremetal (2022-06-03 18:15:17 UTC):
We had an issue with platform validation in OpenStack earlier. Host validation was failing with the error message “Platform network settings: Platform OpenStack Compute is allowed only for Single Node OpenShift or user-managed networking.”
It's found out that there is no platform type "OpenStack" available in [
https://github.com/openshift/assisted-service/blob/master/models/platform_type.go#L29
] so we set "baremetal" as the platform type on our computes. That's the reason why you are seeing baremetal as the platform type.
Thank you
— Additional comment from
ercohen@redhat.com
on 2022-06-08 08:00:18 UTC —
Hey, first you are currect, When you set 10.30.1.0/24 as the machine network, the bootstrap process should use the IP on that subnet in the bootstrap node.
I'm trying to understand how exactly this cluster was installed.
You are using on-prem deployment of assisted-installer (podman/ACM)?
You are trying to form a cluster from OpenStack Vms?
You set the platform to Baremetal where?
Did you set user-managed-netwroking?
Some more info, when using OpenStack platform you should install the cluster with user-managed-netwroking.
And that's what the failing validation is for.
— Additional comment from
bnemec@redhat.com
on 2022-06-08 14:56:53 UTC —
Moving to the assisted-installer component for further investigation.
— Additional comment from
lpbinh@gmail.com
on 2022-06-09 07:37:54 UTC —
@Eran Cohen:
Please see my response inline.
You are using on-prem deployment of assisted-installer (podman/ACM)?
--> Yes, we are using on-prem deployment of assisted-installer.
You are trying to form a cluster from OpenStack Vms?
--> Yes.
You set the platform to Baremetal where?
--> It was set in the Cluster object, Platform field when we model the cluster.
Did you set user-managed-netwroking?
--> Yes, we set it to false for VRRP.
— Additional comment from
itsoiref@redhat.com
on 2022-06-09 08:17:23 UTC —
@
lpbinh@gmail.com
can you please share assisted logs that you can download when cluster is failed or installed?
Will help us to see the full picture
— Additional comment from
ercohen@redhat.com
on 2022-06-09 08:23:18 UTC —
OK, as noted before when using OpenStack platform you should install the cluster with user-managed-netwroking (set to true).
Can you explain how you workaround this failing validation? “Platform network settings: Platform OpenStack Compute is allowed only for Single Node OpenShift or user-managed networking.”
What does this mean exactly? 'we set "baremetal" as the platform type on our computes'
To be honest I'm surprised that the installation was completed successfully.
@
oamizur@redhat.com
I thought installing on OpenStack VMs with baremetal platform (user-managed-networking=false) will always fail?
— Additional comment from
lpbinh@gmail.com
on 2022-06-10 16:04:56 UTC —
@
itsoiref@redhat.com
: I will reproduce and collect the logs. Is that supposed to be included in the provided must-gather?
@
ercohen@redhat.com
:
— Additional comment from
itsoiref@redhat.com
on 2022-06-13 13:08:17 UTC —
@
lpbinh@gmail.com
you will have download_logs link in UI. Those logs are not part of must-gather
— Additional comment from
lpbinh@gmail.com
on 2022-06-14 18:52:02 UTC —
Created attachment 1889993 [details]cluster log per need info request - Cluster ID caa475b0-df04-4c52-8ad9-abfed1509506
Attached is the cluster log per need info request.
Cluster ID: caa475b0-df04-4c52-8ad9-abfed1509506
In this reproduction, the issue is not resolved by OpenShift itself, wrong NAT still remained and cluster deployment failed eventually
sh-4.4# nft list table ip nat | grep 172.30.0.1
meta l4proto tcp ip daddr 172.30.0.1 tcp dport 443 counter packets 2 bytes 120 jump KUBE-SVC-NPX46M4PTMTKRN6Y
sh-4.4# nft list chain ip nat KUBE-SVC-NPX46M4PTMTKRN6Y
table ip nat {
chain KUBE-SVC-NPX46M4PTMTKRN6Y
}
sh-4.4# nft list chain ip nat KUBE-SEP-VZ2X7DROOLWBXBJ4; date
table ip nat {
chain KUBE-SEP-VZ2X7DROOLWBXBJ4
}
Tue Jun 14 17:40:19 UTC 2022
sh-4.4# nft list chain ip nat KUBE-SEP-VZ2X7DROOLWBXBJ4; date
table ip nat {
chain KUBE-SEP-VZ2X7DROOLWBXBJ4
}
Tue Jun 14 17:59:19 UTC 2022
sh-4.4# nft list chain ip nat KUBE-SEP-VZ2X7DROOLWBXBJ4; date
table ip nat {
chain KUBE-SEP-VZ2X7DROOLWBXBJ4
}
Tue Jun 14 18:17:38 UTC 2022
sh-4.4#
sh-4.4#
sh-4.4# nft list chain ip nat KUBE-SEP-VZ2X7DROOLWBXBJ4; date
table ip nat {
chain KUBE-SEP-VZ2X7DROOLWBXBJ4
}
Tue Jun 14 18:49:28 UTC 2022
sh-4.4#
— Additional comment from
itsoiref@redhat.com
on 2022-06-15 15:59:22 UTC —
@
lpbinh@gmail.com
just for the protocol, we don't support baremetal ocp on openstack that's why validation is failing
— Additional comment from
lpbinh@gmail.com
on 2022-06-15 17:47:39 UTC —
@
itsoiref@redhat.com
as explained it's just a workaround on our side to make OCP work in our lab, and from my understanding on OCP perspective it will see that deployment is on baremetal only, not related to OpenStack (please correct me if I am wrong).
We have been doing thousands of OCP cluster deployments in our automation so far, if it's why validation is failing then it should be failing every time. However it only occurs occasionally when nodes have 2 interfaces, using OCP internal DNS and Load balancer, and sometime resolved by itself and sometime not.
— Additional comment from
itsoiref@redhat.com
on 2022-06-19 17:00:01 UTC —
For now i can assume that this endpoint is causing the issue:
{
"apiVersion": "v1",
"kind": "Endpoints",
"metadata": {
"creationTimestamp": "2022-06-14T17:31:10Z",
"labels":
,
"name": "kubernetes",
"namespace": "default",
"resourceVersion": "265",
"uid": "d8f558be-bb68-44ac-b7c2-85ca7a0fdab3"
},
"subsets": [
{
"addresses": [
],
"ports": [
{
"name": "https",
"port": 6443,
"protocol": "TCP"
}
]
}
]
},
— Additional comment from
itsoiref@redhat.com
on 2022-06-21 17:03:51 UTC —
The issue is that kube-api service advertise wrong ip but it does it cause kubelet chooses the one arbitrary and we currently have no mechanism to set kubelet ip, especially in bootstrap flow.
— Additional comment from
lpbinh@gmail.com
on 2022-06-22 16:07:29 UTC —
@
itsoiref@redhat.com
how do you perform OCP deployment in setups that have multiple interfaces if letting kubelet chooses an interface arbitrary instead of configuring a specific IP address for it to listen on? With what you describe above chance of deployment failure in system with multiple interfaces would be high.
— Additional comment from
dhellard@redhat.com
on 2022-06-24 16:32:26 UTC —
I set the Customer Escalation flag = Yes, per ACE EN-52253.
The impact is noted by the RH Account team: "Juniper is pressing and this impacts the Unica Next Project at Telefónica Spain. Unica Next is a critical project for Red Hat. We go live the 1st of July and this issue could impact the go live dates. We need clear information about the status and its possible resolution.
— Additional comment from
itsoiref@redhat.com
on 2022-06-26 07:28:44 UTC —
I have sent an image with possible fix to Juniper and waiting for their feedback, once they will confirm it works for them we will proceed with the PRs.
— Additional comment from
pratshar@redhat.com
on 2022-06-30 13:26:26 UTC —
=== In Red Hat Customer Portal Case 03223143 ===
— Comment by Prateeksha Sharma on 6/30/2022 6:56 PM —
//EMT note//
Update from our consultant Manuel Martinez Briceno -
====
on 28th June, 2022 the last feedback from Juniper Project Manager and our Partner Manager was that they are testing the fix. They didn't give an Estimate Time to finish, but we will be tracking this closely and let us know of any news.
====
Thanks & Regards,
Prateeksha Sharma
Escalation Manager | RHCSA
Global Support Services, Red Hat
+++ This bug was initially created as a clone of Bug #2060329 +++
Description of problem:
As a user, I was stopped from using the developer perspective when switching into a namespace with a lot of workloads (Deployments, Pods, etc.)
This is a follow up on https://bugzilla.redhat.com/show_bug.cgi?id=2006395
We recommend the following safety precautions against a lazy or crashing topology, also if we continue to work on performance improvements to allow more workloads rendered.
At the moment we expect that a topology with around about 100 nodes could be displayed. This could also depend on the node types, the used browser, the computer power of the PC, and how often the workload conditions changes.
Recommended safety guard:
The topology graph (maybe the list as well) should check how many nodes are fetched and will be rendered.
1. We need to evaluate if we could make this decision based on the shown graph nodes and edges or the number of underlying resources.
For example, is it required to count each Pod in a Deployment or not?
2. Based on a threshold (~ 100?) the topology graph should skip the rendering.
3. We should show a 'warning page' instead, which explains that the topology could not handle this amount of X nodes at the moment.
4. This page could have an option to "Show topology anyway" so that users who don't have issues here can still use the topology.
— Additional comment from bugzilla@redhat.com on 2022-05-09 08:32:18 UTC —
Account disabled by LDAP Audit for extended failure
— Additional comment from aos-team-art-private@redhat.com on 2022-05-09 19:42:54 UTC —
Elliott changed bug status from MODIFIED to ON_QA.
This bug is expected to ship in the next 4.11 release.
— Additional comment from openshift-bugzilla-robot@redhat.com on 2022-05-10 04:50:55 UTC —
Bugfix included in accepted release 4.11.0-0.nightly-2022-05-09-224745
Bug will not be automatically moved to VERIFIED for the following reasons:
PR openshift/console#11334 not approved by QA contact
This bug must now be manually moved to VERIFIED by spathak@redhat.com
When the user opens the topology sidebar for a Deployment with a BuildConfig the string Build #x was complete (and others) are not translated. The browser log shows also an error
Missing i18n key "Build <1></1> was complete" in namespace "public" and language "en."
The strings are translated but are saved as:
Build {link} was complete
None
Build #x ... string is not translated. An error is logged in the browser console.
String is shown in the selected language and no error is logged in the browser console.
Always
Happen on a cluster (4.9.0-0.nightly-2021-07-07-021823)
and local development (4.9 master, tested with 0588bc0f0b838ae448a68f35c5424f9bbfc65bc9)
None
.NET builder image is not getting detected
Install Openshift Pipelines Operator
When git url of a .NET project is provided, the builder image is not getting detected
When git url of a .NET project is provided, the builder image should automatically get detected
Always
Create README based on shared Google doc and add it to OpenShift so we have documentation for i18n work.
+++ This bug was initially created as a clone of Bug #2104386 +++
+++ This bug was initially created as a clone of Bug #2101157 +++
Description of problem:
Customer is struggling to instal OpenShift with a `no such connection profile.` error displayed in the `configure-ovs.sh` logs.
The displayed connection only contains the first half of the connection name.
Version-Release number of selected component (if applicable):
OpenShift 4.10.20
How reproducible:
Every time a connection name containing multiple words is used.
Steps to Reproduce:
1. Attempt to install OpenShift using IPI with Nodes containing default connections using names containing spaces
Actual results:
Failure shown in the below logs.
Expected results:
OpenShift installs correctly.
Additional info:
The following logs can be seen throughout the opened case:
~~~
Jun 24 17:41:53 slabnode2332.sprintlab735.netact.nsn-rdnet.net configure-ovs.sh[3472]: + local conn=System
Jun 24 17:41:53 slabnode2332.sprintlab735.netact.nsn-rdnet.net configure-ovs.sh[3472]: ++ nmcli -g GENERAL.STATE conn show System
Jun 24 17:41:53 slabnode2332.sprintlab735.netact.nsn-rdnet.net configure-ovs.sh[3472]: Error: System - no such connection profile.
Jun 24 17:41:53 slabnode2332.sprintlab735.netact.nsn-rdnet.net configure-ovs.sh[3472]: + local active_state=
Jun 24 17:41:53 slabnode2332.sprintlab735.netact.nsn-rdnet.net configure-ovs.sh[3472]: + '[' '' '!=' activated ']'
Jun 24 17:41:53 slabnode2332.sprintlab735.netact.nsn-rdnet.net configure-ovs.sh[3472]: + for i in
Jun 24 17:41:53 slabnode2332.sprintlab735.netact.nsn-rdnet.net configure-ovs.sh[3472]: + echo 'Attempt 1 to bring up connection System'
Jun 24 17:41:53 slabnode2332.sprintlab735.netact.nsn-rdnet.net configure-ovs.sh[3472]: Attempt 1 to bring up connection System
Jun 24 17:41:53 slabnode2332.sprintlab735.netact.nsn-rdnet.net configure-ovs.sh[3472]: + nmcli conn up System
Jun 24 17:41:53 slabnode2332.sprintlab735.netact.nsn-rdnet.net configure-ovs.sh[3472]: Error: unknown connection 'System'.
Jun 24 17:41:53 slabnode2332.sprintlab735.netact.nsn-rdnet.net configure-ovs.sh[3472]: + s=10
Jun 24 17:41:53 slabnode2332.sprintlab735.netact.nsn-rdnet.net configure-ovs.sh[3472]: + sleep 5
Jun 24 17:41:58 slabnode2332.sprintlab735.netact.nsn-rdnet.net configure-ovs.sh[3472]: + for i in {1..10}
Jun 24 17:41:58 slabnode2332.sprintlab735.netact.nsn-rdnet.net configure-ovs.sh[3472]: + echo 'Attempt 2 to bring up connection System'
Jun 24 17:41:58 slabnode2332.sprintlab735.netact.nsn-rdnet.net configure-ovs.sh[3472]: Attempt 2 to bring up connection System
Jun 24 17:41:58 slabnode2332.sprintlab735.netact.nsn-rdnet.net configure-ovs.sh[3472]: + nmcli conn up System
Jun 24 17:41:58 slabnode2332.sprintlab735.netact.nsn-rdnet.net configure-ovs.sh[3472]: Error: unknown connection 'System'.
~~~
Following this we can see that the expected connection to be activated should not be "System" but "System ens3f0", etc.
~~~
[core@slabnode2332 ~]$ nmcli -g NAME c
bond0
System ens3f0
System ens3f1
Wired Connection
~~~
Reviewing the code we can see the loop that performs this iteration:
https://github.com/openshift/machine-config-operator/blob/master/templates/common/_base/files/configure-ovs-network.yaml#L677
Testing the execution flow, we can see below that ' ' is used as a separator:
~~~
$ nmcli -g NAME c | grep System
System eth0
$ for connection in $(nmcli -g NAME c | grep – "System") ; do echo $connection ; done
System
eth0
~~~
To handle multi-word connection names, something similar to the following should be used:
~~~
$ TMP_IFS=$IFS
$ IFS=$"\n"
$ for connection in $(nmcli -g NAME c | grep – "$MANAGED_NM_CONN_SUFFIX"); do
activate_nm_conn "$connection"
done
$ IFS=$TMP_IFS
~~~
— Additional comment from mwasher@redhat.com on 2022-06-26 06:01:12 UTC —
This was incorrectly tagged with OpenShift 4.6 but should be 4.10. Also this is not directly related to OpenShift SDN/OVNK but with the scaffolding for OVS configuration.
— Additional comment from rravaiol@redhat.com on 2022-06-27 13:36:45 UTC —
Hi Aurko, don't hesitate to reach out to Andreas if needed.
— Additional comment from aos-team-art-private@redhat.com on 2022-07-04 23:11:22 UTC —
Elliott changed bug status from MODIFIED to ON_QA.
This bug is expected to ship in the next 4.12 release.
— Additional comment from openshift-bugzilla-robot@redhat.com on 2022-07-06 03:45:47 UTC —
Bugfix included in accepted release 4.12.0-0.nightly-2022-07-05-083442
Bug will not be automatically moved to VERIFIED for the following reasons:
This bug must now be manually moved to VERIFIED by rbrattai@redhat.com
— Additional comment from rbrattai@redhat.com on 2022-07-08 11:43:48 UTC —
PR 3227 Failed on UPI vSphere static-ip kargs active-backup
bond0 MAC != br-ex MAC
http://file.rdu.redhat.com/~rbrattai/logs/PR3227-ovs-configuration.log
— Additional comment from rbrattai@redhat.com on 2022-07-08 12:47:58 UTC —
Failed due to bash subshell issue https://github.com/openshift/machine-config-operator/pull/3227#discussion_r916774605
— Additional comment from rbrattai@redhat.com on 2022-07-25 22:13:04 UTC —
Tested on 4.11.0-0.ci.test-2022-07-25-103020-ci-ln-slzt3k2-latest
libvirt IPI DHCP RHCOS active_backup
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + ovs-vsctl --timeout=30 --if-exists del-br br0
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com ovs-vsctl[2248]: ovs|00001|vsctl|INFO|Called as ovs-vsctl --timeout=30 --if-exists del-br br0
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + connections=()
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[2249]: ++ nmcli -g NAME c
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + IFS=
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + read -r connection
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + [[ Wired Connection == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + IFS=
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + read -r connection
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + [[ Wired connection bond0 == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + IFS=
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + read -r connection
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + [[ Wired connection enp5s0 == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + IFS=
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + read -r connection
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + [[ Wired connection enp6s0 == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + IFS=
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + read -r connection
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + [[ Wired connection enp5s0-slave-ovs-clone == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + connections+=("$connection")
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + IFS=
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + read -r connection
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + [[ Wired connection enp6s0-slave-ovs-clone == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + connections+=("$connection")
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + IFS=
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + read -r connection
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + [[ br-ex == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + IFS=
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + read -r connection
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + [[ ovs-if-br-ex == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + IFS=
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + read -r connection
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + [[ ovs-if-phys0 == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + IFS=
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + read -r connection
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + [[ ovs-port-br-ex == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + IFS=
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + read -r connection
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + [[ ovs-port-phys0 == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + IFS=
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + read -r connection
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + connections+=(ovs-if-phys0 ovs-if-br-ex)
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + '[' -f /etc/ovnk/extra_bridge ']'
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + activate_nm_connections 'Wired connection enp5s0-slave-ovs-clone' 'Wired connection enp6s0-slave-ovs-clone' ovs-if-phys0 ovs-if-br-ex
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + connections=("$@")
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + local connections
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + for conn in "${connections[@]}"
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[2254]: ++ nmcli -g connection.slave-type connection show 'Wired connection enp5s0-slave-ovs-clone'
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + local slave_type=bond
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + '[' bond = team ']'
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + '[' bond = bond ']'
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + nmcli c mod 'Wired connection enp5s0-slave-ovs-clone' connection.autoconnect yes
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + for conn in "${connections[@]}"
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[2262]: ++ nmcli -g connection.slave-type connection show 'Wired connection enp6s0-slave-ovs-clone'
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + local slave_type=bond
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + '[' bond = team ']'
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + '[' bond = bond ']'
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + nmcli c mod 'Wired connection enp6s0-slave-ovs-clone' connection.autoconnect yes
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[1950]: + for conn in "${connections[@]}"
Jul 25 17:07:45 master-0-2.0.qe.lab.redhat.com configure-ovs.sh[2270]: ++ nmcli -g connection.slave-type connection show ovs-if-phys0
vSphere UPI DHCP RHEL
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + ovs-vsctl --timeout=30 --if-exists del-br br0
Jul 25 10:05:27 xrskc-rhel-0 ovs-vsctl[2071]: ovs|00001|vsctl|INFO|Called as ovs-vsctl --timeout=30 --if-exists del-br br0
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + connections=()
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[2072]: ++ nmcli -g NAME c
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + IFS=
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + read -r connection
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + [ test bond0#} == *-\s\l\a\v\e-\o\v\s-\c\l\o\n\e ]
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + IFS=
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + read -r connection
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + [[ test ens192 == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + IFS=
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + read -r connection
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + [[ test ens224 == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + IFS=
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + read -r connection
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + [[ test ens256 == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + IFS=
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + read -r connection
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + [[ br-ex == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + IFS=
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + read -r connection
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + [[ ovs-if-br-ex == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + IFS=
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + read -r connection
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + [[ ovs-if-phys0 == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + IFS=
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + read -r connection
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + [[ ovs-port-br-ex == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + IFS=
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + read -r connection
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + [[ ovs-port-phys0 == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + IFS=
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + read -r connection
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + [[ test ens192-slave-ovs-clone == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + connections+=("$connection")
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + IFS=
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + read -r connection
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + [[ test ens224-slave-ovs-clone == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + connections+=("$connection")
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + IFS=
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + read -r connection
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + [[ test ens256-slave-ovs-clone == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + connections+=("$connection")
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + IFS=
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + read -r connection
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + connections+=(ovs-if-phys0 ovs-if-br-ex)
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + '[' -f /etc/ovnk/extra_bridge ']'
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + activate_nm_connections 'test ens192-slave-ovs-clone' 'test ens224-slave-ovs-clone' 'test ens256-slave-ovs-clone' ovs-if-phys0 ovs-if-br-ex
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + connections=("$@")
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + local connections
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + for conn in "${connections[@]}"
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[2077]: ++ nmcli -g connection.slave-type connection show 'test ens192-slave-ovs-clone'
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + local slave_type=bond
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + '[' bond = team ']'
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + '[' bond = bond ']'
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + nmcli c mod 'test ens192-slave-ovs-clone' connection.autoconnect yes
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + for conn in "${connections[@]}"
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[2085]: ++ nmcli -g connection.slave-type connection show 'test ens224-slave-ovs-clone'
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + local slave_type=bond
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + '[' bond = team ']'
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + '[' bond = bond ']'
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + nmcli c mod 'test ens224-slave-ovs-clone' connection.autoconnect yes
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + for conn in "${connections[@]}"
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[2093]: ++ nmcli -g connection.slave-type connection show 'test ens256-slave-ovs-clone'
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + local slave_type=bond
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + '[' bond = team ']'
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + '[' bond = bond ']'
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + nmcli c mod 'test ens256-slave-ovs-clone' connection.autoconnect yes
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[1627]: + for conn in "${connections[@]}"
Jul 25 10:05:27 xrskc-rhel-0 configure-ovs.sh[2101]: ++ nmcli -g connection.slave-type connection show ovs-if-phys0
vSphere UPI static-ip RHEL
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + ovs-vsctl --timeout=30 --if-exists del-br br0
Jul 25 17:02:58 xrskc-rhel-1 ovs-vsctl[2039]: ovs|00001|vsctl|INFO|Called as ovs-vsctl --timeout=30 --if-exists del-br br0
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + connections=()
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[2040]: ++ nmcli -g NAME c
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + IFS=
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + read -r connection
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + [ test bond0#} == *-\s\l\a\v\e-\o\v\s-\c\l\o\n\e ]
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + IFS=
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + read -r connection
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + [[ test ens192 == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + IFS=
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + read -r connection
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + [[ test ens224 == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + IFS=
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + read -r connection
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + [[ test ens256 == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + IFS=
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + read -r connection
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + [[ br-ex == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + IFS=
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + read -r connection
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + [[ ovs-if-br-ex == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + IFS=
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + read -r connection
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + [[ ovs-if-phys0 == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + IFS=
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + read -r connection
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + [[ ovs-port-br-ex == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + IFS=
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + read -r connection
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + [[ ovs-port-phys0 == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + IFS=
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + read -r connection
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + [[ test ens192-slave-ovs-clone == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + connections+=("$connection")
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + IFS=
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + read -r connection
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + [[ test ens224-slave-ovs-clone == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + connections+=("$connection")
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + IFS=
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + read -r connection
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + [[ test ens256-slave-ovs-clone == *\s\l\a\v\e\o\v\s-\c\l\o\n\e ]]
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + connections+=("$connection")
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + IFS=
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + read -r connection
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + connections+=(ovs-if-phys0 ovs-if-br-ex)
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + '[' -f /etc/ovnk/extra_bridge ']'
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + activate_nm_connections 'test ens192-slave-ovs-clone' 'test ens224-slave-ovs-clone' 'test ens256-slave-ovs-clone' ovs-if-phys0 ovs-if-br-ex
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + connections=("$@")
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + local connections
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + for conn in "${connections[@]}"
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[2045]: ++ nmcli -g connection.slave-type connection show 'test ens192-slave-ovs-clone'
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + local slave_type=bond
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + '[' bond = team ']'
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + '[' bond = bond ']'
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + nmcli c mod 'test ens192-slave-ovs-clone' connection.autoconnect yes
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + for conn in "${connections[@]}"
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[2053]: ++ nmcli -g connection.slave-type connection show 'test ens224-slave-ovs-clone'
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + local slave_type=bond
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + '[' bond = team ']'
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + '[' bond = bond ']'
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + nmcli c mod 'test ens224-slave-ovs-clone' connection.autoconnect yes
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + for conn in "${connections[@]}"
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[2061]: ++ nmcli -g connection.slave-type connection show 'test ens256-slave-ovs-clone'
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + local slave_type=bond
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + '[' bond = team ']'
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + '[' bond = bond ']'
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + nmcli c mod 'test ens256-slave-ovs-clone' connection.autoconnect yes
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[1593]: + for conn in "${connections[@]}"
Jul 25 17:02:58 xrskc-rhel-1 configure-ovs.sh[2069]: ++ nmcli -g connection.slave-type connection show ovs-if-phys0:
— Additional comment from aos-team-art-private@bot.bugzilla.redhat.com on 2022-08-15 07:53:50 UTC —
Elliott changed bug status from MODIFIED to ON_QA.
This bug is expected to ship in the next 4.11 release.
— Additional comment from rbrattai@redhat.com on 2022-08-15 17:25:50 UTC —
Fix in 4.11.0-0.nightly-2022-08-15-074436
The topology use a PatternFly toolbar component to render its toolbar. It looks like the latest version uses a grid and flex layout which adds an addtional spacing below the toolbar.
None
There is a spacing below the toolbar (Display options, Filter by resource, Filter by name), see attached screenshot.
No additional spacing below the toolbar. (See screenshot of 4.8)
Always
4.9 master, tested with commit 3c6537eec4f5c165cf214c4100bddeccc104ed44
Maybe this is a patternfly issue, or we should check if the second div in the toolbar should not be rendered. See attached screenshot.
The QuickStart content shows a shadow above and/or below the content when the user can scroll into that direction. This feature is missing now.
None
No shadow when the user can scroll the content into the content direction.
A shadow when the user can scroll the content into the content direction.
Always
4.9 (tested on master 2860e58114b4f811ac2ebf6ce34dd99263920e17)
Quick start is now extracted into PatternFly
Description of problem:
Version-Release number of selected component (if applicable):
How reproducible:
Search link:
https://search.ci.openshift.org/?search=Create+namespace+from+install+operators+creates+namespace+from+operator+install+page&maxAge=12h&context=1&type=junit&name=&excludeName=&maxMatches=5&maxBytes=20971520&groupBy=job
Steps to Reproduce:
1.
2.
3.
Actual results:
Expected results:
Additional info:
User expects a shadow on the form footer when the add page content is longer then the viewport shows. This was shown in 4.8.
None
No shadow at the top of the form footer when the content view is scrollable.
A shadow at the top of the form footer when the content view is scrollable.
Always
Happen on a cluster (4.9.0-0.nightly-2021-07-07-021823)
and local development (4.9 master, tested with 0588bc0f0b838ae448a68f35c5424f9bbfc65bc9)
None
This section includes Jira cards that are not linked to either an Epic or a Feature. These tickets were not completed when this image was assembled
Currently we see this issue:
Aug 28 00:02:20.755103 ip-10-0-131-145 hyperkube[1366]: I0828 00:02:20.755067 1366 prober.go:116] "Probe failed" probeType="Readiness" pod="openshift-etcd/etcd-quorum-guard-588ff9b55d-8lhb7" podUID=5b79def2-9e56-4c93-b8ab-1d04db0f552f containerName="guard" probeResult=failure output=""
then few seconds later
Aug 28 00:02:25.797258 ip-10-0-131-145 hyperkube[1366]: I0828 00:02:25.797231 1366 kubelet.go:2175] "SyncLoop (probe)" probe="readiness" status="ready" pod="openshift-etcd/etcd-quorum-guard-588ff9b55d-8lhb7"
Try to improve the clustermembercontroller sync loop for health status or just improve to not fail there on probe quard during install at least or scale. Instead of maybe operator status use metrics to track this.
Slack for more context https://coreos.slack.com/archives/C027U68LP/p1630506922034600
AC:
Description of problem:
After trying to upgrade to an unavailable payload(no upgrade happens as expected), cvo can not continue to start a new upgrade even with a correct payload repo.
=======================================
Check cvo log to find cvo struggling for the update job version--v5f88 and fail due to timeout. But it did not respond to the new upgrade requirement after that.
...
0310 04:52:15.072040 1 cvo.go:546] Desired version from spec is v1.Update{Version:"", Image:"quay.io/openshift-release-dev/ocp-release@sha256:90fabdb570eb248f93472cc06ef28d09d5820e80b9ed578e2484f4ef526fe6d4", Force:false}
...
I0310 04:52:15.225739 1 batch.go:53] No active pods for job version--v5f88 in namespace openshift-cluster-version
I0310 04:52:15.225778 1 batch.go:22] Job version--v5f88 in namespace openshift-cluster-version is not ready, continuing to wait.
...
I0310 05:03:12.238308 1 batch.go:53] No active pods for job version--v5f88 in namespace openshift-cluster-version
E0310 05:03:12.238525 1 batch.go:19] deadline exceeded, reason: "DeadlineExceeded", message: "Job was active longer than specified deadline"
.....
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/cluster-version-operator ClusterIP 172.30.220.176 <none> 9099/TCP 62m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/cluster-version-operator 1/1 1 1 61m
NAME DESIRED CURRENT READY AGE
replicaset.apps/cluster-version-operator-68ccb8c4fd 1 1 1 61m
NAME COMPLETIONS DURATION AGE
job.batch/version--v5f88 0/1 30m 30m
Version-Release number of the following components:
4.11.0-0.nightly-2022-03-04-063157
How reproducible:
always
Steps to Reproduce:
1. Trigger an upgrade to an unavailable image(by mistake), from 4.11.0-0.nightly-2022-03-04-063157 to 4.11.0-0.nightly-2022-03-08-191358
#./oc adm upgrade --to-image quay.io/openshift-release-dev/ocp-release@sha256:90fabdb570eb248f93472cc06ef28d09d5820e80b9ed578e2484f4ef526fe6d4 --allow-explicit-upgrade
warning: The requested upgrade image is not one of the available updates.You have used --allow-explicit-upgrade for the update to proceed anyway
Updating to release image quay.io/openshift-release-dev/ocp-release@sha256:90fabdb570eb248f93472cc06ef28d09d5820e80b9ed578e2484f4ef526fe6d4
2. Wait for several mins(>5mins), no upgrade will happen(expected), and no any failure info(not expected)
Upstream is unset, so the cluster will use an appropriate default.
Channel: stable-4.11
warning: Cannot display available updates:
Reason: VersionNotFound
Message: Unable to retrieve available updates: currently reconciling cluster version 4.11.0-0.nightly-2022-03-04-063157 not found in the "stable-4.11" channel
3. Continue upgrade to target payload with correct repo
4. Still no upgrade happen, the same with step 2(not expected)
Actual results:
An update to available payload will bring cvo does not work.
Expected results:
Upgrade to correct target payload should be triggerred.
Additional info:
`oc adm upgrade --clear` to cancel the initial invalid upgrade before triggering new upgrade does not work. Only delete cvo pod to get it re-deployed, then cvo will work again.