Skip to content

Commit

Permalink
AMBARI-22353. Remove properties.json And Switch To Adding Properties …
Browse files Browse the repository at this point in the history
…to ResourceProviders Dynamically (dlysnichenko)
  • Loading branch information
Lisnichenko Dmitro committed Dec 4, 2017
1 parent 24c64b4 commit e77a31a
Show file tree
Hide file tree
Showing 143 changed files with 1,480 additions and 1,925 deletions.
Expand Up @@ -18,7 +18,6 @@
*/
package org.apache.ambari.logsearch.web.security;

import com.google.common.collect.Lists;
import org.apache.ambari.logsearch.common.ExternalServerClient;
import org.apache.ambari.logsearch.conf.AuthPropsConfig;
import org.junit.Before;
Expand Down
Expand Up @@ -19,28 +19,21 @@

package org.apache.ambari.server.controller;

import java.util.Map;
import java.util.Set;

import javax.inject.Named;

import org.apache.ambari.server.controller.internal.AlertTargetResourceProvider;
import org.apache.ambari.server.controller.internal.ClusterStackVersionResourceProvider;
import org.apache.ambari.server.controller.internal.UpgradeResourceProvider;
import org.apache.ambari.server.controller.internal.ViewInstanceResourceProvider;
import org.apache.ambari.server.controller.spi.Resource;
import org.apache.ambari.server.controller.spi.Resource.Type;
import org.apache.ambari.server.controller.spi.ResourceProvider;


public interface ResourceProviderFactory {
@Named("host")
ResourceProvider getHostResourceProvider(Set<String> propertyIds, Map<Type, String> keyPropertyIds,
AmbariManagementController managementController);
ResourceProvider getHostResourceProvider(AmbariManagementController managementController);

@Named("hostComponent")
ResourceProvider getHostComponentResourceProvider(Set<String> propertyIds, Map<Type, String> keyPropertyIds,
AmbariManagementController managementController);
ResourceProvider getHostComponentResourceProvider(AmbariManagementController managementController);

@Named("service")
ResourceProvider getServiceResourceProvider(AmbariManagementController managementController);
Expand All @@ -49,8 +42,7 @@ ResourceProvider getHostComponentResourceProvider(Set<String> propertyIds, Map<T
ResourceProvider getComponentResourceProvider(AmbariManagementController managementController);

@Named("member")
ResourceProvider getMemberResourceProvider(Set<String> propertyIds, Map<Type, String> keyPropertyIds,
AmbariManagementController managementController);
ResourceProvider getMemberResourceProvider(AmbariManagementController managementController);

@Named("hostKerberosIdentity")
ResourceProvider getHostKerberosIdentityResourceProvider(AmbariManagementController managementController);
Expand All @@ -62,8 +54,7 @@ ResourceProvider getMemberResourceProvider(Set<String> propertyIds, Map<Type, St
ResourceProvider getRepositoryVersionResourceProvider();

@Named("kerberosDescriptor")
ResourceProvider getKerberosDescriptorResourceProvider(AmbariManagementController managementController, Set<String> propertyIds,
Map<Resource.Type, String> keyPropertyIds);
ResourceProvider getKerberosDescriptorResourceProvider(AmbariManagementController managementController);

@Named("upgrade")
UpgradeResourceProvider getUpgradeResourceProvider(AmbariManagementController managementController);
Expand Down
Expand Up @@ -81,16 +81,6 @@ public abstract class AbstractAuthorizedResourceProvider extends AbstractResourc
*/
private Set<RoleAuthorization> requiredDeleteAuthorizations = Collections.emptySet();

/**
* Constructor
*
* @param propertyIds the property ids
* @param keyPropertyIds the key property ids
*/
protected AbstractAuthorizedResourceProvider(Set<String> propertyIds, Map<Resource.Type, String> keyPropertyIds) {
super(propertyIds, keyPropertyIds);
}

/**
* Create a new resource provider. This constructor will initialize the
* specified {@link Resource.Type} with the provided keys. It should be used
Expand All @@ -106,7 +96,7 @@ protected AbstractAuthorizedResourceProvider(Set<String> propertyIds, Map<Resour
*/
AbstractAuthorizedResourceProvider(Resource.Type type, Set<String> propertyIds,
Map<Resource.Type, String> keyPropertyIds) {
this(propertyIds, keyPropertyIds);
super(propertyIds, keyPropertyIds);
PropertyHelper.setPropertyIds(type, propertyIds);
PropertyHelper.setKeyPropertyIds(type, keyPropertyIds);
}
Expand Down
Expand Up @@ -27,7 +27,6 @@
import org.apache.ambari.server.controller.spi.Resource;
import org.apache.ambari.server.controller.spi.ResourceProvider;
import org.apache.ambari.server.controller.utilities.ClusterControllerHelper;
import org.apache.ambari.server.controller.utilities.PropertyHelper;
import org.apache.ambari.server.state.Cluster;

/**
Expand All @@ -44,20 +43,6 @@ public abstract class AbstractControllerResourceProvider extends AbstractAuthori

// ----- Constructors ------------------------------------------------------

/**
* Create a new resource provider for the given management controller.
*
* @param propertyIds the property ids
* @param keyPropertyIds the key property ids
* @param managementController the management controller
*/
protected AbstractControllerResourceProvider(Set<String> propertyIds,
Map<Resource.Type, String> keyPropertyIds,
AmbariManagementController managementController) {
super(propertyIds, keyPropertyIds);
this.managementController = managementController;
}

/**
* Create a new resource provider for the given management controller. This
* constructor will initialize the specified {@link Resource.Type} with the
Expand All @@ -75,9 +60,8 @@ protected AbstractControllerResourceProvider(Set<String> propertyIds,
*/
AbstractControllerResourceProvider(Resource.Type type, Set<String> propertyIds,
Map<Resource.Type, String> keyPropertyIds, AmbariManagementController managementController) {
this(propertyIds, keyPropertyIds, managementController);
PropertyHelper.setPropertyIds(type, propertyIds);
PropertyHelper.setKeyPropertyIds(type, keyPropertyIds);
super(type, propertyIds, keyPropertyIds);
this.managementController = managementController;
}

public static void init(ResourceProviderFactory factory) {
Expand Down Expand Up @@ -139,14 +123,11 @@ protected Long getClusterResourceId(Long clusterId) throws AmbariException {
* Factory method for obtaining a resource provider based on a given type and management controller.
*
* @param type the resource type
* @param propertyIds the property ids
* @param managementController the management controller
*
* @return a new resource provider
*/
public static ResourceProvider getResourceProvider(Resource.Type type,
Set<String> propertyIds,
Map<Resource.Type, String> keyPropertyIds,
AmbariManagementController managementController) {

switch (type.getInternalType()) {
Expand All @@ -157,75 +138,75 @@ public static ResourceProvider getResourceProvider(Resource.Type type,
case Component:
return resourceProviderFactory.getComponentResourceProvider(managementController);
case Host:
return resourceProviderFactory.getHostResourceProvider(propertyIds, keyPropertyIds, managementController);
return resourceProviderFactory.getHostResourceProvider(managementController);
case HostComponent:
return resourceProviderFactory.getHostComponentResourceProvider(propertyIds, keyPropertyIds, managementController);
return resourceProviderFactory.getHostComponentResourceProvider(managementController);
case Configuration:
return new ConfigurationResourceProvider(managementController);
case ServiceConfigVersion:
return new ServiceConfigVersionResourceProvider(managementController);
case Action:
return new ActionResourceProvider(propertyIds, keyPropertyIds, managementController);
return new ActionResourceProvider(managementController);
case Request:
return new RequestResourceProvider(propertyIds, keyPropertyIds, managementController);
return new RequestResourceProvider(managementController);
case Task:
return new TaskResourceProvider(propertyIds, keyPropertyIds, managementController);
return new TaskResourceProvider(managementController);
case User:
return new UserResourceProvider(propertyIds, keyPropertyIds, managementController);
return new UserResourceProvider(managementController);
case Group:
return new GroupResourceProvider(propertyIds, keyPropertyIds, managementController);
return new GroupResourceProvider(managementController);
case Member:
return resourceProviderFactory.getMemberResourceProvider(propertyIds, keyPropertyIds, managementController);
return resourceProviderFactory.getMemberResourceProvider(managementController);
case Upgrade:
return resourceProviderFactory.getUpgradeResourceProvider(managementController);
case Stack:
return new StackResourceProvider(propertyIds, keyPropertyIds, managementController);
return new StackResourceProvider(managementController);
case StackVersion:
return new StackVersionResourceProvider(propertyIds, keyPropertyIds, managementController);
return new StackVersionResourceProvider(managementController);
case ClusterStackVersion:
return resourceProviderFactory.getClusterStackVersionResourceProvider(managementController);
case HostStackVersion:
return new HostStackVersionResourceProvider(managementController);
case StackService:
return new StackServiceResourceProvider(propertyIds, keyPropertyIds, managementController);
return new StackServiceResourceProvider(managementController);
case StackServiceComponent:
return new StackServiceComponentResourceProvider(propertyIds, keyPropertyIds, managementController);
return new StackServiceComponentResourceProvider(managementController);
case StackConfiguration:
return new StackConfigurationResourceProvider(propertyIds, keyPropertyIds, managementController);
return new StackConfigurationResourceProvider(managementController);
case StackConfigurationDependency:
return new StackConfigurationDependencyResourceProvider(propertyIds, keyPropertyIds, managementController);
return new StackConfigurationDependencyResourceProvider(managementController);
case StackLevelConfiguration:
return new StackLevelConfigurationResourceProvider(propertyIds, keyPropertyIds, managementController);
return new StackLevelConfigurationResourceProvider(managementController);
case ExtensionLink:
return new ExtensionLinkResourceProvider(propertyIds, keyPropertyIds, managementController);
return new ExtensionLinkResourceProvider(managementController);
case Extension:
return new ExtensionResourceProvider(propertyIds, keyPropertyIds, managementController);
return new ExtensionResourceProvider(managementController);
case ExtensionVersion:
return new ExtensionVersionResourceProvider(propertyIds, keyPropertyIds, managementController);
return new ExtensionVersionResourceProvider(managementController);
case RootService:
return new RootServiceResourceProvider(propertyIds, keyPropertyIds, managementController);
return new RootServiceResourceProvider(managementController);
case RootServiceComponent:
return new RootServiceComponentResourceProvider(propertyIds, keyPropertyIds, managementController);
return new RootServiceComponentResourceProvider(managementController);
case RootServiceComponentConfiguration:
return resourceProviderFactory.getRootServiceHostComponentConfigurationResourceProvider();
case RootServiceHostComponent:
return new RootServiceHostComponentResourceProvider(propertyIds, keyPropertyIds, managementController);
return new RootServiceHostComponentResourceProvider(managementController);
case ConfigGroup:
return new ConfigGroupResourceProvider(propertyIds, keyPropertyIds, managementController);
return new ConfigGroupResourceProvider(managementController);
case RequestSchedule:
return new RequestScheduleResourceProvider(propertyIds, keyPropertyIds, managementController);
return new RequestScheduleResourceProvider(managementController);
case HostComponentProcess:
return new HostComponentProcessResourceProvider(propertyIds, keyPropertyIds, managementController);
return new HostComponentProcessResourceProvider(managementController);
case Blueprint:
return new BlueprintResourceProvider(propertyIds, keyPropertyIds, managementController);
return new BlueprintResourceProvider(managementController);
case KerberosDescriptor:
return resourceProviderFactory.getKerberosDescriptorResourceProvider(managementController, propertyIds, keyPropertyIds);
return resourceProviderFactory.getKerberosDescriptorResourceProvider(managementController);
case Recommendation:
return new RecommendationResourceProvider(propertyIds, keyPropertyIds, managementController);
return new RecommendationResourceProvider(managementController);
case Validation:
return new ValidationResourceProvider(propertyIds, keyPropertyIds, managementController);
return new ValidationResourceProvider(managementController);
case ClientConfig:
return new ClientConfigResourceProvider(propertyIds, keyPropertyIds, managementController);
return new ClientConfigResourceProvider(managementController);
case RepositoryVersion:
return resourceProviderFactory.getRepositoryVersionResourceProvider();
case CompatibleRepositoryVersion:
Expand Down Expand Up @@ -255,7 +236,7 @@ public static ResourceProvider getResourceProvider(Resource.Type type,
case ClusterKerberosDescriptor:
return new ClusterKerberosDescriptorResourceProvider(managementController);
case LoggingQuery:
return new LoggingResourceProvider(propertyIds, keyPropertyIds, managementController);
return new LoggingResourceProvider(managementController);
case AlertTarget:
return resourceProviderFactory.getAlertTargetResourceProvider();
case ViewInstance:
Expand Down
Expand Up @@ -68,22 +68,19 @@ protected IvoryService getService() {
* Factory method for obtaining a resource provider based on a given Ivory service instance.
*
* @param type the resource type
* @param propertyIds the property ids
* @param service the Ivory service
*
* @return a new resource provider
*/
public static ResourceProvider getResourceProvider(Resource.Type type,
Set<String> propertyIds,
Map<Resource.Type, String> keyPropertyIds,
IvoryService service) {
switch (type.getInternalType()) {
case DRFeed:
return new FeedResourceProvider(service, propertyIds, keyPropertyIds);
return new FeedResourceProvider(service);
case DRTargetCluster:
return new TargetClusterResourceProvider(service, propertyIds, keyPropertyIds);
return new TargetClusterResourceProvider(service);
case DRInstance:
return new InstanceResourceProvider(service, propertyIds, keyPropertyIds);
return new InstanceResourceProvider(service);
default:
throw new IllegalArgumentException("Unknown type " + type);
}
Expand Down
Expand Up @@ -19,7 +19,6 @@

package org.apache.ambari.server.controller.internal;

import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
Expand All @@ -46,6 +45,9 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Sets;

public class ActionResourceProvider extends AbstractControllerResourceProvider {

private static final Logger LOG = LoggerFactory.getLogger(ActionResourceProvider.class);
Expand All @@ -66,13 +68,29 @@ public class ActionResourceProvider extends AbstractControllerResourceProvider {
.getPropertyId("Actions", "target_type");
public static final String DEFAULT_TIMEOUT_PROPERTY_ID = PropertyHelper
.getPropertyId("Actions", "default_timeout");
private static Set<String> pkPropertyIds = new HashSet<>(
Arrays.asList(new String[]{ACTION_NAME_PROPERTY_ID}));

public ActionResourceProvider(Set<String> propertyIds,
Map<Type, String> keyPropertyIds,
AmbariManagementController managementController) {
super(propertyIds, keyPropertyIds, managementController);
/**
* The key property ids for a Action resource.
*/
private static Map<Resource.Type, String> keyPropertyIds = ImmutableMap.<Resource.Type, String>builder()
.put(Type.Action, ACTION_NAME_PROPERTY_ID)
.build();

/**
* The property ids for a Action resource.
*/
private static Set<String> propertyIds = Sets.newHashSet(
ACTION_NAME_PROPERTY_ID,
ACTION_TYPE_PROPERTY_ID,
INPUTS_PROPERTY_ID,
TARGET_SERVICE_PROPERTY_ID,
TARGET_COMPONENT_PROPERTY_ID,
DESCRIPTION_PROPERTY_ID,
TARGET_HOST_PROPERTY_ID,
DEFAULT_TIMEOUT_PROPERTY_ID);

public ActionResourceProvider(AmbariManagementController managementController) {
super(Type.Action, propertyIds, keyPropertyIds, managementController);
}

@Override
Expand Down Expand Up @@ -168,7 +186,7 @@ private ActionRequest getRequest(Map<String, Object> properties) {

@Override
public Set<String> getPKPropertyIds() {
return pkPropertyIds;
return new HashSet<>(keyPropertyIds.values());
}

private ActionManager getActionManager() {
Expand Down
Expand Up @@ -126,7 +126,7 @@ public static void init(UserDAO userDAO, WidgetDAO widgetDAO, WidgetLayoutDAO wi
*
*/
public ActiveWidgetLayoutResourceProvider(AmbariManagementController managementController) {
super(propertyIds, keyPropertyIds, managementController);
super(Type.ActiveWidgetLayout, propertyIds, keyPropertyIds, managementController);
}

@Override
Expand Down
Expand Up @@ -172,7 +172,7 @@ public class AlertDefinitionResourceProvider extends AbstractControllerResourceP
* @param controller
*/
AlertDefinitionResourceProvider(AmbariManagementController controller) {
super(PROPERTY_IDS, KEY_PROPERTY_IDS, controller);
super(Resource.Type.AlertDefinition, PROPERTY_IDS, KEY_PROPERTY_IDS, controller);
}

@Override
Expand Down
Expand Up @@ -118,7 +118,7 @@ public class AlertGroupResourceProvider extends
* @param controller
*/
AlertGroupResourceProvider(AmbariManagementController controller) {
super(PROPERTY_IDS, KEY_PROPERTY_IDS, controller);
super(Resource.Type.AlertGroup, PROPERTY_IDS, KEY_PROPERTY_IDS, controller);
}

@Override
Expand Down
Expand Up @@ -118,7 +118,7 @@ public class AlertHistoryResourceProvider extends ReadOnlyResourceProvider imple
* Constructor.
*/
AlertHistoryResourceProvider(AmbariManagementController controller) {
super(PROPERTY_IDS, KEY_PROPERTY_IDS, controller);
super(Resource.Type.AlertHistory, PROPERTY_IDS, KEY_PROPERTY_IDS, controller);
}

/**
Expand Down
Expand Up @@ -105,7 +105,7 @@ public class AlertNoticeResourceProvider extends AbstractControllerResourceProvi
* Constructor.
*/
AlertNoticeResourceProvider(AmbariManagementController managementController) {
super(PROPERTY_IDS, KEY_PROPERTY_IDS, managementController);
super(Resource.Type.AlertNotice, PROPERTY_IDS, KEY_PROPERTY_IDS, managementController);
}

/**
Expand Down
Expand Up @@ -145,7 +145,7 @@ public class AlertResourceProvider extends ReadOnlyResourceProvider implements
* @param controller
*/
AlertResourceProvider(AmbariManagementController controller) {
super(PROPERTY_IDS, KEY_PROPERTY_IDS, controller);
super(Resource.Type.Alert, PROPERTY_IDS, KEY_PROPERTY_IDS, controller);
}

@Override
Expand Down

0 comments on commit e77a31a

Please sign in to comment.