@Test public void testCreateResources() throws Exception { AmbariManagementController managementController = createMock(AmbariManagementController.class); Request request = createMock(Request.class); Setting setting = createStrictMock(Setting.class); Set<Map<String, Object>> setProperties = getBlueprintTestProperties(); Map<String, String> requestInfoProperties = getTestRequestInfoProperties(); Map<String, Set<HashMap<String, String>>> settingProperties = getSettingProperties(); expect(blueprintFactory.createBlueprint(setProperties.iterator().next(), null)).andReturn(blueprint).once(); expect(securityFactory.createSecurityConfigurationFromRequest(null, true)).andReturn(null).anyTimes(); blueprint.validateRequiredProperties(); blueprint.validateTopology(); expect(blueprint.getSetting()).andReturn(setting).anyTimes(); expect(setting.getProperties()).andReturn(settingProperties).anyTimes(); expect(blueprint.toEntity()).andReturn(entity); expect(blueprint.getName()).andReturn(BLUEPRINT_NAME).atLeastOnce(); expect(request.getProperties()).andReturn(setProperties); expect(request.getRequestInfoProperties()).andReturn(requestInfoProperties); expect(dao.findByName(BLUEPRINT_NAME)).andReturn(null); dao.create(entity); replay(dao, entity, metaInfo, blueprintFactory, securityFactory, blueprint, setting, request, managementController); ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider( Resource.Type.Blueprint, PropertyHelper.getPropertyIds(Resource.Type.Blueprint), PropertyHelper.getKeyPropertyIds(Resource.Type.Blueprint), managementController); AbstractResourceProviderTest.TestObserver observer = new AbstractResourceProviderTest.TestObserver(); ((ObservableResourceProvider)provider).addObserver(observer); provider.createResources(request); ResourceProviderEvent lastEvent = observer.getLastEvent(); assertNotNull(lastEvent); assertEquals(Resource.Type.Blueprint, lastEvent.getResourceType()); assertEquals(ResourceProviderEvent.Type.Create, lastEvent.getType()); assertEquals(request, lastEvent.getRequest()); assertNull(lastEvent.getPredicate()); verify(dao, entity, blueprintFactory, securityFactory, metaInfo, request, managementController); }
@Override public RequestStatus createResources(Request request) throws SystemException, UnsupportedPropertyException, ResourceAlreadyExistsException, NoSuchParentResourceException { for (Map<String, Object> properties : request.getProperties()) { try { createResources(getCreateCommand(properties, request.getRequestInfoProperties())); }catch(IllegalArgumentException e) { LOG.error("Exception while creating blueprint", e); throw e; } } notifyCreate(Resource.Type.Blueprint, request); return getRequestStatus(null); }
BlueprintResourceProvider extends AbstractControllerResourceProvider { @Override public RequestStatus createResources(Request request) throws SystemException, UnsupportedPropertyException, ResourceAlreadyExistsException, NoSuchParentResourceException { for (Map<String, Object> properties : request.getProperties()) { try { createResources(getCreateCommand(properties, request.getRequestInfoProperties())); }catch(IllegalArgumentException e) { LOG.error("Exception while creating blueprint", e); throw e; } } notifyCreate(Resource.Type.Blueprint, request); return getRequestStatus(null); } }
BlueprintResourceProvider extends AbstractControllerResourceProvider { @Override public RequestStatus createResources(Request request) throws SystemException, UnsupportedPropertyException, ResourceAlreadyExistsException, NoSuchParentResourceException { for (Map<String, Object> properties : request.getProperties()) { try { createResources(getCreateCommand(properties, request.getRequestInfoProperties())); }catch(IllegalArgumentException e) { LOG.error("Exception while creating blueprint", e); throw e; } } notifyCreate(Resource.Type.Blueprint, request); return getRequestStatus(null); } BlueprintResourceProvider(Set<String> propertyIds,
                            Map<Resource.Type, String> keyPropertyIds,
                            AmbariManagementController controller); }
BlueprintResourceProvider extends AbstractControllerResourceProvider { @Override public RequestStatus createResources(Request request) throws SystemException, UnsupportedPropertyException, ResourceAlreadyExistsException, NoSuchParentResourceException { for (Map<String, Object> properties : request.getProperties()) { try { createResources(getCreateCommand(properties, request.getRequestInfoProperties())); }catch(IllegalArgumentException e) { LOG.error("Exception while creating blueprint", e); throw e; } } notifyCreate(Resource.Type.Blueprint, request); return getRequestStatus(null); } BlueprintResourceProvider(Set<String> propertyIds,
                            Map<Resource.Type, String> keyPropertyIds,
                            AmbariManagementController controller); static void init(BlueprintFactory factory, BlueprintDAO dao, SecurityConfigurationFactory
    securityFactory, Gson gson, AmbariMetaInfo metaInfo); @Override RequestStatus createResources(Request request); @Override //todo: continue to use dao/entity directly or use blueprint factory? Set<Resource> getResources(Request request, Predicate predicate); @Override RequestStatus updateResources(Request request, Predicate predicate); @Override RequestStatus deleteResources(Request request, Predicate predicate); static List<Map<String, Object>> populateSettingList(
          Collection<? extends BlueprintSettingEntity> settings); }
BlueprintResourceProvider extends AbstractControllerResourceProvider { @Override public RequestStatus createResources(Request request) throws SystemException, UnsupportedPropertyException, ResourceAlreadyExistsException, NoSuchParentResourceException { for (Map<String, Object> properties : request.getProperties()) { try { createResources(getCreateCommand(properties, request.getRequestInfoProperties())); }catch(IllegalArgumentException e) { LOG.error("Exception while creating blueprint", e); throw e; } } notifyCreate(Resource.Type.Blueprint, request); return getRequestStatus(null); } BlueprintResourceProvider(Set<String> propertyIds,
                            Map<Resource.Type, String> keyPropertyIds,
                            AmbariManagementController controller); static void init(BlueprintFactory factory, BlueprintDAO dao, SecurityConfigurationFactory
    securityFactory, Gson gson, AmbariMetaInfo metaInfo); @Override RequestStatus createResources(Request request); @Override //todo: continue to use dao/entity directly or use blueprint factory? Set<Resource> getResources(Request request, Predicate predicate); @Override RequestStatus updateResources(Request request, Predicate predicate); @Override RequestStatus deleteResources(Request request, Predicate predicate); static List<Map<String, Object>> populateSettingList(
          Collection<? extends BlueprintSettingEntity> settings); static final String BLUEPRINT_NAME_PROPERTY_ID; static final String STACK_NAME_PROPERTY_ID; static final String STACK_VERSION_PROPERTY_ID; static final String BLUEPRINT_SECURITY_PROPERTY_ID; static final String BLUEPRINTS_PROPERTY_ID; static final String HOST_GROUP_PROPERTY_ID; static final String HOST_GROUP_NAME_PROPERTY_ID; static final String HOST_GROUP_CARDINALITY_PROPERTY_ID; static final String COMPONENT_PROPERTY_ID; static final String COMPONENT_NAME_PROPERTY_ID; static final String COMPONENT_PROVISION_ACTION_PROPERTY_ID; static final String CONFIGURATION_PROPERTY_ID; static final String SETTING_PROPERTY_ID; static final String PROPERTIES_PROPERTY_ID; static final String PROPERTIES_ATTRIBUTES_PROPERTY_ID; static final String SCHEMA_IS_NOT_SUPPORTED_MESSAGE; static final String REQUEST_BODY_EMPTY_ERROR_MESSAGE; static final String CONFIGURATION_LIST_CHECK_ERROR_MESSAGE; static final String CONFIGURATION_MAP_CHECK_ERROR_MESSAGE; static final String CONFIGURATION_MAP_SIZE_CHECK_ERROR_MESSAGE; }