Ravi Nori has uploaded a new change for review. Change subject: tools : engine-manage-domains confirm delete domain ......................................................................
tools : engine-manage-domains confirm delete domain When user deletes a domain using engine-manage-domains a confirmation of delete message needs to be presented confirming the operation. A new command line option -forceDelete has been added to bypass the confirmation message. Change-Id: I770269eccdc4a2d0645d96cf48b660ad22d42f9d Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=879938 Signed-off-by: Ravi Nori <rn...@redhat.com> --- M backend/manager/conf/kerberos/engine-manage-domains M backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/kerberos/ManageDomains.java 2 files changed, 31 insertions(+), 9 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/85/9585/1 diff --git a/backend/manager/conf/kerberos/engine-manage-domains b/backend/manager/conf/kerberos/engine-manage-domains index b179d05..8b86cec 100755 --- a/backend/manager/conf/kerberos/engine-manage-domains +++ b/backend/manager/conf/kerberos/engine-manage-domains @@ -44,7 +44,7 @@ usage () { printf "engine-manage-domains: add/edit/delete/validate/list domains\n" printf "USAGE:\n" - printf "\tengine-manage-domains -action=ACTION [-domain=DOMAIN -provider=PROVIDER -user=USER -passwordFile=PASSWORD_FILE -interactive -configFile=PATH -addPermissions] -report\n" + printf "\tengine-manage-domains -action=ACTION [-domain=DOMAIN -provider=PROVIDER -user=USER -passwordFile=PASSWORD_FILE -interactive -configFile=PATH -addPermissions -forceDelete] -report\n" printf "Where:\n" printf "\tACTION action to perform (add/edit/delete/validate/list). See details below.\n" printf "\tDOMAIN (mandatory for add, edit and delete) the domain you wish to perform the action on.\n" @@ -61,8 +61,10 @@ printf "\t\t\tAdd a domain called example.com, using user admin with ldap server type IPA and read the password from /tmp/.pwd.\n" printf "\t\t-action=edit -domain=example.com -provider=ActiveDirectory -passwordFile=/tmp/.new_password\n" printf "\t\t\tEdit the domain example.com, using another password file and updated the provider type to Active Directory.\n" - printf "\t\t-action=delete -domain=example.com\n" + printf "\t\t-action=delete -domain=example.com [-forceDelete]\n" printf "\t\t\tDelete the domain example.com.\n" + printf "\t\t-forceDelete Optional parameter used in combination with -action=delete to skip confirmation of operation.\n" + printf "\t\t\tDefault behaviour is prompt for confirmation of delete.\n" printf "\t\t-action=validate\n" printf "\t\t\tValidate the current configuration (go over all the domains, try to authenticate to each domain using the configured user/password.).\n" printf "\t\t-report In combination with -action=validate will report all validation error, if occured.\n" diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/kerberos/ManageDomains.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/kerberos/ManageDomains.java index 1dd0f1f..462f5f7 100644 --- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/kerberos/ManageDomains.java +++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/kerberos/ManageDomains.java @@ -71,7 +71,8 @@ report, interactive, addPermissions, - provider + provider, + forceDelete } public enum ActionType { @@ -291,7 +292,7 @@ getPasswordInput(parser), null, parser.hasArg(Arguments.provider.name()) ? getLdapProviderType(parser) : null); } else if (actionType.equals(ActionType.delete)) { - deleteDomain(parser.getArg(Arguments.domain.name()).toLowerCase()); + deleteDomain(parser.getArg(Arguments.domain.name()).toLowerCase(), parser.hasArg(Arguments.forceDelete.name())); } else if (actionType.equals(ActionType.validate)) { validate(); } else if (actionType.equals(ActionType.list)) { @@ -855,7 +856,7 @@ ldapProviderTypeEntry); } - public void deleteDomain(String domainName) throws ManageDomainsResult { + public void deleteDomain(String domainName, boolean forceDelete) throws ManageDomainsResult { String currentDomains = configurationProvider.getConfigValue(ConfigValues.DomainName); DomainsConfigurationEntry domainNameEntry = @@ -863,6 +864,10 @@ if (!domainNameEntry.doesDomainExist(domainName)) { throw new ManageDomainsResult(ManageDomainsResultEnum.DOMAIN_DOESNT_EXIST_IN_CONFIGURATION, domainName); + } + + if(!forceDelete && !confirmDeleteDomain(domainName)) { + return; } domainNameEntry.removeValueForDomain(domainName); @@ -911,6 +916,17 @@ System.out.println(String.format(DELETE_DOMAIN_SUCCESS, domainName)); } + private boolean confirmDeleteDomain(String domainName) { + String response = null; + while (StringUtils.isBlank(response) + || (!StringUtils.equalsIgnoreCase(response, "yes") + && !StringUtils.equalsIgnoreCase(response, "no"))) { + System.out.println("Are you sure you like to delete domain "+domainName +" (yes/no) : "); + response = System.console().readLine(); + } + return response.equals("yes"); + } + private void validate(CLIParser parser) throws ManageDomainsResult { if (parser.hasArg(Arguments.propertiesFile.name())) { @@ -926,10 +942,12 @@ if (actionType.equals(ActionType.add)) { requireArgs(parser, Arguments.domain, Arguments.user, Arguments.provider); requireAtLeastOneArg(parser, Arguments.passwordFile, Arguments.interactive); - checkInvalidArgs(parser); + checkInvalidArgs(parser, + Arguments.forceDelete); } else if (actionType.equals(ActionType.edit)) { requireArgs(parser, Arguments.domain); - checkInvalidArgs(parser); + checkInvalidArgs(parser, + Arguments.forceDelete); } else if (actionType.equals(ActionType.delete)) { requireArgs(parser, Arguments.domain); checkInvalidArgs(parser); @@ -938,13 +956,15 @@ Arguments.domain, Arguments.user, Arguments.passwordFile, - Arguments.interactive); + Arguments.interactive, + Arguments.forceDelete); } else if (actionType.equals(ActionType.list)) { checkInvalidArgs(parser, Arguments.domain, Arguments.user, Arguments.passwordFile, - Arguments.interactive); + Arguments.interactive, + Arguments.forceDelete); } } else { throw new ManageDomainsResult(ManageDomainsResultEnum.ACTION_IS_NOT_SPECIFIED); -- To view, visit http://gerrit.ovirt.org/9585 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I770269eccdc4a2d0645d96cf48b660ad22d42f9d Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Ravi Nori <rn...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches