Package org.apache.oozie

Source Code of org.apache.oozie.LocalOozieClient

/**
* Copyright (c) 2010 Yahoo! Inc. All rights reserved.
* Licensed 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. See accompanying LICENSE file.
*/
package org.apache.oozie;

import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;

import org.apache.oozie.client.OozieClient;
import org.apache.oozie.client.OozieClientException;
import org.apache.oozie.client.WorkflowJob;
import org.apache.oozie.util.XConfiguration;

/**
* Client API to submit and manage Oozie workflow jobs against an Oozie intance. <p/> This class is thread safe. <p/>
* Syntax for filter for the {@link #getJobsInfo(String)}  {@link #getJobsInfo(String, int, int)}  methods:
* <code>[NAME=VALUE][;NAME=VALUE]*</code>. <p/> Valid filter names are: <p/> <ul/> <li>name: the workflow application
* name from the workflow definition.</li> <li>user: the user that submitted the job.</li> <li>group: the group for the
* job.</li> <li>status: the status of the job.</li> </ul> <p/> The query will do an AND among all the filter names. The
* query will do an OR among all the filter values for the same name. Multiple values must be specified as different
* name value pairs.
*/
public class LocalOozieClient extends OozieClient {

    private DagEngine dagEngine;

    /**
     * Create a workflow client for Oozie local use. <p/>
     *
     * @param dagEngine the dag engine instance to use.
     */
    public LocalOozieClient(DagEngine dagEngine) {
        this.dagEngine = dagEngine;
    }

    /**
     * Return the Oozie URL of the workflow client instance. <p/> This URL is the base URL fo the Oozie system, with not
     * protocol versioning.
     *
     * @return the Oozie URL of the workflow client instance.
     */
    @Override
    public String getOozieUrl() {
        return "localoozie";
    }

    /**
     * Return the Oozie URL used by the client and server for WS communications. <p/> This URL is the original URL plus
     * the versioning element path.
     *
     * @return the Oozie URL used by the client and server for communication.
     * @throws org.apache.oozie.client.OozieClientException thrown in the client and the server are not protocol
     * compatible.
     */
    @Override
    public String getProtocolUrl() throws OozieClientException {
        return "localoozie";
    }

    /**
     * Validate that the Oozie client and server instances are protocol compatible.
     *
     * @throws org.apache.oozie.client.OozieClientException thrown in the client and the server are not protocol
     * compatible.
     */
    @Override
    public synchronized void validateWSVersion() throws OozieClientException {
    }

    /**
     * Create an empty configuration with just the {@link #USER_NAME} set to the JVM user name and the {@link
     * #GROUP_NAME} set to 'other'.
     *
     * @return an empty configuration.
     */
    @Override
    public Properties createConfiguration() {
        Properties conf = new Properties();
        if (dagEngine != null) {
            conf.setProperty(USER_NAME, dagEngine.getUser());
        }
        conf.setProperty(GROUP_NAME, "users");
        return conf;
    }

    /**
     * Set a HTTP header to be used in the WS requests by the workflow instance.
     *
     * @param name header name.
     * @param value header value.
     */
    @Override
    public void setHeader(String name, String value) {
    }

    /**
     * Get the value of a set HTTP header from the workflow instance.
     *
     * @param name header name.
     * @return header value, <code>null</code> if not set.
     */
    @Override
    public String getHeader(String name) {
        return null;
    }

    /**
     * Remove a HTTP header from the workflow client instance.
     *
     * @param name header name.
     */
    @Override
    public void removeHeader(String name) {
    }

    /**
     * Return an iterator with all the header names set in the workflow instance.
     *
     * @return header names.
     */
    @Override
    @SuppressWarnings("unchecked")
    public Iterator<String> getHeaderNames() {
        return Collections.EMPTY_SET.iterator();
    }


    /**
     * Submit a workflow job.
     *
     * @param conf job configuration.
     * @return the job Id.
     * @throws org.apache.oozie.client.OozieClientException thrown if the job could not be submitted.
     */
    @Override
    public String submit(Properties conf) throws OozieClientException {
        try {
            return dagEngine.submitJob(new XConfiguration(conf), false);
        }
        catch (DagEngineException ex) {
            throw new OozieClientException(ex.getErrorCode().toString(), ex);
        }
    }

    /**
     * Start a workflow job.
     *
     * @param jobId job Id.
     * @throws org.apache.oozie.client.OozieClientException thrown if the job could not be started.
     */
    @Override
    public void start(String jobId) throws OozieClientException {
        try {
            dagEngine.start(jobId);
        }
        catch (DagEngineException ex) {
            throw new OozieClientException(ex.getErrorCode().toString(), ex);
        }
    }

    /**
     * Submit and start a workflow job.
     *
     * @param conf job configuration.
     * @return the job Id.
     * @throws org.apache.oozie.client.OozieClientException thrown if the job could not be submitted.
     */
    @Override
    public String run(Properties conf) throws OozieClientException {
        try {
            return dagEngine.submitJob(new XConfiguration(conf), true);
        }
        catch (DagEngineException ex) {
            throw new OozieClientException(ex.getErrorCode().toString(), ex);
        }
    }

    /**
     * Rerun a workflow job.
     *
     * @param jobId job Id to rerun.
     * @param conf configuration information for the rerun.
     * @throws org.apache.oozie.client.OozieClientException thrown if the job could not be started.
     */
    @Override
    public void reRun(String jobId, Properties conf) throws OozieClientException {
        try {
            dagEngine.reRun(jobId, new XConfiguration(conf));
        }
        catch (DagEngineException ex) {
            throw new OozieClientException(ex.getErrorCode().toString(), ex);
        }
    }

    /**
     * Suspend a workflow job.
     *
     * @param jobId job Id.
     * @throws org.apache.oozie.client.OozieClientException thrown if the job could not be suspended.
     */
    @Override
    public void suspend(String jobId) throws OozieClientException {
        try {
            dagEngine.suspend(jobId);
        }
        catch (DagEngineException ex) {
            throw new OozieClientException(ex.getErrorCode().toString(), ex);
        }
    }

    /**
     * Resume a workflow job.
     *
     * @param jobId job Id.
     * @throws org.apache.oozie.client.OozieClientException thrown if the job could not be resume.
     */
    @Override
    public void resume(String jobId) throws OozieClientException {
        try {
            dagEngine.resume(jobId);
        }
        catch (DagEngineException ex) {
            throw new OozieClientException(ex.getErrorCode().toString(), ex);
        }
    }

    /**
     * Kill a workflow job.
     *
     * @param jobId job Id.
     * @throws org.apache.oozie.client.OozieClientException thrown if the job could not be killed.
     */
    @Override
    public void kill(String jobId) throws OozieClientException {
        try {
            dagEngine.kill(jobId);
        }
        catch (DagEngineException ex) {
            throw new OozieClientException(ex.getErrorCode().toString(), ex);
        }
    }

    /**
     * Get the info of a workflow job.
     *
     * @param jobId job Id.
     * @return the job info.
     * @throws org.apache.oozie.client.OozieClientException thrown if the job info could not be retrieved.
     */
    @Override
    public WorkflowJob getJobInfo(String jobId) throws OozieClientException {
        try {
            return dagEngine.getJob(jobId);
        }
        catch (DagEngineException ex) {
            throw new OozieClientException(ex.getErrorCode().toString(), ex);
        }
    }

    /**
     * Return the info of the workflow jobs that match the filter.
     *
     * @param filter job filter. Refer to the {@link LocalOozieClient} for the filter syntax.
     * @param start jobs offset, base 1.
     * @param len number of jobs to return.
     * @return a list with the workflow jobs info, without node details.
     * @throws org.apache.oozie.client.OozieClientException thrown if the jobs info could not be retrieved.
     */
    @Override
    public List<WorkflowJob> getJobsInfo(String filter, int start, int len) throws OozieClientException {
        try {
            return (List) dagEngine.getJobs(filter, start, len).getWorkflows();
        }
        catch (DagEngineException ex) {
            throw new OozieClientException(ex.getErrorCode().toString(), ex);
        }
    }

    /**
     * Return the info of the workflow jobs that match the filter. <p/> It returns the first 100 jobs that match the
     * filter.
     *
     * @param filter job filter. Refer to the {@link LocalOozieClient} for the filter syntax.
     * @return a list with the workflow jobs info, without node details.
     * @throws org.apache.oozie.client.OozieClientException thrown if the jobs info could not be retrieved.
     */
    @Override
    public List<WorkflowJob> getJobsInfo(String filter) throws OozieClientException {
        return getJobsInfo(filter, 1, 100);
    }

    /**
     * Return the workflow job Id for an external Id. <p/> The external Id must have provided at job creation time.
     *
     * @param externalId external Id given at job creation time.
     * @return the workflow job Id for an external Id, <code>null</code> if none.
     * @throws org.apache.oozie.client.OozieClientException thrown if the operation could not be done.
     */
    @Override
    public String getJobId(String externalId) throws OozieClientException {
        try {
            return dagEngine.getJobIdForExternalId(externalId);
        }
        catch (DagEngineException ex) {
            throw new OozieClientException(ex.getErrorCode().toString(), ex);
        }
    }

    /**
     * Returns if Oozie is in safe mode or not.
     *
     * @return true if safe mode is ON<br> false if safe mode is OFF
     * @throws org.apache.oozie.client.OozieClientException throw if it could not obtain the safe mode status.
     */
    /*public SYSTEM_MODE isInSafeMode() throws OozieClientException {
        //return Services.get().isSafeMode();
        return Services.get().getSystemMode() ;
    }*/

TOP

Related Classes of org.apache.oozie.LocalOozieClient

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.