class ZTSImpl implements KeyStore, ZTSHandler {

    @Override
    public Status getStatus(ResourceContext ctx) {

        final String caller = ctx.getApiName();
        final String principalDomain = logPrincipalAndGetDomain(ctx);

        // validate our request as status request
        
        validateRequest(ctx.request(), principalDomain, caller, true);

        // for now we're going to verify our certsigner connectivity
        // only if the administrator has configured it. without certsigner
        // we can still issue role tokens and temporary credentials
        // in case of failure we're going to return not found

        if (statusCertSigner) {
            if (instanceCertManager.getCACertificate() == null) {
                throw notFoundError("Unable to communicate with cert signer", caller,
                        ZTSConsts.ZTS_UNKNOWN_DOMAIN, principalDomain);
            }
        }

        // check if we're configured to check for the status file

        if (healthCheckFile != null && !healthCheckFile.exists()) {
            throw notFoundError("Error - no status available", caller,
                    ZTSConsts.ZTS_UNKNOWN_DOMAIN, principalDomain);
        }

        // if the statusChecker is set, check the status

        if (statusChecker != null) {
            try {
                statusChecker.check();
            } catch (StatusCheckException e) {
                throw error(e.getCode(), e.getMsg(), caller,
                        ZTSConsts.ZTS_UNKNOWN_DOMAIN, principalDomain);
            }
        }

        return successServerStatus;
    }

    public  ZTSImpl();
    public  ZTSImpl(CloudStore implCloudStore, DataStore implDataStore);

}