/** * This method tests the service IAM role */ @Test public void testCreateEmrClusterServiceRole() throws Exception { // Create the namespace entity. NamespaceEntity namespaceEntity = namespaceDaoTestHelper.createNamespaceEntity(NAMESPACE); String configXml = IOUtils.toString(resourceLoader.getResource(EMR_CLUSTER_DEFINITION_XML_FILE_WITH_CLASSPATH).getInputStream()); EmrClusterDefinition emrClusterDefinition = xmlHelper.unmarshallXmlToObject(EmrClusterDefinition.class, configXml); emrClusterDefinition.setServiceIamRole(emrClusterDefinition.getEc2NodeIamProfileName()); configXml = xmlHelper.objectToXml(emrClusterDefinition); emrClusterDefinitionDaoTestHelper.createEmrClusterDefinitionEntity(namespaceEntity, EMR_CLUSTER_DEFINITION_NAME, configXml); // Create a new EMR cluster create request. EmrClusterCreateRequest request = getNewEmrClusterCreateRequest(); emrService.createCluster(request); }
if (StringUtils.isNotBlank(emrClusterDefinition.getEc2NodeIamProfileName())) runJobFlowRequest.setJobFlowRole(emrClusterDefinition.getEc2NodeIamProfileName());
/** * The implementation of the EMR pre cluster steps. * * @param emrClusterAlternateKeyDto the EMR cluster alternate key data transfer object * @param request the EMR cluster create request * * @return the EMR cluster definition * @throws Exception Exception when the original EMR cluster definition XML is malformed */ EmrClusterDefinition emrPreCreateClusterStepsImpl(EmrClusterAlternateKeyDto emrClusterAlternateKeyDto, EmrClusterCreateRequest request) throws Exception { // Get the EMR cluster definition and ensure it exists. EmrClusterDefinitionEntity emrClusterDefinitionEntity = emrClusterDefinitionDaoHelper.getEmrClusterDefinitionEntity( new EmrClusterDefinitionKey(emrClusterAlternateKeyDto.getNamespace(), emrClusterAlternateKeyDto.getEmrClusterDefinitionName())); // Replace all S3 managed location variables in xml String toReplace = getS3ManagedReplaceString(); String replacedConfigXml = emrClusterDefinitionEntity.getConfiguration().replaceAll(toReplace, emrHelper.getS3StagingLocation()); // Unmarshal definition xml into JAXB object. EmrClusterDefinition emrClusterDefinition = xmlHelper.unmarshallXmlToObject(EmrClusterDefinition.class, replacedConfigXml); // Perform override if override is set. overrideEmrClusterDefinition(emrClusterDefinition, request.getEmrClusterDefinitionOverride()); // Perform the EMR cluster definition configuration validation. emrClusterDefinitionHelper.validateEmrClusterDefinitionConfiguration(emrClusterDefinition); // Check permissions. namespaceIamRoleAuthorizationHelper.checkPermissions(emrClusterDefinitionEntity.getNamespace(), emrClusterDefinition.getServiceIamRole(), emrClusterDefinition.getEc2NodeIamProfileName()); return emrClusterDefinition; }
if (StringUtils.isNotBlank(emrClusterDefinition.getEc2NodeIamProfileName())) runJobFlowRequest.setJobFlowRole(emrClusterDefinition.getEc2NodeIamProfileName());
/** * The implementation of the EMR pre cluster steps. * * @param emrClusterAlternateKeyDto the EMR cluster alternate key data transfer object * @param request the EMR cluster create request * * @return the EMR cluster definition * @throws Exception Exception when the original EMR cluster definition XML is malformed */ EmrClusterDefinition emrPreCreateClusterStepsImpl(EmrClusterAlternateKeyDto emrClusterAlternateKeyDto, EmrClusterCreateRequest request) throws Exception { // Get the EMR cluster definition and ensure it exists. EmrClusterDefinitionEntity emrClusterDefinitionEntity = emrClusterDefinitionDaoHelper.getEmrClusterDefinitionEntity( new EmrClusterDefinitionKey(emrClusterAlternateKeyDto.getNamespace(), emrClusterAlternateKeyDto.getEmrClusterDefinitionName())); // Replace all S3 managed location variables in xml String toReplace = getS3ManagedReplaceString(); String replacedConfigXml = emrClusterDefinitionEntity.getConfiguration().replaceAll(toReplace, emrHelper.getS3StagingLocation()); // Unmarshal definition xml into JAXB object. EmrClusterDefinition emrClusterDefinition = xmlHelper.unmarshallXmlToObject(EmrClusterDefinition.class, replacedConfigXml); // Perform override if override is set. overrideEmrClusterDefinition(emrClusterDefinition, request.getEmrClusterDefinitionOverride()); // Perform the EMR cluster definition configuration validation. emrClusterDefinitionHelper.validateEmrClusterDefinitionConfiguration(emrClusterDefinition); // Check permissions. namespaceIamRoleAuthorizationHelper.checkPermissions(emrClusterDefinitionEntity.getNamespace(), emrClusterDefinition.getServiceIamRole(), emrClusterDefinition.getEc2NodeIamProfileName()); return emrClusterDefinition; }
@NamespacePermission(fields = "#emrClusterDefinitionKey?.namespace", permissions = NamespacePermissionEnum.WRITE) @Override public EmrClusterDefinitionInformation updateEmrClusterDefinition(EmrClusterDefinitionKey emrClusterDefinitionKey, EmrClusterDefinitionUpdateRequest request) throws Exception { // Perform validate and trim of the EMR cluster definition key. emrClusterDefinitionHelper.validateEmrClusterDefinitionKey(emrClusterDefinitionKey); // Validate the EMR cluster definition configuration. emrClusterDefinitionHelper.validateEmrClusterDefinitionConfiguration(request.getEmrClusterDefinition()); // Retrieve and ensure that a EMR cluster definition already exists with the specified name. EmrClusterDefinitionEntity emrClusterDefinitionEntity = emrClusterDefinitionDaoHelper.getEmrClusterDefinitionEntity(emrClusterDefinitionKey); namespaceIamRoleAuthorizationHelper.checkPermissions(emrClusterDefinitionEntity.getNamespace(), request.getEmrClusterDefinition().getServiceIamRole(), request.getEmrClusterDefinition().getEc2NodeIamProfileName()); // Log the existing EMR cluster definition before the update. LOGGER.info("Logging EMR cluster definition before the update. emrClusterDefinition={}", xmlHelper.objectToXml(createEmrClusterDefinitionFromEntity(emrClusterDefinitionEntity), true)); // Convert EMR cluster configuration to the XML representation. String emrClusterConfiguration = xmlHelper.objectToXml(request.getEmrClusterDefinition()); // Update the EMR cluster definition entity. emrClusterDefinitionEntity.setConfiguration(emrClusterConfiguration); // Persist and refresh the entity. emrClusterDefinitionEntity = emrClusterDefinitionDao.saveAndRefresh(emrClusterDefinitionEntity); // Create and return the EMR cluster definition object from the persisted entity. return createEmrClusterDefinitionFromEntity(emrClusterDefinitionEntity); }
verify(emrClusterDefinitionHelper).validateEmrClusterDefinitionConfiguration(emrClusterDefinition); verify(namespaceIamRoleAuthorizationHelper).checkPermissions(emrClusterDefinitionEntity.getNamespace(), emrClusterDefinition.getServiceIamRole(), emrClusterDefinition.getEc2NodeIamProfileName()); verifyNoMoreInteractionsHelper();
@NamespacePermission(fields = "#emrClusterDefinitionKey?.namespace", permissions = NamespacePermissionEnum.WRITE) @Override public EmrClusterDefinitionInformation updateEmrClusterDefinition(EmrClusterDefinitionKey emrClusterDefinitionKey, EmrClusterDefinitionUpdateRequest request) throws Exception { // Perform validate and trim of the EMR cluster definition key. emrClusterDefinitionHelper.validateEmrClusterDefinitionKey(emrClusterDefinitionKey); // Validate the EMR cluster definition configuration. emrClusterDefinitionHelper.validateEmrClusterDefinitionConfiguration(request.getEmrClusterDefinition()); // Retrieve and ensure that a EMR cluster definition already exists with the specified name. EmrClusterDefinitionEntity emrClusterDefinitionEntity = emrClusterDefinitionDaoHelper.getEmrClusterDefinitionEntity(emrClusterDefinitionKey); namespaceIamRoleAuthorizationHelper.checkPermissions(emrClusterDefinitionEntity.getNamespace(), request.getEmrClusterDefinition().getServiceIamRole(), request.getEmrClusterDefinition().getEc2NodeIamProfileName()); // Log the existing EMR cluster definition before the update. LOGGER.info("Logging EMR cluster definition before the update. emrClusterDefinition={}", xmlHelper.objectToXml(createEmrClusterDefinitionFromEntity(emrClusterDefinitionEntity), true)); // Convert EMR cluster configuration to the XML representation. String emrClusterConfiguration = xmlHelper.objectToXml(request.getEmrClusterDefinition()); // Update the EMR cluster definition entity. emrClusterDefinitionEntity.setConfiguration(emrClusterConfiguration); // Persist and refresh the entity. emrClusterDefinitionEntity = emrClusterDefinitionDao.saveAndRefresh(emrClusterDefinitionEntity); // Create and return the EMR cluster definition object from the persisted entity. return createEmrClusterDefinitionFromEntity(emrClusterDefinitionEntity); }
/** * This method tests the blank values for various parameters */ @Test public void testCreateEmrClusterBlankParams() throws Exception { // Create the namespace entity. NamespaceEntity namespaceEntity = namespaceDaoTestHelper.createNamespaceEntity(NAMESPACE); String configXml = IOUtils.toString(resourceLoader.getResource(EMR_CLUSTER_DEFINITION_XML_FILE_WITH_CLASSPATH).getInputStream()); EmrClusterDefinition emrClusterDefinition = xmlHelper.unmarshallXmlToObject(EmrClusterDefinition.class, configXml); List<ScriptDefinition> scriptDefinitions = emrClusterDefinition.getCustomBootstrapActionAll(); scriptDefinitions.get(0).setScriptArguments(null); emrClusterDefinition.setCustomBootstrapActionAll(scriptDefinitions); scriptDefinitions = emrClusterDefinition.getCustomBootstrapActionMaster(); scriptDefinitions.get(0).setScriptArguments(null); emrClusterDefinition.setCustomBootstrapActionMaster(scriptDefinitions); emrClusterDefinition.setVisibleToAll(null); emrClusterDefinition.setServiceIamRole(null); emrClusterDefinition.setAmiVersion(null); emrClusterDefinition.setServiceIamRole(emrClusterDefinition.getEc2NodeIamProfileName()); emrClusterDefinition.setScaleDownBehavior(null); emrClusterDefinition.setKerberosAttributes(null); configXml = xmlHelper.objectToXml(emrClusterDefinition); emrClusterDefinitionDaoTestHelper.createEmrClusterDefinitionEntity(namespaceEntity, EMR_CLUSTER_DEFINITION_NAME, configXml); // Create a new EMR cluster create request EmrClusterCreateRequest request = getNewEmrClusterCreateRequest(); emrService.createCluster(request); }
@NamespacePermission(fields = "#request?.emrClusterDefinitionKey?.namespace", permissions = NamespacePermissionEnum.WRITE) @Override public EmrClusterDefinitionInformation createEmrClusterDefinition(EmrClusterDefinitionCreateRequest request) throws Exception { // Perform validate and trim of the EMR cluster definition key. emrClusterDefinitionHelper.validateEmrClusterDefinitionKey(request.getEmrClusterDefinitionKey()); // Validate the EMR cluster definition configuration. emrClusterDefinitionHelper.validateEmrClusterDefinitionConfiguration(request.getEmrClusterDefinition()); // Get the namespace and ensure it exists. NamespaceEntity namespaceEntity = namespaceDaoHelper.getNamespaceEntity(request.getEmrClusterDefinitionKey().getNamespace()); namespaceIamRoleAuthorizationHelper.checkPermissions(namespaceEntity, request.getEmrClusterDefinition().getServiceIamRole(), request.getEmrClusterDefinition().getEc2NodeIamProfileName()); // Ensure a EMR cluster definition with the specified name doesn't already exist. EmrClusterDefinitionEntity emrClusterDefinitionEntity = emrClusterDefinitionDao .getEmrClusterDefinitionByNamespaceAndName(namespaceEntity, request.getEmrClusterDefinitionKey().getEmrClusterDefinitionName()); if (emrClusterDefinitionEntity != null) { throw new AlreadyExistsException(String .format("Unable to create EMR cluster definition with name \"%s\" for namespace \"%s\" because it already exists.", request.getEmrClusterDefinitionKey().getEmrClusterDefinitionName(), request.getEmrClusterDefinitionKey().getNamespace())); } // Create a EMR cluster definition entity from the request information. emrClusterDefinitionEntity = createEmrClusterDefinitionEntity(namespaceEntity, request); // Persist the new entity. emrClusterDefinitionEntity = emrClusterDefinitionDao.saveAndRefresh(emrClusterDefinitionEntity); // Create and return the EMR cluster definition object from the persisted entity. return createEmrClusterDefinitionFromEntity(emrClusterDefinitionEntity); }
@NamespacePermission(fields = "#request?.emrClusterDefinitionKey?.namespace", permissions = NamespacePermissionEnum.WRITE) @Override public EmrClusterDefinitionInformation createEmrClusterDefinition(EmrClusterDefinitionCreateRequest request) throws Exception { // Perform validate and trim of the EMR cluster definition key. emrClusterDefinitionHelper.validateEmrClusterDefinitionKey(request.getEmrClusterDefinitionKey()); // Validate the EMR cluster definition configuration. emrClusterDefinitionHelper.validateEmrClusterDefinitionConfiguration(request.getEmrClusterDefinition()); // Get the namespace and ensure it exists. NamespaceEntity namespaceEntity = namespaceDaoHelper.getNamespaceEntity(request.getEmrClusterDefinitionKey().getNamespace()); namespaceIamRoleAuthorizationHelper.checkPermissions(namespaceEntity, request.getEmrClusterDefinition().getServiceIamRole(), request.getEmrClusterDefinition().getEc2NodeIamProfileName()); // Ensure a EMR cluster definition with the specified name doesn't already exist. EmrClusterDefinitionEntity emrClusterDefinitionEntity = emrClusterDefinitionDao .getEmrClusterDefinitionByNamespaceAndName(namespaceEntity, request.getEmrClusterDefinitionKey().getEmrClusterDefinitionName()); if (emrClusterDefinitionEntity != null) { throw new AlreadyExistsException(String .format("Unable to create EMR cluster definition with name \"%s\" for namespace \"%s\" because it already exists.", request.getEmrClusterDefinitionKey().getEmrClusterDefinitionName(), request.getEmrClusterDefinitionKey().getNamespace())); } // Create a EMR cluster definition entity from the request information. emrClusterDefinitionEntity = createEmrClusterDefinitionEntity(namespaceEntity, request); // Persist the new entity. emrClusterDefinitionEntity = emrClusterDefinitionDao.saveAndRefresh(emrClusterDefinitionEntity); // Create and return the EMR cluster definition object from the persisted entity. return createEmrClusterDefinitionFromEntity(emrClusterDefinitionEntity); }
expectedEmrClusterDefinition.setAmiVersion(emrClusterDefinitionOverride.getAmiVersion()); emrClusterDefinitionOverride.setEc2NodeIamProfileName("test" + Math.random()); expectedEmrClusterDefinition.setEc2NodeIamProfileName(emrClusterDefinitionOverride.getEc2NodeIamProfileName()); emrClusterDefinitionOverride.setEncryptionEnabled(!expectedEmrClusterDefinition.isEncryptionEnabled()); expectedEmrClusterDefinition.setEncryptionEnabled(emrClusterDefinitionOverride.isEncryptionEnabled());
if (emrClusterDefinitionOverride.getEc2NodeIamProfileName() != null) emrClusterDefinition.setEc2NodeIamProfileName(emrClusterDefinitionOverride.getEc2NodeIamProfileName());
if (emrClusterDefinitionOverride.getEc2NodeIamProfileName() != null) emrClusterDefinition.setEc2NodeIamProfileName(emrClusterDefinitionOverride.getEc2NodeIamProfileName());
theEc2NodeIamProfileName = this.getEc2NodeIamProfileName(); strategy.appendField(locator, this, "ec2NodeIamProfileName", buffer, theEc2NodeIamProfileName, (this.ec2NodeIamProfileName!= null));
theEc2NodeIamProfileName = this.getEc2NodeIamProfileName(); strategy.appendField(locator, this, "ec2NodeIamProfileName", buffer, theEc2NodeIamProfileName, (this.ec2NodeIamProfileName!= null));
theEc2NodeIamProfileName = this.getEc2NodeIamProfileName(); strategy.appendField(locator, this, "ec2NodeIamProfileName", buffer, theEc2NodeIamProfileName, (this.ec2NodeIamProfileName!= null));
theEc2NodeIamProfileName = this.getEc2NodeIamProfileName(); currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "ec2NodeIamProfileName", theEc2NodeIamProfileName), currentHashCode, theEc2NodeIamProfileName, (this.ec2NodeIamProfileName!= null));
theEc2NodeIamProfileName = this.getEc2NodeIamProfileName(); currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "ec2NodeIamProfileName", theEc2NodeIamProfileName), currentHashCode, theEc2NodeIamProfileName, (this.ec2NodeIamProfileName!= null));
theEc2NodeIamProfileName = this.getEc2NodeIamProfileName(); currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "ec2NodeIamProfileName", theEc2NodeIamProfileName), currentHashCode, theEc2NodeIamProfileName, (this.ec2NodeIamProfileName!= null));