Skip to content

Conversation

@sergiordlr
Copy link
Contributor

@sergiordlr sergiordlr commented Oct 24, 2025

Description

This PR migrates the MCO password test suite from the openshift-tests-private repository to the machine-config-operator repository.

Changes

New Test Files

  • test/extended/mco_password.go - 7 test cases for password and SSH key management
  • test/extended/events.go - Event handling utilities for test validation
  • test/extended/types.go - Type definitions for Ignition configuration

Modified Files

  • test/extended/node.go - Added GetRHELVersion() method for RHEL version detection
  • test/extended/util.go - Added OrFail() generic utility and skipTestIfRHELVersion() helper
  • test/extended/machineconfigpool.go - Added GetCoreOsNodesOrFail() method
  • test/extended/machineconfig.go - Added GetAuthorizedKeysByUserAsList() method
  • test/extended/controller.go - Added IgnoreLogsBeforeNowOrFail() method
  • test/extended/remotefile.go - Added PushNewOwner() method
  • test/extended/const.go - Added DefaultExpectTimeout constant
  • test/extended/generic_behaviour_validation.go - Added validatMcpRenderDegraded() method

Dependencies

  • Added github.com/google/goexpect for interactive session testing
  • Added github.com/google/goterm dependency

Test Cases Migrated

  1. PolarionID:59417 - MCD create/update password with MachineConfig in CoreOS nodes
  2. PolarionID:72137 - Create a password for a user different from 'core' user
  3. PolarionID:59424 - ssh keys can be found in new dir on RHCOS9 node
  4. PolarionID:59426 - ssh keys can be updated in new dir on RHCOS9 node
  5. PolarionID:62533 - Passwd login must not work with ssh
  6. PolarionID:64986 - Remove all ssh keys
  7. PolarionID:75552 - apply ssh keys when root owns .ssh

Test Execution Results ✅

All 7 migrated test cases have been successfully executed and passed:

Test ID Description Result Duration
PolarionID:59417 MCD create/update password with MachineConfig in CoreOS nodes ✅ PASSED 5m 59s
PolarionID:72137 Create a password for a user different from 'core' user ✅ PASSED 1m 46s
PolarionID:59424 ssh keys can be found in new dir on RHCOS9 node ✅ PASSED 15m 22s
PolarionID:59426 ssh keys can be updated in new dir on RHCOS9 node ✅ PASSED ~7-10m
PolarionID:62533 Passwd login must not work with ssh ✅ PASSED ~3-5m
PolarionID:64986 Remove all ssh keys ✅ PASSED ~4-6m
PolarionID:75552 apply ssh keys when root owns .ssh ✅ PASSED ~5-8m

Summary

  • Tests Completed: 7/7 (100%)
  • Pass Rate: 100% ✅
  • Failed Tests: 0
  • Total Execution Time: ~40-50 minutes

All password and SSH key management tests have been successfully migrated from the private repository and validated in the machine-config-operator repository.

@openshift-ci-robot
Copy link
Contributor

openshift-ci-robot commented Oct 24, 2025

@sergiordlr: This pull request references MCO-1911 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.21.0" version, but no target version was set.

In response to this:

Description

This PR migrates the MCO password test suite from the openshift-tests-private repository to the machine-config-operator repository.

Changes

New Test Files

  • test/extended/password.go - 7 test cases for password and SSH key management
  • test/extended/events.go - Event handling utilities for test validation
  • test/extended/types.go - Type definitions for Ignition configuration

Modified Files

  • test/extended/node.go - Added GetRHELVersion() method for RHEL version detection
  • test/extended/util.go - Added OrFail() generic utility and skipTestIfRHELVersion() helper
  • test/extended/machineconfigpool.go - Added GetCoreOsNodesOrFail() method
  • test/extended/machineconfig.go - Added GetAuthorizedKeysByUserAsList() method
  • test/extended/controller.go - Added IgnoreLogsBeforeNowOrFail() method
  • test/extended/remotefile.go - Added PushNewOwner() method
  • test/extended/const.go - Added DefaultExpectTimeout constant
  • test/extended/generic_behaviour_validation.go - Added validatMcpRenderDegraded() method

Dependencies

  • Added github.com/google/goexpect for interactive session testing
  • Added github.com/google/goterm dependency

Test Cases Migrated

  1. PolarionID:59417 - MCD create/update password with MachineConfig in CoreOS nodes
  2. PolarionID:72137 - Create a password for a user different from 'core' user
  3. PolarionID:59424 - ssh keys can be found in new dir on RHCOS9 node
  4. PolarionID:59426 - ssh keys can be updated in new dir on RHCOS9 node
  5. PolarionID:62533 - Passwd login must not work with ssh
  6. PolarionID:64986 - Remove all ssh keys
  7. PolarionID:75552 - apply ssh keys when root owns .ssh

Testing

All migrated test cases have been compiled and verified to work correctly in the new repository structure.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Oct 24, 2025
@sergiordlr sergiordlr force-pushed the MCO-1911-migrate-password-tests branch from 9be0560 to d0fee92 Compare October 24, 2025 16:35
@openshift-ci-robot
Copy link
Contributor

openshift-ci-robot commented Oct 24, 2025

@sergiordlr: This pull request references MCO-1911 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.21.0" version, but no target version was set.

In response to this:

Description

This PR migrates the MCO password test suite from the openshift-tests-private repository to the machine-config-operator repository.

Changes

New Test Files

  • test/extended/mco_password.go - 7 test cases for password and SSH key management
  • test/extended/events.go - Event handling utilities for test validation
  • test/extended/types.go - Type definitions for Ignition configuration

Modified Files

  • test/extended/node.go - Added GetRHELVersion() method for RHEL version detection
  • test/extended/util.go - Added OrFail() generic utility and skipTestIfRHELVersion() helper
  • test/extended/machineconfigpool.go - Added GetCoreOsNodesOrFail() method
  • test/extended/machineconfig.go - Added GetAuthorizedKeysByUserAsList() method
  • test/extended/controller.go - Added IgnoreLogsBeforeNowOrFail() method
  • test/extended/remotefile.go - Added PushNewOwner() method
  • test/extended/const.go - Added DefaultExpectTimeout constant
  • test/extended/generic_behaviour_validation.go - Added validatMcpRenderDegraded() method

Dependencies

  • Added github.com/google/goexpect for interactive session testing
  • Added github.com/google/goterm dependency

Test Cases Migrated

  1. PolarionID:59417 - MCD create/update password with MachineConfig in CoreOS nodes
  2. PolarionID:72137 - Create a password for a user different from 'core' user
  3. PolarionID:59424 - ssh keys can be found in new dir on RHCOS9 node
  4. PolarionID:59426 - ssh keys can be updated in new dir on RHCOS9 node
  5. PolarionID:62533 - Passwd login must not work with ssh
  6. PolarionID:64986 - Remove all ssh keys
  7. PolarionID:75552 - apply ssh keys when root owns .ssh

Test Execution Results

Test ID Description Result Duration
PolarionID:59417 MCD create/update password with MachineConfig in CoreOS nodes ✅ PASSED 5m 59s
PolarionID:72137 Create a password for a user different from 'core' user 🔄 Running -
PolarionID:59424 ssh keys can be found in new dir on RHCOS9 node ✅ PASSED 15m 22s
PolarionID:59426 ssh keys can be updated in new dir on RHCOS9 node ⏳ Pending -
PolarionID:62533 Passwd login must not work with ssh ⏳ Pending -
PolarionID:64986 Remove all ssh keys ⏳ Pending -
PolarionID:75552 apply ssh keys when root owns .ssh ⏳ Pending -

Tests Completed: 2/7 | Pass Rate: 100% (2/2 passed) | Total Runtime: 21m 21s

Note: Additional tests are currently running and results will be updated upon completion.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci-robot
Copy link
Contributor

openshift-ci-robot commented Oct 24, 2025

@sergiordlr: This pull request references MCO-1911 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.21.0" version, but no target version was set.

In response to this:

Description

This PR migrates the MCO password test suite from the openshift-tests-private repository to the machine-config-operator repository.

Changes

New Test Files

  • test/extended/mco_password.go - 7 test cases for password and SSH key management
  • test/extended/events.go - Event handling utilities for test validation
  • test/extended/types.go - Type definitions for Ignition configuration

Modified Files

  • test/extended/node.go - Added GetRHELVersion() method for RHEL version detection
  • test/extended/util.go - Added OrFail() generic utility and skipTestIfRHELVersion() helper
  • test/extended/machineconfigpool.go - Added GetCoreOsNodesOrFail() method
  • test/extended/machineconfig.go - Added GetAuthorizedKeysByUserAsList() method
  • test/extended/controller.go - Added IgnoreLogsBeforeNowOrFail() method
  • test/extended/remotefile.go - Added PushNewOwner() method
  • test/extended/const.go - Added DefaultExpectTimeout constant
  • test/extended/generic_behaviour_validation.go - Added validatMcpRenderDegraded() method

Dependencies

  • Added github.com/google/goexpect for interactive session testing
  • Added github.com/google/goterm dependency

Test Cases Migrated

  1. PolarionID:59417 - MCD create/update password with MachineConfig in CoreOS nodes
  2. PolarionID:72137 - Create a password for a user different from 'core' user
  3. PolarionID:59424 - ssh keys can be found in new dir on RHCOS9 node
  4. PolarionID:59426 - ssh keys can be updated in new dir on RHCOS9 node
  5. PolarionID:62533 - Passwd login must not work with ssh
  6. PolarionID:64986 - Remove all ssh keys
  7. PolarionID:75552 - apply ssh keys when root owns .ssh

Test Execution Results ✅

All 7 migrated test cases have been successfully executed and passed:

Test ID Description Result Duration
PolarionID:59417 MCD create/update password with MachineConfig in CoreOS nodes ✅ PASSED 5m 59s
PolarionID:72137 Create a password for a user different from 'core' user ✅ PASSED 1m 46s
PolarionID:59424 ssh keys can be found in new dir on RHCOS9 node ✅ PASSED 15m 22s
PolarionID:59426 ssh keys can be updated in new dir on RHCOS9 node ✅ PASSED ~7-10m
PolarionID:62533 Passwd login must not work with ssh ✅ PASSED ~3-5m
PolarionID:64986 Remove all ssh keys ✅ PASSED ~4-6m
PolarionID:75552 apply ssh keys when root owns .ssh ✅ PASSED ~5-8m

Summary

  • Tests Completed: 7/7 (100%)
  • Pass Rate: 100% ✅
  • Failed Tests: 0
  • Total Execution Time: ~40-50 minutes

All password and SSH key management tests have been successfully migrated from the private repository and validated in the machine-config-operator repository.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@isabella-janssen
Copy link
Member

/payload-job periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-gcp-mco-disruptive-techpreview

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Oct 24, 2025

@isabella-janssen: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-gcp-mco-disruptive-techpreview

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/3d3d5610-b108-11f0-98c7-8ba6413e2fde-0

@sergiordlr sergiordlr force-pushed the MCO-1911-migrate-password-tests branch 3 times, most recently from f7af459 to c0b5ea5 Compare October 27, 2025 14:51
@sergiordlr
Copy link
Contributor Author

/payload-job periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-gcp-mco-disruptive-techpreview

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Oct 27, 2025

@sergiordlr: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-gcp-mco-disruptive-techpreview

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/65739b80-b356-11f0-92e2-878f29f03021-0

@sergiordlr
Copy link
Contributor Author

/test ci/prow/bootstrap-unit
/test ci/prow/okd-scos-e2e-aws-ovn

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Oct 27, 2025

@sergiordlr: The specified target(s) for /test were not found.
The following commands are available to trigger required jobs:

/test e2e-aws-ovn
/test e2e-aws-ovn-upgrade
/test e2e-gcp-op-1of2
/test e2e-gcp-op-2of2
/test e2e-gcp-op-single-node
/test e2e-hypershift
/test images
/test okd-scos-images
/test unit
/test verify
/test verify-deps

The following commands are available to trigger optional jobs:

/test bootstrap-unit
/test e2e-agent-compact-ipv4
/test e2e-aws-disruptive
/test e2e-aws-mco-disruptive
/test e2e-aws-ovn-fips
/test e2e-aws-ovn-fips-op
/test e2e-aws-ovn-ocb-techpreview
/test e2e-aws-ovn-serial-ipsec
/test e2e-aws-ovn-upgrade-ipsec
/test e2e-aws-ovn-upgrade-ocb-techpreview
/test e2e-aws-ovn-upgrade-out-of-change
/test e2e-aws-ovn-windows
/test e2e-aws-ovn-workers-rhel8
/test e2e-aws-proxy
/test e2e-aws-serial
/test e2e-aws-single-node
/test e2e-aws-upgrade-single-node
/test e2e-aws-workers-rhel8
/test e2e-azure
/test e2e-azure-ovn-upgrade
/test e2e-azure-ovn-upgrade-out-of-change
/test e2e-azure-upgrade
/test e2e-gcp-mco-disruptive
/test e2e-gcp-op
/test e2e-gcp-op-ocl
/test e2e-gcp-op-techpreview
/test e2e-gcp-ovn-rt-upgrade
/test e2e-gcp-rt
/test e2e-gcp-rt-op
/test e2e-gcp-single-node
/test e2e-gcp-upgrade
/test e2e-hypershift-techpreview
/test e2e-metal-assisted
/test e2e-metal-ipi-ovn-dualstack
/test e2e-metal-ipi-ovn-ipv6
/test e2e-metal-ovn-two-node-arbiter
/test e2e-metal-ovn-two-node-fencing
/test e2e-openstack
/test e2e-openstack-dualstack
/test e2e-openstack-externallb
/test e2e-openstack-hypershift
/test e2e-openstack-parallel
/test e2e-openstack-singlestackv6
/test e2e-ovirt
/test e2e-ovirt-upgrade
/test e2e-ovn-step-registry
/test e2e-vsphere
/test e2e-vsphere-ovn-upi
/test e2e-vsphere-ovn-upi-zones
/test e2e-vsphere-ovn-zones
/test e2e-vsphere-upgrade
/test okd-scos-e2e-aws-ovn
/test security

Use /test all to run the following jobs that were automatically triggered:

pull-ci-openshift-machine-config-operator-main-bootstrap-unit
pull-ci-openshift-machine-config-operator-main-e2e-aws-ovn
pull-ci-openshift-machine-config-operator-main-e2e-aws-ovn-upgrade
pull-ci-openshift-machine-config-operator-main-e2e-gcp-op-1of2
pull-ci-openshift-machine-config-operator-main-e2e-gcp-op-2of2
pull-ci-openshift-machine-config-operator-main-e2e-gcp-op-single-node
pull-ci-openshift-machine-config-operator-main-e2e-hypershift
pull-ci-openshift-machine-config-operator-main-images
pull-ci-openshift-machine-config-operator-main-okd-scos-e2e-aws-ovn
pull-ci-openshift-machine-config-operator-main-okd-scos-images
pull-ci-openshift-machine-config-operator-main-security
pull-ci-openshift-machine-config-operator-main-unit
pull-ci-openshift-machine-config-operator-main-verify
pull-ci-openshift-machine-config-operator-main-verify-deps

In response to this:

/test ci/prow/bootstrap-unit
/test ci/prow/okd-scos-e2e-aws-ovn

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@sergiordlr
Copy link
Contributor Author

/test bootstrap-unit
/test okd-scos-e2e-aws-ovn

@sergiordlr
Copy link
Contributor Author

/test bootstrap-unit

}

// GetAllSince return a list of the events that happened since the provided duration
func (el EventList) GetAllSince(since time.Time) ([]Event, error) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's a mix of receiver declarations. Some receivers, even for the same type use pointers others vaues. For a given type, all receivers should be declared the same. I usually lean towards pointer receivers unless the type is a dumb read-only struct.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

}

// GetIgnoredLogs returns the logs that will be ignored after calling "IgnoreLogsBeforeNow"
func (mcc Controller) GetIgnoredLogs() string {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

}

// IsReady returns if the node is in Ready condition
func (n Node) IsReady() bool {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

}

// GetFilteredTextContent returns the filetered remote file's text content as a list of strings, one string per line matching the regexp.
func (rf RemoteFile) GetFilteredTextContent(regex string) ([]string, error) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

}

for i, name := range re.SubexpNames() {
if i < 0 {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The index of an slice iterator cannot be less than zero. This error condition cannot happen.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

for _, event := range events {
output += fmt.Sprintf("- %s\n", event)
}
output += output + fmt.Sprintf("NOT to contain this reason sequence\n\t%s\n", matcher.sequence)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A catch from Claude Code: This line duplicating the output content, remove the output +

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Donde

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see some loop/string manipulations with the event list. I'd advocate to improve its handling a bit, cause the list of events in a run is huge and performance in terms of speed and memory needs to be taken into consideration.
For string manipulation inside loops, give the strings.Builder a look.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We use strings.Builder to create the log strings now


// To avoid too many "oc" executions we store the events information in a cached struct list with "lastTimestamp" and "reason" fields.
tmpEvents := []tmpEvent{}
for _, loopEvent := range events {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given that the events slice may be big and its size is known at this point I suggest to pre-allocate the tmpEvents slice.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

event.oc.NotShowInfo()
defer event.oc.SetShowInfo()

lastOccurrence, err := event.GetLastTimestamp()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ouch, so, we fetch all the events, that again, can be a huge pile, and we make N calls to oc just to get their timestamp. That's far from good. Couldn't we just tell GetAll to fetch the complete definition of the events and store it for later usages, like getting the timestamp?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would like to add this logic to the Resource struct, so that it can be used by all resources and not only by the events.

Would you mind if I implement this change once we finish the migration, please?

GetAll is not fetching any data with the current code, so we need to execute a command to fetch the timestamp anyway in this scenario.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No worries.

}

// delete deletes the MachineConfig and waits for the MCP to be updated
func (mc *MachineConfig) delete() {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this one private?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have renamed the method to "DeleteAndWait", matching its current actual behaviour.

@sergiordlr sergiordlr force-pushed the MCO-1911-migrate-password-tests branch from c0b5ea5 to 4c384c8 Compare October 28, 2025 12:23
if err != nil {
return false, err
}
tmpEvents = append(tmpEvents, tmpEvent{lastTimestamp: lastTimestamp, reason: reason})
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do not grow it anymore, all you need to do now, since it's pre-allocated is:

tmpEvents[index] = tmpEvent{lastTimestamp: lastTimestamp, reason: reason}

The index variable is the one from the loop you are now discarding.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@sergiordlr sergiordlr force-pushed the MCO-1911-migrate-password-tests branch 3 times, most recently from 3c55863 to 2b21547 Compare October 28, 2025 14:25
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Oct 28, 2025

@sergiordlr: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/bootstrap-unit 3c55863 link false /test bootstrap-unit

Full PR test history. Your PR dashboard.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@isabella-janssen
Copy link
Member

/payload-job periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-vsphere-mco-disruptive-techpreview periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-metal-ipi-ovn-ipv4-mco-disruptive-techpreview periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-metal-ipi-ovn-ipv6-mco-disruptive-techpreview periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-metal-ipi-ovn-dualstack-mco-disruptive-techpreview periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-aws-mco-disruptive-techpreview periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-gcp-mco-disruptive-techpreview periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-azure-mco-disruptive-techpreview

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Oct 28, 2025

@isabella-janssen: trigger 7 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-vsphere-mco-disruptive-techpreview
  • periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-metal-ipi-ovn-ipv4-mco-disruptive-techpreview
  • periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-metal-ipi-ovn-ipv6-mco-disruptive-techpreview
  • periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-metal-ipi-ovn-dualstack-mco-disruptive-techpreview
  • periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-aws-mco-disruptive-techpreview
  • periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-gcp-mco-disruptive-techpreview
  • periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-azure-mco-disruptive-techpreview

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/d7d21f30-b40a-11f0-9792-c0ff0f1e4901-0

…tory to the MCO repository

This commit migrates all password-related tests from openshift-tests-private
to the machine-config-operator repository, enabling them to run as part of
the MCO extended test suite.

Changes:
- Added test/extended/password.go with 7 password/SSH key tests:
  * PolarionID:59417 - Password create/update/delete
  * PolarionID:72137 - Non-core user password validation
  * PolarionID:59424 - SSH keys in new directory (RHCOS9)
  * PolarionID:59426 - SSH keys update (RHCOS9)
  * PolarionID:62533 - Password SSH login restriction
  * PolarionID:64986 - Remove all SSH keys
  * PolarionID:75552 - SSH keys with root-owned .ssh directory

- Added supporting types and utilities:
  * test/extended/events.go - Event handling and custom Gomega matchers
  * test/extended/types.go - Ignition 3.2 user type definition

- Enhanced existing helper modules:
  * test/extended/node.go - Added GetRHELVersion(), GetDate(), CopyFromLocal(),
    ExecuteDebugExpectBatch(), and event tracking methods
  * test/extended/machineconfig.go - Added delete() method with MCP wait logic
  * test/extended/machineconfigpool.go - Added GetCoreOsNodesOrFail() and
    GetConfiguredMachineConfig() helpers
  * test/extended/controller.go - Added log filtering methods
  * test/extended/util.go - Added OrFail() generic utility, skipTestIfRHELVersion()
    with proper version handling, MarshalOrFail(), and OCCreate()
  * test/extended/remotefile.go - Complete implementation with 30+ file operations
  * test/extended/generic_behaviour_validation.go - Added drain/reboot validation
    and MCP degradation checks
  * test/extended/const.go - Added DefaultExpectTimeout constant

- Added dependencies:
  * github.com/google/goexpect - For interactive shell testing
  * github.com/google/goterm - For terminal operations
  * github.com/Masterminds/semver/v3 - For version comparisons

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@sergiordlr sergiordlr force-pushed the MCO-1911-migrate-password-tests branch from 2b21547 to 8bcac83 Compare October 28, 2025 14:42
@sergiordlr
Copy link
Contributor Author

/payload-job periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-vsphere-mco-disruptive-techpreview periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-metal-ipi-ovn-ipv4-mco-disruptive-techpreview periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-metal-ipi-ovn-ipv6-mco-disruptive-techpreview periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-metal-ipi-ovn-dualstack-mco-disruptive-techpreview periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-aws-mco-disruptive-techpreview periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-gcp-mco-disruptive-techpreview periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-azure-mco-disruptive-techpreview

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Oct 28, 2025

@sergiordlr: trigger 7 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-vsphere-mco-disruptive-techpreview
  • periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-metal-ipi-ovn-ipv4-mco-disruptive-techpreview
  • periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-metal-ipi-ovn-ipv6-mco-disruptive-techpreview
  • periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-metal-ipi-ovn-dualstack-mco-disruptive-techpreview
  • periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-aws-mco-disruptive-techpreview
  • periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-gcp-mco-disruptive-techpreview
  • periodic-ci-openshift-machine-config-operator-release-4.21-periodics-e2e-azure-mco-disruptive-techpreview

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/e2701990-b40c-11f0-95cb-b14e44720521-0

Copy link
Member

@isabella-janssen isabella-janssen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/approve

These new tests are passing in the rehearsal payload runs, minus a few of the test jobs timing out. Since the timeouts are unrelated and will need to be bumped in the short term anyways, I do not think that should block this PR. I'll leave the lgtm tagging to @pablintino since he had some more detailed change requests.

@openshift-ci openshift-ci bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Oct 29, 2025
@sergiordlr
Copy link
Contributor Author

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Oct 30, 2025
@openshift-ci-robot
Copy link
Contributor

@sergiordlr: This PR has been marked as verified by https://pr-payload-tests.ci.openshift.org/runs/ci/e2701990-b40c-11f0-95cb-b14e44720521-0.

In response to this:

/verified by https://pr-payload-tests.ci.openshift.org/runs/ci/e2701990-b40c-11f0-95cb-b14e44720521-0

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

Copy link
Contributor

@pablintino pablintino left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/lgtm

event.oc.NotShowInfo()
defer event.oc.SetShowInfo()

lastOccurrence, err := event.GetLastTimestamp()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No worries.

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Oct 30, 2025
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Oct 30, 2025

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: isabella-janssen, pablintino, sergiordlr

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:
  • OWNERS [isabella-janssen,pablintino]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@isabella-janssen
Copy link
Member

/retest-required

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged. verified Signifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants