private void handle()

in lambda-client/src/main/java/com/amazonwebservices/blogs/containers/IAMEventHandler.java [71:121]


	private void handle (String inputString) throws IOException {	
		JsonObject inputObject = new JsonObject (inputString);
		String account = inputObject.getString("account");
		String eventName = inputObject.getJsonObject("detail").getString("eventName");
		String eventSource = inputObject.getJsonObject("detail").getString("eventSource");
		String groupName = inputObject.getJsonObject("detail").getJsonObject("requestParameters").getString("groupName");
		String userName = inputObject.getJsonObject("detail").getJsonObject("requestParameters").getString("userName");
		String userArn = String.format("arn:aws:iam::%s:user/%s", account, userName);
		
		logger.info(String.format("Handling IAM event notification from '%s'", eventSource));
		if (!eventSource.equals(IAM_SOURCE)) return;
		
		String objName = userName.concat("-").concat(groupName).toLowerCase();
		String objNamespace = "kube-system";
		
		IamUserGroupCustomObject iamUserGroup =
				new IamUserGroupCustomObject()
				.apiVersion("octank.com/v1")
				.kind("IamUserGroup")
				.metadata(new V1ObjectMeta()
						.name(objName)
						.namespace(objNamespace))
				.spec(new IamUserGroupCustomObjectSpec()
						.iamUser(userArn)
	                    .username(userName)
	                    .group(groupName));
		logger.debug(iamUserGroup.toString());
	                    
		if (eventName.equals(ADD_USER_TO_GROUP)) {
			logger.info(String.format("Adding user '%s' to group '%s'", userName, groupName));
		    KubernetesApiResponse<IamUserGroupCustomObject> createResponse = apiIamGroupClient.create(iamUserGroup);
		    if (!createResponse.isSuccess()) {
		    	logger.error(String.format("Failed to create a IamGroup custom object '%s.%s'", objName, objNamespace));
		    	logger.error(String.format("Error status details:\n%s", createResponse.getStatus().getDetails().toString()));
		    }
		    else {
		    	logger.error(String.format("Successfully created IamGroup custom object '%s.%s'", objName, objNamespace));
		    }
		}
		else if (eventName.equals(REMOVE_USER_FROM_GROUP)) {
			logger.info(String.format("Removing user '%s' from group '%s'", userName, groupName));
		    KubernetesApiResponse<IamUserGroupCustomObject> createResponse = apiIamGroupClient.delete(objNamespace, objName);
		    if (!createResponse.isSuccess()) {
		    	logger.error(String.format("Failed to delete a IamGroup custom object '%s.%s'", objName, objNamespace));
		    	logger.error(String.format("Error status details:\n%s", createResponse.getStatus().getDetails().toString()));
		    }
		    else {
		    	logger.error(String.format("Successfully deleted IamGroup custom object '%s.%s'", objName, objNamespace));
		    }
		}
	}