| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package org.apache.falcon.cluster.util; |
| |
| import org.apache.falcon.entity.v0.Frequency; |
| import org.apache.falcon.entity.v0.cluster.Cluster; |
| import org.apache.falcon.entity.v0.cluster.Interface; |
| import org.apache.falcon.entity.v0.cluster.Interfaces; |
| import org.apache.falcon.entity.v0.cluster.Interfacetype; |
| import org.apache.falcon.entity.v0.feed.Feed; |
| import org.apache.falcon.entity.v0.process.Clusters; |
| import org.apache.falcon.entity.v0.process.EngineType; |
| import org.apache.falcon.entity.v0.process.Input; |
| import org.apache.falcon.entity.v0.process.Inputs; |
| import org.apache.falcon.entity.v0.process.Output; |
| import org.apache.falcon.entity.v0.process.Outputs; |
| import org.apache.falcon.entity.v0.process.Process; |
| import org.apache.falcon.entity.v0.process.Workflow; |
| |
| /** |
| * Utility class to build entity objects. |
| */ |
| public final class EntityBuilderTestUtil { |
| |
| public static final String USER = System.getProperty("user.name"); |
| public static final String COLO_NAME = "west-coast"; |
| public static final String WORKFLOW_NAME = "imp-click-join-workflow"; |
| public static final String WORKFLOW_VERSION = "1.0.9"; |
| |
| private EntityBuilderTestUtil() { |
| } |
| |
| public static Cluster buildCluster(String name) { |
| return buildCluster(name, COLO_NAME, "classification=production"); |
| } |
| |
| public static Cluster buildCluster(String name, String colo, String tags) { |
| Cluster cluster = new Cluster(); |
| cluster.setName(name); |
| cluster.setColo(colo); |
| cluster.setTags(tags); |
| |
| Interfaces interfaces = new Interfaces(); |
| cluster.setInterfaces(interfaces); |
| |
| Interface storage = new Interface(); |
| storage.setEndpoint("jail://global:00"); |
| storage.setType(Interfacetype.WRITE); |
| cluster.getInterfaces().getInterfaces().add(storage); |
| |
| org.apache.falcon.entity.v0.cluster.ACL clusterACL = new org.apache.falcon.entity.v0 |
| .cluster.ACL(); |
| clusterACL.setOwner(USER); |
| clusterACL.setGroup(USER); |
| clusterACL.setPermission("*"); |
| cluster.setACL(clusterACL); |
| |
| return cluster; |
| } |
| |
| public static Feed buildFeed(String feedName, Cluster cluster, String tags, String groups) { |
| Feed feed = new Feed(); |
| feed.setName(feedName); |
| feed.setTags(tags); |
| feed.setGroups(groups); |
| feed.setFrequency(Frequency.fromString("hours(1)")); |
| |
| org.apache.falcon.entity.v0.feed.Clusters |
| clusters = new org.apache.falcon.entity.v0.feed.Clusters(); |
| feed.setClusters(clusters); |
| org.apache.falcon.entity.v0.feed.Cluster feedCluster = |
| new org.apache.falcon.entity.v0.feed.Cluster(); |
| feedCluster.setName(cluster.getName()); |
| clusters.getClusters().add(feedCluster); |
| |
| org.apache.falcon.entity.v0.feed.ACL feedACL = new org.apache.falcon.entity.v0.feed.ACL(); |
| feedACL.setOwner(USER); |
| feedACL.setGroup(USER); |
| feedACL.setPermission("*"); |
| feed.setACL(feedACL); |
| |
| return feed; |
| } |
| |
| public static org.apache.falcon.entity.v0.process.Process buildProcess(String processName, |
| Cluster cluster, |
| String tags) throws Exception { |
| return buildProcess(processName, cluster, tags, null); |
| } |
| |
| public static org.apache.falcon.entity.v0.process.Process buildProcess(String processName, |
| Cluster cluster, |
| String tags, |
| String pipelineTags) throws Exception { |
| org.apache.falcon.entity.v0.process.Process processEntity = new Process(); |
| processEntity.setName(processName); |
| processEntity.setTags(tags); |
| if (pipelineTags != null) { |
| processEntity.setPipelines(pipelineTags); |
| } |
| |
| org.apache.falcon.entity.v0.process.Cluster processCluster = |
| new org.apache.falcon.entity.v0.process.Cluster(); |
| processCluster.setName(cluster.getName()); |
| processEntity.setClusters(new Clusters()); |
| processEntity.getClusters().getClusters().add(processCluster); |
| |
| addProcessACL(processEntity); |
| |
| return processEntity; |
| } |
| |
| public static void addProcessWorkflow(Process process) { |
| addProcessWorkflow(process, WORKFLOW_NAME, WORKFLOW_VERSION); |
| } |
| |
| public static void addProcessWorkflow(Process process, String workflowName, String version) { |
| Workflow workflow = new Workflow(); |
| workflow.setName(workflowName); |
| workflow.setVersion(version); |
| workflow.setEngine(EngineType.PIG); |
| workflow.setPath("/falcon/test/workflow"); |
| |
| process.setWorkflow(workflow); |
| } |
| |
| public static void addProcessACL(Process processEntity) throws Exception { |
| addProcessACL(processEntity, USER, USER); |
| } |
| |
| public static void addProcessACL(Process processEntity, String user, |
| String group) throws Exception { |
| org.apache.falcon.entity.v0.process.ACL processACL = new org.apache.falcon.entity.v0.process.ACL(); |
| processACL.setOwner(user); |
| processACL.setGroup(group); |
| processACL.setPermission("*"); |
| processEntity.setACL(processACL); |
| } |
| |
| public static void addInput(Process process, Feed feed) { |
| if (process.getInputs() == null) { |
| process.setInputs(new Inputs()); |
| } |
| |
| Inputs inputs = process.getInputs(); |
| Input input = new Input(); |
| input.setFeed(feed.getName()); |
| inputs.getInputs().add(input); |
| } |
| |
| public static void addOutput(Process process, Feed feed) { |
| if (process.getOutputs() == null) { |
| process.setOutputs(new Outputs()); |
| } |
| |
| Outputs outputs = process.getOutputs(); |
| Output output = new Output(); |
| output.setFeed(feed.getName()); |
| outputs.getOutputs().add(output); |
| } |
| } |