Skip to content

Reduce logs in webapp container (depends on blackduck-common release) #1390

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

Merged
merged 9 commits into from
Apr 28, 2025
Merged
2 changes: 1 addition & 1 deletion shared-version.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
gradle.ext.blackDuckCommonVersion='67.0.6'
gradle.ext.blackDuckCommonVersion='67.0.7'
gradle.ext.springBootVersion='2.7.12'
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import java.util.List;
import java.util.stream.Collectors;

import com.blackduck.integration.blackduck.service.model.BlackDuckServerData;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -16,11 +17,7 @@
import com.blackduck.integration.blackduck.service.dataservice.BlackDuckRegistrationService;
import com.blackduck.integration.blackduck.service.dataservice.UserGroupService;
import com.blackduck.integration.blackduck.service.dataservice.UserService;
import com.blackduck.integration.configuration.property.Properties;
import com.blackduck.integration.configuration.property.types.enums.EnumProperty;
import com.blackduck.integration.detect.configuration.DetectProperties;
import com.blackduck.integration.detect.configuration.DetectUserFriendlyException;
import com.blackduck.integration.detect.configuration.enumeration.BlackduckScanMode;
import com.blackduck.integration.detect.configuration.enumeration.ExitCodeType;
import com.blackduck.integration.exception.IntegrationException;
import com.blackduck.integration.log.SilentIntLogger;
Expand All @@ -29,7 +26,7 @@

public class BlackDuckConnectivityChecker {
private static final LinkMultipleResponses<UserGroupView> USERGROUPS = new LinkMultipleResponses<>("usergroups", UserGroupView.class);

private static final String SYS_ADMIN_ROLE = "System Administrator";
private final Logger logger = LoggerFactory.getLogger(this.getClass());

public BlackDuckConnectivityResult determineConnectivity(BlackDuckServerConfig blackDuckServerConfig)
Expand All @@ -48,18 +45,21 @@ public BlackDuckConnectivityResult determineConnectivity(BlackDuckServerConfig b
BlackDuckServicesFactory blackDuckServicesFactory = blackDuckServerConfig.createBlackDuckServicesFactory(new Slf4jIntLogger(logger));
BlackDuckRegistrationService blackDuckRegistrationService = blackDuckServicesFactory.createBlackDuckRegistrationService();
UserService userService = blackDuckServicesFactory.createUserService();
boolean isAdminOperationAllowed = false;

String version = "";
try {
version = blackDuckRegistrationService.getBlackDuckServerData().getVersion();
logger.info(String.format("Successfully connected to Black Duck (version %s)!", version));

UserView userView = userService.findCurrentUser();
UserGroupService userGroupService = blackDuckServicesFactory.createUserGroupService();
List<RoleAssignmentView> roles = userGroupService.getServerRolesForUser(userView);
Copy link
Contributor

Choose a reason for hiding this comment

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

One thing to be careful about here is pagination.
I'm not sure what the maximum number of roles is, but it may be greater than the default page size.

isAdminOperationAllowed = checkIsAdmin(roles);
BlackDuckServerData blackDuckServerData = blackDuckRegistrationService.getBlackDuckServerData(isAdminOperationAllowed);
if(blackDuckServerData != null) {
version = blackDuckServerData.getVersion();
logger.info("Successfully connected to Black Duck (version {})!", version);
}
if (logger.isDebugEnabled()) {
UserView userView = userService.findCurrentUser();
logger.debug("Connected as: " + userView.getUserName());

UserGroupService userGroupService = blackDuckServicesFactory.createUserGroupService();
List<RoleAssignmentView> roles = userGroupService.getServerRolesForUser(userView);
logger.debug("Server Roles: " + roles.stream().map(RoleAssignmentView::getName).distinct().collect(Collectors.joining(", ")));

BlackDuckApiClient blackDuckApiClient = blackDuckServicesFactory.getBlackDuckApiClient();
Expand All @@ -73,6 +73,10 @@ public BlackDuckConnectivityResult determineConnectivity(BlackDuckServerConfig b
ExitCodeType.FAILURE_BLACKDUCK_CONNECTIVITY
);
}
return BlackDuckConnectivityResult.success(blackDuckServicesFactory, blackDuckServerConfig, version);
return BlackDuckConnectivityResult.success(blackDuckServicesFactory, blackDuckServerConfig, version, isAdminOperationAllowed);
}

private boolean checkIsAdmin(List<RoleAssignmentView> roles) {
return roles.stream().anyMatch(role -> SYS_ADMIN_ROLE.equals(role.getName()));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,27 +13,43 @@ public class BlackDuckConnectivityResult {
//if success, the following is populated
private final BlackDuckServicesFactory blackDuckServicesFactory;
private final BlackDuckServerConfig blackDuckServerConfig;
private boolean isAdminOperationAllowed;

private BlackDuckConnectivityResult(
boolean successfullyConnected,
String failureReason,
BlackDuckServicesFactory blackDuckServicesFactory,
BlackDuckServerConfig blackDuckServerConfig,
String serverVersion
String serverVersion,
boolean isAdminOperationAllowed
) {
this.successfullyConnected = successfullyConnected;
this.failureReason = failureReason;
this.blackDuckServicesFactory = blackDuckServicesFactory;
this.blackDuckServerConfig = blackDuckServerConfig;
this.contactedServerVersion = serverVersion.equals("") || serverVersion == null ? "0.0.0" : serverVersion;
this.isAdminOperationAllowed = isAdminOperationAllowed;
}

public static BlackDuckConnectivityResult success(BlackDuckServicesFactory blackDuckServicesFactory, BlackDuckServerConfig blackDuckServerConfig, String serverVersion) {
return new BlackDuckConnectivityResult(true, null, blackDuckServicesFactory, blackDuckServerConfig, serverVersion);
public static BlackDuckConnectivityResult success(
BlackDuckServicesFactory blackDuckServicesFactory,
BlackDuckServerConfig blackDuckServerConfig,
String serverVersion,
boolean isAdminOperationAllowed
) {
return new BlackDuckConnectivityResult(true, null, blackDuckServicesFactory, blackDuckServerConfig, serverVersion, isAdminOperationAllowed);
}

public static BlackDuckConnectivityResult success(
BlackDuckServicesFactory blackDuckServicesFactory,
BlackDuckServerConfig blackDuckServerConfig,
String serverVersion
) {
return success(blackDuckServicesFactory, blackDuckServerConfig, serverVersion, false);
}

public static BlackDuckConnectivityResult failure(String reason) {
return new BlackDuckConnectivityResult(false, reason, null, null, "no connection");
return new BlackDuckConnectivityResult(false, reason, null, null, "no connection", false);
}

public boolean isSuccessfullyConnected() {
Expand All @@ -55,4 +71,12 @@ public BlackDuckServerConfig getBlackDuckServerConfig() {
public String getContactedServerVersion() {
return this.contactedServerVersion;
}

public boolean isAdminOperationAllowed() {
return isAdminOperationAllowed;
}

public void setAdminOperationAllowed(boolean adminOperationAllowed) {
isAdminOperationAllowed = adminOperationAllowed;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ private BlackDuckRunData createBlackDuckRunDataBasedOnPhoneHomeDecision(BlackDuc
if (shouldUsePhoneHome(analyticsConfigurationService, blackDuckServicesFactory.getApiDiscovery(), blackDuckServicesFactory.getBlackDuckApiClient())) {
try {
PhoneHomeManager phoneHomeManager = productBootFactory.createPhoneHomeManager(blackDuckServicesFactory,
new PhoneHomeCredentialsFactory().getGa4Credentials());
new PhoneHomeCredentialsFactory().getGa4Credentials(), blackDuckConnectivityResult.isAdminOperationAllowed());
return BlackDuckRunData.online(
blackDuckDecision.scanMode(),
blackDuckServicesFactory,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,20 @@ public ProductBootFactory(DetectInfo detectInfo, EventSystem eventSystem, Detect
}

public PhoneHomeManager createPhoneHomeManager(BlackDuckServicesFactory blackDuckServicesFactory, PhoneHomeCredentials phoneHomeCredentials) {
return createPhoneHomeManager(blackDuckServicesFactory, phoneHomeCredentials, false);
}

public PhoneHomeManager createPhoneHomeManager(BlackDuckServicesFactory blackDuckServicesFactory, PhoneHomeCredentials phoneHomeCredentials, boolean isAdminOperationAllowed) {
ExecutorService executorService = Executors.newSingleThreadExecutor();
BlackDuckPhoneHomeHelper blackDuckPhoneHomeHelper = BlackDuckPhoneHomeHelper.createAsynchronousPhoneHomeHelper(
blackDuckServicesFactory, phoneHomeCredentials.getApiSecret(), phoneHomeCredentials.getMeasurementId(), executorService);
PhoneHomeManager phoneHomeManager = new OnlinePhoneHomeManager(
blackDuckServicesFactory, phoneHomeCredentials.getApiSecret(), phoneHomeCredentials.getMeasurementId(), executorService);
return new OnlinePhoneHomeManager(
detectConfigurationFactory.createPhoneHomeOptions().getPassthrough(),
detectInfo,
eventSystem,
blackDuckPhoneHomeHelper
blackDuckPhoneHomeHelper,
isAdminOperationAllowed
);
return phoneHomeManager;
}

public BlackDuckServerConfig createBlackDuckServerConfig() throws DetectUserFriendlyException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,12 @@

public class OnlinePhoneHomeManager extends PhoneHomeManager {
private final BlackDuckPhoneHomeHelper blackDuckPhoneHomeHelper;
private final boolean isAdminOperationAllowed;

public OnlinePhoneHomeManager(Map<String, String> additionalMetaData, DetectInfo detectInfo, EventSystem eventSystem, BlackDuckPhoneHomeHelper blackDuckPhoneHomeHelper) {
public OnlinePhoneHomeManager(Map<String, String> additionalMetaData, DetectInfo detectInfo, EventSystem eventSystem, BlackDuckPhoneHomeHelper blackDuckPhoneHomeHelper, boolean isAdminOperationAllowed) {
super(additionalMetaData, detectInfo, eventSystem);
this.blackDuckPhoneHomeHelper = blackDuckPhoneHomeHelper;
this.isAdminOperationAllowed = isAdminOperationAllowed;
}

@Override
Expand All @@ -22,7 +24,7 @@ public PhoneHomeResponse phoneHome(Map<String, String> metadata, String... artif
metaDataToSend.putAll(metadata);
metaDataToSend.putAll(detectorTypesMetadata);
metaDataToSend.putAll(additionalMetaData);
return blackDuckPhoneHomeHelper.handlePhoneHome("detect", detectInfo.getDetectVersion(), metaDataToSend, artifactModules);
return blackDuckPhoneHomeHelper.handlePhoneHome("detect", detectInfo.getDetectVersion(), metaDataToSend, isAdminOperationAllowed, artifactModules);
}

}