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

Add API command remove management server #10325

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

Conversation

nicoschmdt
Copy link
Contributor

Description

This PR adds a command to mark a Management Server as removed on the database only if its status is marked as Down. To execute the command, it is obligatory to inform the id of the targeted MS.

Types of changes

  • Breaking change (fix or feature that would cause existing functionality to change)
  • New feature (non-breaking change which adds functionality)
  • Bug fix (non-breaking change which fixes an issue)
  • Enhancement (improves an existing feature and functionality)
  • Cleanup (Code refactoring and cleanup, that may add test cases)
  • build/CI
  • test (unit or integration test code)

Feature/Enhancement Scale or Bug Severity

Feature/Enhancement Scale

  • Major
  • Minor

Bug Severity

  • BLOCKER
  • Critical
  • Major
  • Minor
  • Trivial

How Has This Been Tested?

In a local lab, I added an MS through the database.

  • With State="Down" I executed through CMK remove managementserver id=<uuid> and verified that the MS wasn't being listed on the UI and was marked as Removed on the database.
  • With State="Up" I executed the same command and verified an error was returned informing it wasn't possible to remove an MS which state was marked as "Up".
  • With State="Down" I executed through a URL http://<IP>:8080/client/api?command=removeManagementServer&response=json&id=<UUID> and verified the MS was marked as removed and wasn't being listed on the UI.
  • With State="Up" I executed the same URL and received an error informing it wasn't possible to remove an MS which state was marked as "Up".
  • Trying to execute the command with a non-existent id returns an error warning the request format may be invalid, the entity may not exist, or the parameter annotation may be wrong.
  • Trying to execute the command without an id, both in CMK and with a URL, returns an error informing the id parameter is obligatory and it is missing.

@bernardodemarco
Copy link
Collaborator

@nicoschmdt, apparently the ManagementServerImpl.java file has conflicts. Could you resolve them, please?

@bernardodemarco bernardodemarco added this to the 4.21.0 milestone Feb 4, 2025
Copy link

github-actions bot commented Feb 5, 2025

This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch.

@bernardodemarco
Copy link
Collaborator

@blueorangutan package

@blueorangutan
Copy link

@bernardodemarco a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress.

@blueorangutan
Copy link

Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ debian ✔️ suse15. SL-JID 12343

Copy link

codecov bot commented Feb 5, 2025

Codecov Report

Attention: Patch coverage is 3.03030% with 32 lines in your changes missing coverage. Please review.

Project coverage is 16.02%. Comparing base (2ef1613) to head (329a111).
Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
...ck/api/command/admin/management/RemoveMgmtCmd.java 0.00% 18 Missing ⚠️
...in/java/com/cloud/server/ManagementServerImpl.java 0.00% 11 Missing ⚠️
...com/cloud/api/query/vo/ManagementServerJoinVO.java 0.00% 3 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff              @@
##               main   #10325      +/-   ##
============================================
- Coverage     16.02%   16.02%   -0.01%     
- Complexity    13146    13148       +2     
============================================
  Files          5658     5659       +1     
  Lines        496312   496345      +33     
  Branches      60109    60112       +3     
============================================
- Hits          79537    79531       -6     
- Misses       407926   407964      +38     
- Partials       8849     8850       +1     
Flag Coverage Δ
uitests 4.01% <ø> (ø)
unittests 16.86% <3.03%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link

github-actions bot commented Feb 7, 2025

This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch.


@APICommand(name = "removeManagementServer", description = "Removes a Management Server.", responseObject = SuccessResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false, authorized = RoleType.Admin)
public class RemoveMgmtCmd extends BaseCmd {
Copy link
Contributor

Choose a reason for hiding this comment

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

I would use the name of the class equal to the name of the API + cmd. This is more or less the default.

Suggested change
public class RemoveMgmtCmd extends BaseCmd {
public class RemoveManagementServerCmd extends BaseCmd {

@@ -1011,6 +1015,8 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
UserDataManager userDataManager;
@Inject
StoragePoolTagsDao storagePoolTagsDao;
@Inject
protected ManagementServerJoinDao _managementServerJoinDao;
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
protected ManagementServerJoinDao _managementServerJoinDao;
protected ManagementServerJoinDao managementServerJoinDao;

The underscore at the start is a legacy naming "convention" that is not used by the project anymore. The current convention is to use plain camelCase https://cwiki.apache.org/confluence/display/CLOUDSTACK/Coding+conventions

throw new InvalidParameterValueException(String.format("Unable to find a Management Server with ID equal to [%s]", managementServer.getUuid()));
}

if (ManagementServerHost.State.Up.equals(managementServer.getState())) {
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
if (ManagementServerHost.State.Up.equals(managementServer.getState())) {
if (!ManagementServerHost.State.Down.equals(managementServer.getState())) {

If it should only be removed in the Down state ( as said in the logging message below ) this condition doesn't cover all cases, as we have more states than Up and Down.

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

Successfully merging this pull request may close these issues.

4 participants