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

Reply via email to