Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(5595): added logic to use development binary path for uninstall #5877

Open
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

kaanyalti
Copy link
Contributor

@kaanyalti kaanyalti commented Oct 30, 2024

  • Bug

What does this PR do?

Updates how the upgrade command works when used with the --force and --develop flags. Currently if a development agent is already installed, and if a user wants to force install a new development agent, the command uninstalls the production agent, if it exists, and tries to install the development agent again.

Checklist

  • My code follows the style guidelines of this project
  • I have commented my code, particularly in hard-to-understand areas
  • [ ] I have made corresponding changes to the documentation
  • [ ] I have made corresponding change to the default configuration files
  • I have added tests that prove my fix is effective or that my feature works
  • I have added an entry in ./changelog/fragments using the changelog tool
  • I have added an integration test or an E2E test

How to test this PR locally

  • Install and enroll production agent
  • Install and enroll development agent
  • Run the development installation command with --force flag and confirm that at the end of the operation both elastic-agent and elastic-development-agent binaries are installed and that both agents are healthy

Related issues

Copy link
Contributor

mergify bot commented Oct 30, 2024

This pull request does not have a backport label. Could you fix it @kaanyalti? 🙏
To fixup this pull request, you need to add the backport labels for the needed
branches, such as:

  • backport-./d./d is the label to automatically backport to the 8./d branch. /d is the digit

Copy link
Contributor

mergify bot commented Oct 30, 2024

backport-v8.x has been added to help with the transition to the new branch 8.x.
If you don't need it please use backport-skip label and remove the backport-8.x label.

@mergify mergify bot added the backport-8.x Automated backport to the 8.x branch with mergify label Oct 30, 2024
@kaanyalti kaanyalti force-pushed the fix/5595-fix-force-development-install-command branch from 0a1aca2 to 05882da Compare November 3, 2024 07:45
@kaanyalti kaanyalti marked this pull request as ready for review November 3, 2024 07:45
@kaanyalti kaanyalti requested a review from a team as a code owner November 3, 2024 07:45
@michalpristas michalpristas added the Team:Elastic-Agent-Control-Plane Label for the Agent Control Plane team label Nov 4, 2024
@elasticmachine
Copy link
Contributor

Pinging @elastic/elastic-agent-control-plane (Team:Elastic-Agent-Control-Plane)

@michalpristas michalpristas added the bug Something isn't working label Nov 4, 2024
@michalpristas
Copy link
Contributor

please check integration test failures, these are related

devOut2, err := devFix2.Install(ctx, &devInstOpt)
if err != nil {
t.Logf("install output: %s", devOut2)
require.NoError(t, err)
Copy link
Contributor

Choose a reason for hiding this comment

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

this will always fail if err is not nil

Copy link
Contributor Author

@kaanyalti kaanyalti Nov 5, 2024

Choose a reason for hiding this comment

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

I was following similar implementation in the prior test cases, but I can remove the if statement and just assert against the error.

Copy link
Member

Choose a reason for hiding this comment

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

just in case you don't know assert.X will just add a failure to the test, whereas require.X will abort the test. So the idea is to use assert.X for the actual test assertions and require.X during setup to avoid the test continuing after critical failure

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 did not know that, thank you

@kaanyalti kaanyalti force-pushed the fix/5595-fix-force-development-install-command branch from 565e893 to 3210915 Compare November 5, 2024 13:26
@kaanyalti kaanyalti force-pushed the fix/5595-fix-force-development-install-command branch from 9be1794 to 9d5c737 Compare November 6, 2024 17:23
Copy link

Quality Gate failed Quality Gate failed

Failed conditions
0.0% Coverage on New Code (required ≥ 40%)

See analysis details on SonarQube

Copy link
Contributor

@blakerouse blakerouse left a comment

Choose a reason for hiding this comment

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

I don't think this is taking the correct approach currently. I would expect the usage of the following would allow you to get the correct path to the binary that should be called to perform the uninstall.

// DevelopmentBinaryName is the name of the installed binary when --develop
// flag is used
DevelopmentBinaryName = "elastic-development-agent"

Copy link
Contributor

Choose a reason for hiding this comment

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

I don't think you can do this, as the --develop is just an alias for the --namespace flag. That allows multiple agents to be installed on the same host at the same time. The name of the executable here should not be hard coded as it should either come from the --namespace flag or from infering the namespace by reading the namespace from the path that is loaded using the full filepath from os.Args[0].

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport-8.x Automated backport to the 8.x branch with mergify bug Something isn't working Team:Elastic-Agent-Control-Plane Label for the Agent Control Plane team
Projects
None yet
Development

Successfully merging this pull request may close these issues.

--force ignores --develop and uninstalls production agent instead
5 participants