Skip to content

Commit

Permalink
Merge pull request #2169 from michaelranaldo/PAYARA-2113-Misleading-M…
Browse files Browse the repository at this point in the history
…essage-For-Stop-Domain-If-Domain1-Not-Running (#2197)

PAYARA-2113 Made stop-domain a little more descriptive
  • Loading branch information
michaelranaldo authored and smillidge committed Dec 9, 2017
1 parent f6c88fb commit 8843047
Show file tree
Hide file tree
Showing 4 changed files with 126 additions and 76 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,12 @@
* only if the new code is made subject to such option by the copyright
* holder.
*/
// Portions Copyright [2017] Payara Foundation and/or its affiliates
package com.sun.enterprise.admin.servermgmt.cli;

import com.sun.enterprise.admin.cli.remote.RemoteCLICommand;
import com.sun.enterprise.admin.servermgmt.DomainConfig;
import com.sun.enterprise.admin.servermgmt.DomainException;
import com.sun.enterprise.admin.servermgmt.DomainsManager;
import com.sun.enterprise.admin.servermgmt.pe.PEDomainsManager;
import com.sun.enterprise.universal.i18n.LocalStringsImpl;
Expand All @@ -49,6 +51,8 @@
import com.sun.enterprise.util.io.DomainDirs;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.glassfish.api.Param;
import org.glassfish.api.admin.*;
import org.glassfish.hk2.api.PerLookup;
Expand All @@ -60,100 +64,113 @@
@Service(name = "list-domains")
@PerLookup
public final class ListDomainsCommand extends LocalDomainCommand {
private static final LocalStringsImpl strings =
new LocalStringsImpl(ListDomainsCommand.class);

private static final LocalStringsImpl STRINGS = new LocalStringsImpl(ListDomainsCommand.class);
private String domainsRoot = null;

@Param(name="long", shortName="l", optional=true)
@Param(name = "long", shortName = "l", optional = true)
boolean longOpt;
@Param(shortName="h", optional=true, defaultValue="true")

@Param(shortName = "h", optional = true, defaultValue = "true")
boolean header;

/*
* Override the validate method because super.validate() calls initDomain,
* and since we don't have a domain name yet, we aren't ready to call that.
*/
@Override
protected void validate()
throws CommandException, CommandValidationException {
protected void validate() throws CommandException, CommandValidationException {
}

@Override
protected int executeCommand() throws CommandException, CommandValidationException {
try {
File domainsDirFile = ok(domainDirParam)
? new File(domainDirParam) : DomainDirs.getDefaultDomainsDir();

File domainsDirFile = ok(domainDirParam) ? new File(domainDirParam) : DomainDirs.getDefaultDomainsDir();
DomainConfig domainConfig = new DomainConfig(null, domainsDirFile.getAbsolutePath());
DomainsManager manager = new PEDomainsManager();
String[] domainsList = manager.listDomains(domainConfig);
programOpts.setInteractive(false); // no prompting for passwords
if (domainsList.length > 0) {
if (longOpt) {
String headings[] = {"DOMAIN", "ADMIN_HOST", "ADMIN_PORT", "RUNNING", "RESTART_REQUIRED"};
ColumnFormatter cf = header ? new ColumnFormatter(headings) :
new ColumnFormatter();
ColumnFormatter cf = header ? new ColumnFormatter(headings)
: new ColumnFormatter();
for (String dn : domainsList) {
DomainInfo di = getStatus(dn);
cf.addRow(new Object[] {
dn,
di.adminAddr.getHost(),
di.adminAddr.getPort(),
cf.addRow(new Object[]{
dn,
di.adminAddr.getHost(),
di.adminAddr.getPort(),
di.status,
di.restartRequired
di.restartRequired
});
}
logger.info(cf.toString());
} else {
for (String dn : domainsList) {
logger.info(getStatus(dn).statusMsg);
}
}
}
else {
logger.fine(strings.get("NoDomainsToList"));
}
} else {
logger.fine(STRINGS.get("NoDomainsToList"));
}
}
catch (Exception ex) {
} catch (Exception ex) {
throw new CommandException(ex.getLocalizedMessage());
}
return 0;
}

/**
* Get a list of domains and their status
* @return Map<String, Boolean> of domain and status
* @throws IOException
* @throws DomainException
* @throws CommandException
*/
protected Map<String, Boolean> getDomains() throws IOException, DomainException, CommandException {
Map<String, Boolean> runningDomains = new HashMap<>();
File domainsDirFile = ok(domainDirParam) ? new File(domainDirParam) : DomainDirs.getDefaultDomainsDir();

DomainConfig domainConfig = new DomainConfig(null, domainsDirFile.getAbsolutePath());
DomainsManager manager = new PEDomainsManager();
String[] domainsList = manager.listDomains(domainConfig);
programOpts.setInteractive(false); // no prompting for passwords

for (String domain : domainsList) {
runningDomains.put(domain, getStatus(domain).status);
}
return runningDomains;
}

static class DomainInfo {

public HostAndPort adminAddr;
public boolean status;
public String statusMsg;
public boolean restartRequired;
}

private DomainInfo getStatus(String dn) throws IOException, CommandException {
setDomainName(dn);
initDomain();
DomainInfo di = new DomainInfo();
di.adminAddr = getAdminAddress();
programOpts.setHostAndPort(di.adminAddr);
di.status = isThisDAS(getDomainRootDir());

if (di.status) {
di.statusMsg = strings.get("list.domains.StatusRunning", dn);
di.statusMsg = STRINGS.get("list.domains.StatusRunning", dn);
try {
RemoteCLICommand cmd =
new RemoteCLICommand("_get-restart-required",
programOpts, env);
String restartRequired =
cmd.executeAndReturnOutput("_get-restart-required");
RemoteCLICommand cmd = new RemoteCLICommand("_get-restart-required", programOpts, env);
String restartRequired = cmd.executeAndReturnOutput("_get-restart-required");
di.restartRequired = Boolean.parseBoolean(restartRequired.trim());
if (di.restartRequired) {
di.statusMsg = strings.get("list.domains.StatusRestartRequired", dn);
di.statusMsg = STRINGS.get("list.domains.StatusRestartRequired", dn);
}
} catch (Exception ex) {
}
catch (Exception ex) {
}
}
else {
di.statusMsg = strings.get("list.domains.StatusNotRunning", dn);
} else {
di.statusMsg = STRINGS.get("list.domains.StatusNotRunning", dn);
}
return di;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,10 @@ Domain.badDomainDir=CLI301: There is no such domain directory: {0}
Domain.noDomainXml=CLI304: Cannot find domain.xml. It should be here: {0}

## stop-domain command
StopDomain.dasNotRunning=CLI306: Warning - The server located at {0} is not running.
StopDomain.noDomainsRunning=CLI306: Warning - The server located at {0} is not running. \n\
No domains are currently running.
StopDomain.selectedDomainNotRunning=CLI306: Warning - The server located at {0} is not running. \n\
Please specify one of the currently running domains:
StopDomain.dasNotRunningRemotely=CLI307: Warning - remote server is not running, unable to force it to stop.\n\
Try running stop-domain on the remote server.
StopDomain.WaitDASDeath=Waiting for the domain to stop
Expand Down
Loading

0 comments on commit 8843047

Please sign in to comment.