/** * Adds security groups to the master node of an existing cluster <p>Requires WRITE permission on namespace</p> * * @param request the information needed to add security groups to master node of the EMR cluster. * * @return the created EMR master groups. */ @RequestMapping(value = "/emrMasterSecurityGroups", method = RequestMethod.POST, consumes = {"application/xml", "application/json"}) @Secured(SecurityFunctions.FN_EMR_MASTER_SECURITY_GROUPS_POST) public EmrMasterSecurityGroup addGroupsToEmrClusterMaster(@RequestBody EmrMasterSecurityGroupAddRequest request) throws Exception { return emrService.addSecurityGroupsToClusterMaster(request); }
/** * Adds security groups to the master node of an existing cluster <p>Requires WRITE permission on namespace</p> * * @param request the information needed to add security groups to master node of the EMR cluster. * * @return the created EMR master groups. */ @RequestMapping(value = "/emrMasterSecurityGroups", method = RequestMethod.POST, consumes = {"application/xml", "application/json"}) @Secured(SecurityFunctions.FN_EMR_MASTER_SECURITY_GROUPS_POST) public EmrMasterSecurityGroup addGroupsToEmrClusterMaster(@RequestBody EmrMasterSecurityGroupAddRequest request) throws Exception { return emrService.addSecurityGroupsToClusterMaster(request); }
/** * This method tests the scenario where cluster does not exist */ @Test(expected = IllegalArgumentException.class) public void testAddSecurityGroupClusterDoesNotExist() throws Exception { // Create the namespace entity. NamespaceEntity namespaceEntity = namespaceDaoTestHelper.createNamespaceEntity(NAMESPACE); emrClusterDefinitionDaoTestHelper.createEmrClusterDefinitionEntity(namespaceEntity, EMR_CLUSTER_DEFINITION_NAME, IOUtils.toString(resourceLoader.getResource(EMR_CLUSTER_DEFINITION_XML_FILE_WITH_CLASSPATH).getInputStream())); // Create the Add security group. EmrMasterSecurityGroupAddRequest emrMasterSecurityGroupAddRequest = getNewEmrAddSecurityGroupMasterRequest("DOES_NOT_EXIST"); emrService.addSecurityGroupsToClusterMaster(emrMasterSecurityGroupAddRequest); }
@Test public void testAddGroupsToEmrClusterMaster() throws Exception { // Create an add EMR master security group request. EmrMasterSecurityGroupAddRequest emrMasterSecurityGroupAddRequest = new EmrMasterSecurityGroupAddRequest(NAMESPACE, EMR_CLUSTER_DEFINITION_NAME, EMR_CLUSTER_NAME, Arrays.asList(AWS_SECURITY_GROUP_ID), EMR_CLUSTER_ID, AWS_ACCOUNT_ID); // Create an EMR master security group. EmrMasterSecurityGroup emrMasterSecurityGroup = new EmrMasterSecurityGroup(NAMESPACE, EMR_CLUSTER_DEFINITION_NAME, EMR_CLUSTER_NAME, Arrays.asList(AWS_SECURITY_GROUP_ID), EMR_CLUSTER_ID); // Mock the external calls. when(emrService.addSecurityGroupsToClusterMaster(emrMasterSecurityGroupAddRequest)).thenReturn(emrMasterSecurityGroup); // Call the method under test. EmrMasterSecurityGroup result = emrRestController.addGroupsToEmrClusterMaster(emrMasterSecurityGroupAddRequest); // Verify the external calls. verify(emrService).addSecurityGroupsToClusterMaster(emrMasterSecurityGroupAddRequest); verifyNoMoreInteractionsHelper(); // Validate the results. assertEquals(emrMasterSecurityGroup, result); }
@Override public void executeImpl(DelegateExecution execution) throws Exception { // Create the request. EmrMasterSecurityGroupAddRequest request = new EmrMasterSecurityGroupAddRequest(); request.setNamespace(activitiHelper.getExpressionVariableAsString(namespace, execution)); request.setEmrClusterDefinitionName(activitiHelper.getExpressionVariableAsString(emrClusterDefinitionName, execution)); request.setEmrClusterName(activitiHelper.getExpressionVariableAsString(emrClusterName, execution)); request.setAccountId(activitiHelper.getExpressionVariableAsString(accountId, execution)); String groupIdStr = activitiHelper.getExpressionVariableAsString(securityGroupIds, execution); if (StringUtils.isBlank(groupIdStr)) { throw new IllegalArgumentException("At least one security group must be specified."); } request.setSecurityGroupIds(daoHelper.splitStringWithDefaultDelimiter(groupIdStr.trim())); // Create the cluster in a new transaction. EmrMasterSecurityGroup emrMasterSecurityGroup = emrService.addSecurityGroupsToClusterMaster(request); // Set workflow variables based on the security groups. setTaskWorkflowVariable(execution, VARIABLE_EMR_MASTER_SECURITY_GROUPS, herdStringHelper.buildStringWithDefaultDelimiter(emrMasterSecurityGroup.getSecurityGroupIds())); } }
@Override public void executeImpl(DelegateExecution execution) throws Exception { // Create the request. EmrMasterSecurityGroupAddRequest request = new EmrMasterSecurityGroupAddRequest(); request.setNamespace(activitiHelper.getExpressionVariableAsString(namespace, execution)); request.setEmrClusterDefinitionName(activitiHelper.getExpressionVariableAsString(emrClusterDefinitionName, execution)); request.setEmrClusterName(activitiHelper.getExpressionVariableAsString(emrClusterName, execution)); request.setAccountId(activitiHelper.getExpressionVariableAsString(accountId, execution)); String groupIdStr = activitiHelper.getExpressionVariableAsString(securityGroupIds, execution); if (StringUtils.isBlank(groupIdStr)) { throw new IllegalArgumentException("At least one security group must be specified."); } request.setSecurityGroupIds(daoHelper.splitStringWithDefaultDelimiter(groupIdStr.trim())); // Create the cluster in a new transaction. EmrMasterSecurityGroup emrMasterSecurityGroup = emrService.addSecurityGroupsToClusterMaster(request); // Set workflow variables based on the security groups. setTaskWorkflowVariable(execution, VARIABLE_EMR_MASTER_SECURITY_GROUPS, herdStringHelper.buildStringWithDefaultDelimiter(emrMasterSecurityGroup.getSecurityGroupIds())); } }
/** * This method tests the scenario where AmazonServiceException is thrown */ @Test(expected = AmazonServiceException.class) public void testAddSecurityGroupAmazonException() throws Exception { // Create the namespace entity. NamespaceEntity namespaceEntity = namespaceDaoTestHelper.createNamespaceEntity(NAMESPACE); emrClusterDefinitionDaoTestHelper.createEmrClusterDefinitionEntity(namespaceEntity, EMR_CLUSTER_DEFINITION_NAME, IOUtils.toString(resourceLoader.getResource(EMR_CLUSTER_DEFINITION_XML_FILE_WITH_CLASSPATH).getInputStream())); EmrClusterCreateRequest request = getNewEmrClusterCreateRequest(); emrService.createCluster(request); // Create the Add security group. EmrMasterSecurityGroupAddRequest emrMasterSecurityGroupAddRequest = getNewEmrAddSecurityGroupMasterRequest(request.getEmrClusterName()); emrMasterSecurityGroupAddRequest.getSecurityGroupIds().clear(); emrMasterSecurityGroupAddRequest.getSecurityGroupIds().add(MockAwsOperationsHelper.AMAZON_SERVICE_EXCEPTION); emrService.addSecurityGroupsToClusterMaster(emrMasterSecurityGroupAddRequest); }
/** * This method tests the scenario where EC2 instances have not been provisioned yet */ @Test(expected = IllegalArgumentException.class) public void testAddSecurityGroupEC2InstanceNotProvisioned() throws Exception { // Create the namespace entity. NamespaceEntity namespaceEntity = namespaceDaoTestHelper.createNamespaceEntity(NAMESPACE); emrClusterDefinitionDaoTestHelper.createEmrClusterDefinitionEntity(namespaceEntity, EMR_CLUSTER_DEFINITION_NAME, IOUtils.toString(resourceLoader.getResource(EMR_CLUSTER_DEFINITION_XML_FILE_WITH_CLASSPATH).getInputStream())); EmrClusterCreateRequest request = getNewEmrClusterCreateRequest(); request.setEmrClusterName(MockEmrOperationsImpl.MOCK_CLUSTER_NOT_PROVISIONED_NAME); emrService.createCluster(request); // Create the Add security group. EmrMasterSecurityGroupAddRequest emrMasterSecurityGroupAddRequest = getNewEmrAddSecurityGroupMasterRequest(request.getEmrClusterName()); emrService.addSecurityGroupsToClusterMaster(emrMasterSecurityGroupAddRequest); }
/** * This method tests the scenario when at least one security group must be specified */ @Test(expected = IllegalArgumentException.class) public void testAddSecurityGroupNoneSpecified() throws Exception { // Create the namespace entity. NamespaceEntity namespaceEntity = namespaceDaoTestHelper.createNamespaceEntity(NAMESPACE); emrClusterDefinitionDaoTestHelper.createEmrClusterDefinitionEntity(namespaceEntity, EMR_CLUSTER_DEFINITION_NAME, IOUtils.toString(resourceLoader.getResource(EMR_CLUSTER_DEFINITION_XML_FILE_WITH_CLASSPATH).getInputStream())); EmrClusterCreateRequest request = getNewEmrClusterCreateRequest(); emrService.createCluster(request); // Create the Add security group. EmrMasterSecurityGroupAddRequest emrMasterSecurityGroupAddRequest = getNewEmrAddSecurityGroupMasterRequest(request.getEmrClusterName()); emrMasterSecurityGroupAddRequest.setSecurityGroupIds(null); emrService.addSecurityGroupsToClusterMaster(emrMasterSecurityGroupAddRequest); }
/** * This method tests the happy path scenario for adding security groups */ @Test public void testAddSecurityGroup() throws Exception { // Create the namespace entity. NamespaceEntity namespaceEntity = namespaceDaoTestHelper.createNamespaceEntity(NAMESPACE); emrClusterDefinitionDaoTestHelper.createEmrClusterDefinitionEntity(namespaceEntity, EMR_CLUSTER_DEFINITION_NAME, IOUtils.toString(resourceLoader.getResource(EMR_CLUSTER_DEFINITION_XML_FILE_WITH_CLASSPATH).getInputStream())); EmrClusterCreateRequest request = getNewEmrClusterCreateRequest(); emrService.createCluster(request); // Create the Add security group. EmrMasterSecurityGroupAddRequest emrMasterSecurityGroupAddRequest = getNewEmrAddSecurityGroupMasterRequest(request.getEmrClusterName()); EmrMasterSecurityGroup emrMasterSecurityGroup = emrService.addSecurityGroupsToClusterMaster(emrMasterSecurityGroupAddRequest); // Validate the returned object against the input. assertNotNull(emrMasterSecurityGroup); assertTrue(emrMasterSecurityGroup.getNamespace().equals(request.getNamespace())); assertTrue(emrMasterSecurityGroup.getEmrClusterDefinitionName().equals(request.getEmrClusterDefinitionName())); assertTrue(emrMasterSecurityGroup.getEmrClusterName().equals(request.getEmrClusterName())); }
/** * This method tests the happy path scenario for adding security groups. */ @Test public void testAddSecurityGroup() throws Exception { // Create the namespace entity. NamespaceEntity namespaceEntity = namespaceDaoTestHelper.createNamespaceEntity(NAMESPACE); // Create a trusting AWS account. trustingAccountDaoTestHelper.createTrustingAccountEntity(AWS_ACCOUNT_ID, AWS_ROLE_ARN); emrClusterDefinitionDaoTestHelper.createEmrClusterDefinitionEntity(namespaceEntity, EMR_CLUSTER_DEFINITION_NAME, IOUtils.toString(resourceLoader.getResource(EMR_CLUSTER_DEFINITION_XML_FILE_WITH_CLASSPATH).getInputStream())); EmrClusterCreateRequest request = getNewEmrClusterCreateRequestWithAccountId(); emrService.createCluster(request); // Create the Add security group. EmrMasterSecurityGroupAddRequest emrMasterSecurityGroupAddRequest = getNewEmrAddSecurityGroupMasterRequestWithAccountId(request.getEmrClusterName()); EmrMasterSecurityGroup emrMasterSecurityGroup = emrService.addSecurityGroupsToClusterMaster(emrMasterSecurityGroupAddRequest); // Validate the returned object against the input. assertNotNull(emrMasterSecurityGroup); assertTrue(emrMasterSecurityGroup.getNamespace().equals(request.getNamespace())); assertTrue(emrMasterSecurityGroup.getEmrClusterDefinitionName().equals(request.getEmrClusterDefinitionName())); assertTrue(emrMasterSecurityGroup.getEmrClusterName().equals(request.getEmrClusterName())); }
emrServiceImpl.addSecurityGroupsToClusterMaster(emrMasterSecurityGroupAddRequest); fail("Should throw a ObjectNotFoundException.");