/** * Gets an existing EMR cluster details. <p>Requires READ permission on namespace</p> * * @param namespace the namespace * @param emrClusterDefinitionName the EMR cluster definition name * @param emrClusterName the EMR cluster name * @param emrClusterId the cluster id of the cluster to get details * @param emrStepId the step id of the step to get details * @param verbose parameter for whether to return detailed information * @param accountId the account Id * @param retrieveInstanceFleets parameter for whether to retrieve instance fleets * * @return the EMR Cluster object with details. * @throws Exception if there was an error getting the EMR cluster. */ @RequestMapping(value = "/emrClusters/namespaces/{namespace}/emrClusterDefinitionNames/{emrClusterDefinitionName}/emrClusterNames/{emrClusterName}", method = RequestMethod.GET) @Secured(SecurityFunctions.FN_EMR_CLUSTERS_GET) public EmrCluster getEmrCluster(@PathVariable("namespace") String namespace, @PathVariable("emrClusterDefinitionName") String emrClusterDefinitionName, @PathVariable("emrClusterName") String emrClusterName, @RequestParam(value = "emrClusterId", required = false) String emrClusterId, @RequestParam(value = "emrStepId", required = false) String emrStepId, @RequestParam(value = "verbose", required = false, defaultValue = "false") Boolean verbose, @RequestParam(value = "accountId", required = false) String accountId, @RequestParam(value = "retrieveInstanceFleets", required = false, defaultValue = "false") Boolean retrieveInstanceFleets) throws Exception { EmrClusterAlternateKeyDto alternateKey = EmrClusterAlternateKeyDto.builder().withNamespace(namespace).withEmrClusterDefinitionName(emrClusterDefinitionName) .withEmrClusterName(emrClusterName).build(); return emrService.getCluster(alternateKey, emrClusterId, emrStepId, verbose, accountId, retrieveInstanceFleets); }
/** * Gets an existing EMR cluster details. <p>Requires READ permission on namespace</p> * * @param namespace the namespace * @param emrClusterDefinitionName the EMR cluster definition name * @param emrClusterName the EMR cluster name * @param emrClusterId the cluster id of the cluster to get details * @param emrStepId the step id of the step to get details * @param verbose parameter for whether to return detailed information * @param accountId the account Id * @param retrieveInstanceFleets parameter for whether to retrieve instance fleets * * @return the EMR Cluster object with details. * @throws Exception if there was an error getting the EMR cluster. */ @RequestMapping(value = "/emrClusters/namespaces/{namespace}/emrClusterDefinitionNames/{emrClusterDefinitionName}/emrClusterNames/{emrClusterName}", method = RequestMethod.GET) @Secured(SecurityFunctions.FN_EMR_CLUSTERS_GET) public EmrCluster getEmrCluster(@PathVariable("namespace") String namespace, @PathVariable("emrClusterDefinitionName") String emrClusterDefinitionName, @PathVariable("emrClusterName") String emrClusterName, @RequestParam(value = "emrClusterId", required = false) String emrClusterId, @RequestParam(value = "emrStepId", required = false) String emrStepId, @RequestParam(value = "verbose", required = false, defaultValue = "false") Boolean verbose, @RequestParam(value = "accountId", required = false) String accountId, @RequestParam(value = "retrieveInstanceFleets", required = false, defaultValue = "false") Boolean retrieveInstanceFleets) throws Exception { EmrClusterAlternateKeyDto alternateKey = EmrClusterAlternateKeyDto.builder().withNamespace(namespace).withEmrClusterDefinitionName(emrClusterDefinitionName) .withEmrClusterName(emrClusterName).build(); return emrService.getCluster(alternateKey, emrClusterId, emrStepId, verbose, accountId, retrieveInstanceFleets); }
/** * Terminates an existing EMR cluster. <p>Requires EXECUTE permission on namespace</p> * * @param namespace the namespace * @param emrClusterDefinitionName the EMR cluster definition name * @param emrClusterName the EMR cluster name * @param overrideTerminationProtection parameter for whether to override termination protection * @param emrClusterId EMR cluster ID * @param accountId account Id * * @return the EMR cluster that was terminated * @throws Exception if there was an error terminating the EMR cluster. */ @RequestMapping(value = "/emrClusters/namespaces/{namespace}/emrClusterDefinitionNames/{emrClusterDefinitionName}/emrClusterNames/{emrClusterName}", method = RequestMethod.DELETE) @Secured(SecurityFunctions.FN_EMR_CLUSTERS_DELETE) public EmrCluster terminateEmrCluster(@PathVariable("namespace") String namespace, @PathVariable("emrClusterDefinitionName") String emrClusterDefinitionName, @PathVariable("emrClusterName") String emrClusterName, @RequestParam(value = "overrideTerminationProtection", required = false, defaultValue = "false") Boolean overrideTerminationProtection, @RequestParam(value = "emrClusterId", required = false) String emrClusterId, @RequestParam(value = "accountId", required = false) String accountId) throws Exception { EmrClusterAlternateKeyDto alternateKey = EmrClusterAlternateKeyDto.builder().withNamespace(namespace).withEmrClusterDefinitionName(emrClusterDefinitionName) .withEmrClusterName(emrClusterName).build(); return emrService.terminateCluster(alternateKey, overrideTerminationProtection, emrClusterId, accountId); } }
/** * Terminates an existing EMR cluster. <p>Requires EXECUTE permission on namespace</p> * * @param namespace the namespace * @param emrClusterDefinitionName the EMR cluster definition name * @param emrClusterName the EMR cluster name * @param overrideTerminationProtection parameter for whether to override termination protection * @param emrClusterId EMR cluster ID * @param accountId account Id * * @return the EMR cluster that was terminated * @throws Exception if there was an error terminating the EMR cluster. */ @RequestMapping(value = "/emrClusters/namespaces/{namespace}/emrClusterDefinitionNames/{emrClusterDefinitionName}/emrClusterNames/{emrClusterName}", method = RequestMethod.DELETE) @Secured(SecurityFunctions.FN_EMR_CLUSTERS_DELETE) public EmrCluster terminateEmrCluster(@PathVariable("namespace") String namespace, @PathVariable("emrClusterDefinitionName") String emrClusterDefinitionName, @PathVariable("emrClusterName") String emrClusterName, @RequestParam(value = "overrideTerminationProtection", required = false, defaultValue = "false") Boolean overrideTerminationProtection, @RequestParam(value = "emrClusterId", required = false) String emrClusterId, @RequestParam(value = "accountId", required = false) String accountId) throws Exception { EmrClusterAlternateKeyDto alternateKey = EmrClusterAlternateKeyDto.builder().withNamespace(namespace).withEmrClusterDefinitionName(emrClusterDefinitionName) .withEmrClusterName(emrClusterName).build(); return emrService.terminateCluster(alternateKey, overrideTerminationProtection, emrClusterId, accountId); } }
/** * Creates a EMR cluster alternate key from the relative values in the EMR Cluster Create Request. * * @param emrClusterCreateRequest the EMR cluster create request * * @return the EMR cluster alternate key */ private EmrClusterAlternateKeyDto getEmrClusterAlternateKey(EmrClusterCreateRequest emrClusterCreateRequest) { return EmrClusterAlternateKeyDto.builder().withNamespace(emrClusterCreateRequest.getNamespace()) .withEmrClusterDefinitionName(emrClusterCreateRequest.getEmrClusterDefinitionName()).withEmrClusterName(emrClusterCreateRequest.getEmrClusterName()) .build(); }
/** * Creates a EMR cluster alternate key from the relative values in the EMR Cluster Create Request. * * @param emrClusterCreateRequest the EMR cluster create request * * @return the EMR cluster alternate key */ private EmrClusterAlternateKeyDto getEmrClusterAlternateKey(EmrClusterCreateRequest emrClusterCreateRequest) { return EmrClusterAlternateKeyDto.builder().withNamespace(emrClusterCreateRequest.getNamespace()) .withEmrClusterDefinitionName(emrClusterCreateRequest.getEmrClusterDefinitionName()).withEmrClusterName(emrClusterCreateRequest.getEmrClusterName()) .build(); }
/** * This method tests the scenario when no active cluster exists. */ @Test(expected = IllegalArgumentException.class) public void testTerminateEmrClusterNoCluster() 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())); EmrClusterAlternateKeyDto emrClusterAlternateKeyDto = EmrClusterAlternateKeyDto.builder().withNamespace(NAMESPACE).withEmrClusterDefinitionName(EMR_CLUSTER_DEFINITION_NAME) .withEmrClusterName("cluster_not_found").build(); emrService.terminateCluster(emrClusterAlternateKeyDto, true, null, null); }
/** * This method tests the scenario with AmazonServiceException. */ @Test(expected = AmazonServiceException.class) public void testGetEmrClusterByIdAmazonException() 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())); EmrClusterAlternateKeyDto emrClusterAlternateKeyDto = EmrClusterAlternateKeyDto.builder().withNamespace(NAMESPACE).withEmrClusterDefinitionName(EMR_CLUSTER_DEFINITION_NAME).withEmrClusterName("test") .build(); emrService.getCluster(emrClusterAlternateKeyDto, MockAwsOperationsHelper.AMAZON_SERVICE_EXCEPTION, null, true, null, false); fail("Should throw an AmazonServiceException."); }
/** * This method tests the scenario when cluster specified does not exists. */ @Test(expected = IllegalArgumentException.class) public void testGetEmrClusterByIdDoesNotExist() 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())); EmrClusterAlternateKeyDto emrClusterAlternateKeyDto = EmrClusterAlternateKeyDto.builder().withNamespace(NAMESPACE).withEmrClusterDefinitionName(EMR_CLUSTER_DEFINITION_NAME) .withEmrClusterName("cluster_does_not_exist").build(); emrService.getCluster(emrClusterAlternateKeyDto, "cluster_does_not_exist", null, true, null, false); fail("Should throw an IllegalArgumentException."); }
/** * This method tests the scenario when cluster specified does not exists. */ @Test(expected = IllegalArgumentException.class) public void testGetEmrClusterByIdDoesNotExistForNamespace() 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 a new EMR cluster create request EmrClusterCreateRequest request = getNewEmrClusterCreateRequest(); EmrCluster emrCluster = emrService.createCluster(request); // EmrClusterAlternateKeyDto emrClusterAlternateKeyDto = EmrClusterAlternateKeyDto.builder().namespace(NAMESPACE) // .emrClusterDefinitionName(EMR_CLUSTER_DEFINITION_NAME).withEmrClusterName(request.getEmrClusterName()).build(); // Create the second namespace entity. NamespaceEntity namespaceEntity_2 = namespaceDaoTestHelper.createNamespaceEntity(NAMESPACE_2); emrClusterDefinitionDaoTestHelper.createEmrClusterDefinitionEntity(namespaceEntity_2, EMR_CLUSTER_DEFINITION_NAME, IOUtils.toString(resourceLoader.getResource(EMR_CLUSTER_DEFINITION_XML_FILE_WITH_CLASSPATH).getInputStream())); EmrClusterAlternateKeyDto emrClusterAlternateKeyDto_2 = EmrClusterAlternateKeyDto.builder().withNamespace(NAMESPACE_2).withEmrClusterDefinitionName(EMR_CLUSTER_DEFINITION_NAME) .withEmrClusterName(request.getEmrClusterName()).build(); emrService.getCluster(emrClusterAlternateKeyDto_2, emrCluster.getId(), null, true, null, false); fail("Should throw an IllegalArgumentException."); }
/** * This method tests the scenario where AmazonServiceException is thrown */ @Test(expected = AmazonServiceException.class) public void testTerminateEmrClusterAmazonException() 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(MockAwsOperationsHelper.AMAZON_SERVICE_EXCEPTION); emrService.createCluster(request); EmrClusterAlternateKeyDto emrClusterAlternateKeyDto = EmrClusterAlternateKeyDto.builder().withNamespace(NAMESPACE).withEmrClusterDefinitionName(EMR_CLUSTER_DEFINITION_NAME) .withEmrClusterName(request.getEmrClusterName()).build(); emrService.terminateCluster(emrClusterAlternateKeyDto, true, null, null); }
/** * This method tests the happy path scenario by providing all the parameters */ @Test public void testGetEmrClusterByName() 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 a new EMR cluster create request EmrClusterCreateRequest request = getNewEmrClusterCreateRequest(); EmrCluster emrCluster = emrService.createCluster(request); EmrClusterAlternateKeyDto emrClusterAlternateKeyDto = EmrClusterAlternateKeyDto.builder().withNamespace(NAMESPACE).withEmrClusterDefinitionName(EMR_CLUSTER_DEFINITION_NAME) .withEmrClusterName(request.getEmrClusterName()).build(); EmrCluster emrClusterGet = emrService.getCluster(emrClusterAlternateKeyDto, null, null, true, null, false); // Validate the returned object against the input. assertNotNull(emrCluster); assertNotNull(emrClusterGet); assertTrue(emrCluster.getNamespace().equals(emrClusterGet.getNamespace())); assertTrue(emrCluster.getEmrClusterDefinitionName().equals(emrClusterGet.getEmrClusterDefinitionName())); assertTrue(emrCluster.getEmrClusterName().equals(emrClusterGet.getEmrClusterName())); }
/** * This method tests the happy path scenario by providing all the parameters */ @Test public void testTerminateEmrCluster() 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 a new EMR cluster create request EmrClusterCreateRequest request = getNewEmrClusterCreateRequest(); EmrCluster emrCluster = emrService.createCluster(request); EmrClusterAlternateKeyDto emrClusterAlternateKeyDto = EmrClusterAlternateKeyDto.builder().withNamespace(NAMESPACE).withEmrClusterDefinitionName(EMR_CLUSTER_DEFINITION_NAME) .withEmrClusterName(request.getEmrClusterName()).build(); EmrCluster emrClusterTerminated = emrService.terminateCluster(emrClusterAlternateKeyDto, true, null, null); // Validate the returned object against the input. assertNotNull(emrCluster); assertNotNull(emrClusterTerminated); assertTrue(emrCluster.getNamespace().equals(emrClusterTerminated.getNamespace())); assertTrue(emrCluster.getEmrClusterDefinitionName().equals(emrClusterTerminated.getEmrClusterDefinitionName())); assertTrue(emrCluster.getEmrClusterName().equals(emrClusterTerminated.getEmrClusterName())); }
/** * This method tests the happy path scenario by providing all the parameters. */ @Test public void testTerminateEmrCluster() 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 a trusting AWS account. trustingAccountDaoTestHelper.createTrustingAccountEntity(AWS_ACCOUNT_ID, AWS_ROLE_ARN); // Create a new EMR cluster create request EmrClusterCreateRequest request = getNewEmrClusterCreateRequestWithAccountId(); EmrCluster emrCluster = emrService.createCluster(request); EmrClusterAlternateKeyDto emrClusterAlternateKeyDto = EmrClusterAlternateKeyDto.builder().withNamespace(NAMESPACE).withEmrClusterDefinitionName(EMR_CLUSTER_DEFINITION_NAME) .withEmrClusterName(request.getEmrClusterName()).build(); EmrCluster emrClusterTerminated = emrService.terminateCluster(emrClusterAlternateKeyDto, true, null, null); // Validate the returned object against the input. assertNotNull(emrCluster); assertNotNull(emrClusterTerminated); assertTrue(emrCluster.getNamespace().equals(emrClusterTerminated.getNamespace())); assertTrue(emrCluster.getEmrClusterDefinitionName().equals(emrClusterTerminated.getEmrClusterDefinitionName())); assertTrue(emrCluster.getEmrClusterName().equals(emrClusterTerminated.getEmrClusterName())); assertEquals(AWS_ACCOUNT_ID, emrCluster.getAccountId()); }
/** * This method tests the happy path scenario by providing all the parameters */ @Test public void testGetEmrClusterByIdWithFleetInstance() throws Exception { // Create the namespace entity. NamespaceEntity namespaceEntity = namespaceDaoTestHelper.createNamespaceEntity(NAMESPACE); String configXml = IOUtils.toString(resourceLoader.getResource(EMR_CLUSTER_DEFINITION_XML_FILE_MINIMAL_CLASSPATH).getInputStream()); EmrClusterDefinition emrClusterDefinition = xmlHelper.unmarshallXmlToObject(EmrClusterDefinition.class, configXml); emrClusterDefinition.setAmiVersion(MockAwsOperationsHelper.AMAZON_CLUSTER_STATUS_WAITING); configXml = xmlHelper.objectToXml(emrClusterDefinition); emrClusterDefinitionDaoTestHelper.createEmrClusterDefinitionEntity(namespaceEntity, EMR_CLUSTER_DEFINITION_NAME, configXml); // Create a new EMR cluster create request EmrClusterCreateRequest request = getNewEmrClusterCreateRequest(); EmrCluster emrCluster = emrService.createCluster(request); EmrClusterAlternateKeyDto emrClusterAlternateKeyDto = EmrClusterAlternateKeyDto.builder().withNamespace(NAMESPACE).withEmrClusterDefinitionName(EMR_CLUSTER_DEFINITION_NAME) .withEmrClusterName(request.getEmrClusterName()).build(); EmrCluster emrClusterGet = emrService.getCluster(emrClusterAlternateKeyDto, emrCluster.getId(), null, true, null, true); // Validate the returned object against the input. assertNotNull(emrCluster); assertNotNull(emrClusterGet); assertTrue(emrCluster.getId().equals(emrClusterGet.getId())); assertTrue(emrCluster.getNamespace().equals(emrClusterGet.getNamespace())); assertTrue(emrCluster.getEmrClusterDefinitionName().equals(emrClusterGet.getEmrClusterDefinitionName())); assertTrue(emrCluster.getEmrClusterName().equals(emrClusterGet.getEmrClusterName())); assertNotNull(emrClusterGet.getInstanceFleets()); assertTrue(emrClusterGet.getInstanceFleets().size() == 1); }
EmrClusterAlternateKeyDto.builder().withNamespace(NAMESPACE).withEmrClusterDefinitionName(EMR_CLUSTER_DEFINITION_NAME) .withEmrClusterName(request.getEmrClusterName()).build();
EmrClusterAlternateKeyDto.builder().withNamespace(NAMESPACE).withEmrClusterDefinitionName(EMR_CLUSTER_DEFINITION_NAME) .withEmrClusterName(request.getEmrClusterName()).build();
EmrClusterAlternateKeyDto.builder().withNamespace(NAMESPACE).withEmrClusterDefinitionName(EMR_CLUSTER_DEFINITION_NAME) .withEmrClusterName(request.getEmrClusterName()).build();
EmrClusterAlternateKeyDto.builder().withNamespace(NAMESPACE).withEmrClusterDefinitionName(EMR_CLUSTER_DEFINITION_NAME) .withEmrClusterName("test_cluster").build(); emrServiceImpl.getCluster(emrClusterAlternateKeyDto, null, null, false, null, false); EmrClusterAlternateKeyDto.builder().withNamespace(NAMESPACE).withEmrClusterDefinitionName(EMR_CLUSTER_DEFINITION_NAME) .withEmrClusterName("test_cluster").build(); emrServiceImpl.terminateCluster(emrClusterAlternateKeyDto, false, null, null);