Yair Zaslavsky has uploaded a new change for review. Change subject: aaa: Distinguishing between get domains and get profiles ......................................................................
aaa: Distinguishing between get domains and get profiles Frontend should work with profiles. REST-API should return domains (authz) for /api/domains Topic: AAA Change-Id: Id1aeff31ef23ffff8d1e0cd7f65269daad77f49a Signed-off-by: Yair Zaslavsky <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDomainListQuery.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetProfilesListQuery.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetDomainListQueryTest.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/LoginModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/AdElementListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RunOnceModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmInitModel.java 11 files changed, 90 insertions(+), 42 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/01/28501/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java index 6bd7f05..feca61b 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java @@ -608,7 +608,7 @@ @Override public VdcQueryReturnValue runPublicQuery(VdcQueryType actionType, VdcQueryParametersBase parameters) { switch (actionType) { - case GetDomainList: + case GetProfilesList: case RegisterVds: case CheckDBConnection: case ValidateSession: diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDomainListQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDomainListQuery.java index 82f11dd..ccc1f19 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDomainListQuery.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDomainListQuery.java @@ -5,11 +5,14 @@ import java.util.ArrayList; import java.util.List; -import org.ovirt.engine.core.aaa.AuthenticationProfile; -import org.ovirt.engine.core.aaa.AuthenticationProfileRepository; +import org.ovirt.engine.api.extensions.aaa.Authz; +import org.ovirt.engine.core.aaa.AuthzUtils; import org.ovirt.engine.core.common.config.Config; import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.common.queries.GetDomainListParameters; +import org.ovirt.engine.core.extensions.mgr.ExtensionProxy; +import org.ovirt.engine.core.extensions.mgr.ExtensionsManager; +import org.ovirt.engine.core.utils.extensionsmgr.EngineExtensionsManager; public class GetDomainListQuery<P extends GetDomainListParameters> extends QueriesCommandBase<P> { public GetDomainListQuery(P parameters) { @@ -22,10 +25,11 @@ String internal = Config.<String> getValue(ConfigValues.AdminDomain); // Get the list of authentication profile names: - List<AuthenticationProfile> profiles = AuthenticationProfileRepository.getInstance().getProfiles(); - List<String> names = new ArrayList<>(profiles.size()); - for (AuthenticationProfile profile : profiles) { - names.add(profile.getName()); + List<ExtensionProxy> extensions = + getExtensionsManager().getExtensionsByService(Authz.class.getName()); + List<String> names = new ArrayList<>(extensions.size()); + for (ExtensionProxy extension : extensions) { + names.add(AuthzUtils.getName(extension)); } if (getParameters().getFilterInternalDomain()) { names.remove(internal); @@ -37,4 +41,8 @@ // Return the sorted list: getQueryReturnValue().setReturnValue(names); } + + protected ExtensionsManager getExtensionsManager() { + return EngineExtensionsManager.getInstance(); + } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetProfilesListQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetProfilesListQuery.java new file mode 100644 index 0000000..65e5fee --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetProfilesListQuery.java @@ -0,0 +1,26 @@ +package org.ovirt.engine.core.bll; + +import java.util.ArrayList; +import java.util.List; + +import org.ovirt.engine.core.aaa.AuthenticationProfile; +import org.ovirt.engine.core.aaa.AuthenticationProfileRepository; +import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; + +public class GetProfilesListQuery<P extends VdcQueryParametersBase> extends QueriesCommandBase<P> { + + public GetProfilesListQuery(P parameters) { + super(parameters); + } + + @Override + protected void executeQueryCommand() { + List<AuthenticationProfile> profiles = AuthenticationProfileRepository.getInstance().getProfiles(); + List<String> names = new ArrayList<>(profiles.size()); + for (AuthenticationProfile profile : profiles) { + names.add(profile.getName()); + } + getQueryReturnValue().setReturnValue(names); + } + +} diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetDomainListQueryTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetDomainListQueryTest.java index 146ddde..ea63a7b 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetDomainListQueryTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetDomainListQueryTest.java @@ -5,8 +5,10 @@ import static org.mockito.Mockito.mock; import static org.ovirt.engine.core.utils.MockConfigRule.mockConfig; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.List; import org.apache.commons.collections.CollectionUtils; import org.junit.Before; @@ -14,12 +16,12 @@ import org.junit.Test; import org.ovirt.engine.api.extensions.Base; import org.ovirt.engine.api.extensions.ExtMap; -import org.ovirt.engine.core.aaa.AuthenticationProfile; -import org.ovirt.engine.core.aaa.AuthenticationProfileRepository; +import org.ovirt.engine.api.extensions.aaa.Authz; import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.common.queries.GetDomainListParameters; import org.ovirt.engine.core.extensions.mgr.ExtensionProxy; import org.ovirt.engine.core.utils.MockConfigRule; +import org.ovirt.engine.core.utils.extensionsmgr.EngineExtensionsManager; /** * A test case for the {@link GetDomainListQuery} class. @@ -27,27 +29,49 @@ public class GetDomainListQueryTest extends AbstractQueryTest<GetDomainListParameters, GetDomainListQuery<GetDomainListParameters>> { + private static class MockEngineExtensionsManager extends EngineExtensionsManager { + + private List<ExtensionProxy> extensions = new ArrayList<ExtensionProxy>(); + + public void addExtension(ExtensionProxy extension) { + extensions.add(extension); + } + + @Override + public List<ExtensionProxy> getExtensionsByService(String provides) { + return extensions; + } + + public void clear() { + extensions.clear(); + } + } + // The name of the internal authentication profile: private static final String INTERNAL = "internal"; // The list of authentication profile names: private String[] NAMES = { - INTERNAL, - "zzz", - "aaa" + INTERNAL, + "zzz", + "aaa" }; + + private MockEngineExtensionsManager extMgr = new MockEngineExtensionsManager(); @ClassRule public static final MockConfigRule MCR = new MockConfigRule( - mockConfig(ConfigValues.AdminDomain, INTERNAL) - ); + mockConfig(ConfigValues.AdminDomain, INTERNAL) + ); @Before @Override public void setUp() throws Exception { super.setUp(); + extMgr.clear(); + doReturn(extMgr).when(getQuery()).getExtensionsManager(); for (String name : NAMES) { - setUpProfileMock(name); + setUpAuthzMock(name); } } @@ -57,18 +81,13 @@ * * @param name the name for the mocked authenticator, directory and authentication profile */ - private void setUpProfileMock(String name) { + private void setUpAuthzMock(String name) { ExtensionProxy authzMock = mock(ExtensionProxy.class); ExtMap mockContext = mock(ExtMap.class); doReturn(name).when(mockContext).get(Base.ContextKeys.INSTANCE_NAME); + doReturn(Arrays.asList(Authz.class.getName())).when(mockContext).get(Base.ContextKeys.PROVIDES); doReturn(mockContext).when(authzMock).getContext(); - ExtensionProxy authnMock = mock(ExtensionProxy.class); - doReturn(mockContext).when(authnMock).getContext(); - AuthenticationProfile profileMock = mock(AuthenticationProfile.class); - doReturn(name).when(profileMock).getName(); - doReturn(authzMock).when(profileMock).getAuthz(); - doReturn(authnMock).when(profileMock).getAuthn(); - AuthenticationProfileRepository.getInstance().registerProfile(profileMock); + extMgr.addExtension(authzMock); } @Test diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java index 0480b74..077ae97 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java @@ -204,6 +204,7 @@ // Public services GetDomainList(VdcQueryAuthType.User), + GetProfilesList(VdcQueryAuthType.User), RegisterVds(VdcQueryAuthType.User), CheckDBConnection(VdcQueryAuthType.User), ValidateSession(VdcQueryAuthType.User), diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java index 44680f2..9e50d23 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java @@ -90,7 +90,6 @@ import org.ovirt.engine.core.common.queries.GetConfigurationValueParameters; import org.ovirt.engine.core.common.queries.GetConnectionsByDataCenterAndStorageTypeParameters; import org.ovirt.engine.core.common.queries.GetDataCentersWithPermittedActionOnClustersParameters; -import org.ovirt.engine.core.common.queries.GetDomainListParameters; import org.ovirt.engine.core.common.queries.GetEntitiesWithPermittedActionParameters; import org.ovirt.engine.core.common.queries.GetExistingStorageDomainListParameters; import org.ovirt.engine.core.common.queries.GetHostListFromExternalProviderParameters; @@ -441,7 +440,7 @@ return diskInterfaces; } - public static void getDomainListViaPublic(AsyncQuery aQuery, boolean filterInternalDomain) { + public static void getAAAProfilesListViaPublic(AsyncQuery aQuery) { aQuery.converterCallback = new IAsyncConverter() { @Override public Object Convert(Object source, AsyncQuery _asyncQuery) @@ -450,9 +449,7 @@ : new ArrayList<String>(); } }; - GetDomainListParameters tempVar = new GetDomainListParameters(); - tempVar.setFilterInternalDomain(filterInternalDomain); - Frontend.getInstance().runPublicQuery(VdcQueryType.GetDomainList, tempVar, aQuery); + Frontend.getInstance().runPublicQuery(VdcQueryType.GetProfilesList, new VdcQueryParametersBase(), aQuery); } public static void getIsoDomainByDataCenterId(AsyncQuery aQuery, Guid dataCenterId) { @@ -1252,7 +1249,7 @@ } } - public static void getDomainList(AsyncQuery aQuery, boolean filterInternalDomain) { + public static void getAAAProfilesList(AsyncQuery aQuery) { aQuery.converterCallback = new IAsyncConverter() { @Override public Object Convert(Object source, AsyncQuery _asyncQuery) @@ -1261,9 +1258,7 @@ : new ArrayList<String>(); } }; - GetDomainListParameters tempVar = new GetDomainListParameters(); - tempVar.setFilterInternalDomain(filterInternalDomain); - Frontend.getInstance().runQuery(VdcQueryType.GetDomainList, tempVar, aQuery); + Frontend.getInstance().runQuery(VdcQueryType.GetProfilesList, new VdcQueryParametersBase(), aQuery); } public static void getRoleList(AsyncQuery aQuery) { diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/LoginModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/LoginModel.java index 52bf951..9658255 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/LoginModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/LoginModel.java @@ -203,7 +203,7 @@ } }; - AsyncDataProvider.getDomainListViaPublic(_asyncQuery, false); + AsyncDataProvider.getAAAProfilesListViaPublic(_asyncQuery); } @Override diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/AdElementListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/AdElementListModel.java index fc44185..ecec2f1 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/AdElementListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/AdElementListModel.java @@ -173,13 +173,13 @@ setIsTimerDisabled(true); - AsyncDataProvider.getDomainList(new AsyncQuery(this, new INewAsyncCallback() { + AsyncDataProvider.getAAAProfilesList(new AsyncQuery(this, new INewAsyncCallback() { @Override public void onSuccess(Object model, Object result) { populateDomains((List<String>) result); } - }), false); + })); AsyncDataProvider.getRoleList(new AsyncQuery(this, new INewAsyncCallback() { diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RunOnceModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RunOnceModel.java index 20751fb..d11bf80 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RunOnceModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RunOnceModel.java @@ -927,7 +927,7 @@ private void updateDomainList() { // Update Domain list - AsyncDataProvider.getDomainList(new AsyncQuery(this, + AsyncDataProvider.getAAAProfilesList(new AsyncQuery(this, new INewAsyncCallback() { @Override public void onSuccess(Object target, Object returnValue) { @@ -942,7 +942,7 @@ getSysPrepDomainName().setSelectedItem(selectedDomain); } } - }), true); + })); } public void sysPrepListBoxChanged() { diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java index bbeebde..8ce6123 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java @@ -23,8 +23,8 @@ import org.ovirt.engine.core.common.businessentities.UsbPolicy; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSGroup; -import org.ovirt.engine.core.common.businessentities.VmRngDevice; import org.ovirt.engine.core.common.businessentities.VmPoolType; +import org.ovirt.engine.core.common.businessentities.VmRngDevice; import org.ovirt.engine.core.common.businessentities.VmTemplate; import org.ovirt.engine.core.common.businessentities.VmType; import org.ovirt.engine.core.common.businessentities.VmWatchdogAction; @@ -1380,7 +1380,7 @@ Frontend.getInstance().subscribe(new VdcQueryType[] { VdcQueryType.GetStorageDomainsByStoragePoolId, VdcQueryType.GetImagesListByStoragePoolId, VdcQueryType.GetDefaultTimeZone, VdcQueryType.GetStoragePoolsByClusterService, - VdcQueryType.GetDomainList, VdcQueryType.GetConfigurationValue, + VdcQueryType.GetProfilesList, VdcQueryType.GetConfigurationValue, VdcQueryType.GetVdsGroupsByStoragePoolId, VdcQueryType.GetVmTemplatesByStoragePoolId, VdcQueryType.GetVmTemplatesDisks, VdcQueryType.GetStorageDomainsByVmTemplateId, VdcQueryType.GetStorageDomainById, VdcQueryType.GetDataCentersWithPermittedActionOnClusters, diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmInitModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmInitModel.java index 9b1cd50..b1bde74 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmInitModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmInitModel.java @@ -1060,7 +1060,7 @@ // Can't use domain since onSuccess is async call and it have // a different stack call. currentDomain = domain; - AsyncDataProvider.getDomainList(new AsyncQuery(this, + AsyncDataProvider.getAAAProfilesList(new AsyncQuery(this, new INewAsyncCallback() { @Override public void onSuccess(Object target, Object returnValue) { @@ -1074,7 +1074,6 @@ getSysprepDomain().setSelectedItem(currentDomain); } } - }), - true); + })); } } -- To view, visit http://gerrit.ovirt.org/28501 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id1aeff31ef23ffff8d1e0cd7f65269daad77f49a Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Yair Zaslavsky <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
