Git Product home page Git Product logo

academysoftwarefoundation / opencue Goto Github PK

View Code? Open in Web Editor NEW
809.0 54.0 189.0 10.71 MB

A render management system you can deploy for visual effects and animation productions.

Home Page: https://www.opencue.io

License: Apache License 2.0

Python 56.80% Shell 0.58% Java 39.74% HTML 0.16% CSS 0.03% PLpgSQL 2.32% Dockerfile 0.22% C++ 0.11% Vim Script 0.04%
opencue openqueue visual-effects vfx fx animation rendering render render-farm scheduler

opencue's People

Contributors

akim-ruslanov avatar aoblet avatar bcipriano avatar cwrightce avatar dependabot[bot] avatar diegotavares avatar donalm avatar ianianda avatar idrismiles avatar jmertic avatar kalisp avatar ks47 avatar larsbijl avatar lgritz avatar lithorus avatar mb0rt avatar n-jay avatar ndeebook avatar oliviascarfone avatar porges avatar proorc avatar ramonfigueiredo avatar romainf-ubi avatar roulaoregan-spi avatar sharifsalah avatar smith1511 avatar splhack avatar srbhss avatar vibss2397 avatar yaash45 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

opencue's Issues

document user management

Define best practices, especially in a cloud environment. Cue specifically RQD expect that usernames are consistent (but not UIDs, right?)

Support Windows for client software and RQD

The database and Cuebot will continue to run on Linux but all other pieces - PyCue, PyOutline, CueGUI, and RQD - should run on Windows.

RQD should in theory run on all platforms but there is some OS-specific code in there especially around system metrics collection.

Allow for frame chunking at the application level

By default we only have the #IFRAME# replacement token, which limits our ability to do frame chunking in the application (executing a single command with a frame range, so we only incur the application startup cost once).
It would be nice to have a start and end frame token exposed by default in pyoutline making this functionality at least work for Maya and Nuke.

support subframes

Both Python and Java implementations of FrameRange/FrameSet assume that all frames are whole numbers - ints are used throughout. Possibly other places in the code make this assumption as well.

Ensure that subframes are supported and fix as necessary.

packaging and deployment

Scripts/docker images/other tools for packaging and deploying the various OpenCue components.

provide instructions for configuring gRPC TLS

Currently OpenCue assumes a secure network between components and uses an unsecured gRPC channel.

Create a test deployment of OpenCue that makes use of self-signed TLS certs for gRPC, make any code changes necessary, and document how users can set this up on their own.

Plus: build it into the Docker images so a default deployment uses secure channels already.

unbookProcs method not defined on server

spi_cue.Cue3.wrappers.layer defines a function unbookProcs. This method signature does not have any match in ICE or on the server. Verify that it is ok to remove.

improve FrameRange/FrameSet string representations

The old C++ implementation has smart string representations - sequences of frames are grouped by range and step. I believe this only really affects visual representations of the frame range; the backend deals with only flattened lists of frames.

See the old libFileSequence test code[1] for examples of how the grouping works.

Our existing code uses very simple string representations - flat comma-separated lists of frames contained within. By Python and Java implementations should be switched to match the old C++ library.

[1] https://github.com/imageworks/OpenCue/blob/165d4c54b5e9ad55ec84416d8fdc79761174cabf/libFileSequence/test/FileSequenceTest.cpp#L800

clean up client-side config yaml

There were two files, cue3.yaml and etc/default.yaml, which have similar contents including some SPI-specific stuff in there.

This has been condensed to a single etc/default.yaml but still needs cleanup and documentation of the values available.

implement production management API

This involves removing the existing Point and TrackIt concepts and replacing them with a redesigned general-use API. Goals will be to implement an API that meets the existing Trackit setup's requirements, as well as can support other popular production management tools e.g. Shotgun.

check in a CONTRIBUTING file

Per Google OSS guidelines.

This file will spell out exactly how potential contributors can contribute code changes, including signing a CLA as well as the Pull Request process itself.

Frame logging output to service

Frame logs are currently written out to a shared file system that all the clients need to also have mounted. We should continue to support this configuration, but also create an interface for exporting to a logging service.

send status codes and error messages from all grpc servants

Currently most of servants return the generic grpc error (equivalent of returning a 500). Have the servants catch errors and send appropriate onError messages using grpc's own error messaging.

For example:

    public void findJob(JobFindJobRequest request, StreamObserver<JobFindJobResponse> responseObserver) {
        try {
            responseObserver.onNext(JobFindJobResponse.newBuilder()
                    .setJob(whiteboard.findJob(request.getName()))
                    .build());
            responseObserver.onCompleted();
        } catch (EmptyResultDataAccessException e) {
            responseObserver.onError(Status.NOT_FOUND
                    .withDescription(e.getMessage())
                    .withCause(e)
                    .asRuntimeException());
        }
    }

Update WhiteboardDaoTests to check returned values

Currently many of the WhiteboardDaoTests in cuebot simply call the method they are testing but do not check that the returned value is correct.
We should go through and update these tests to make sure that the returned value is accurate.

Cleanup Folder f_order column

It looks like FOLDER.f_order in the database was mislabeled as a float. It is currently being stored as an integer so we should relabel it to be FOLDER.int_order.

port cache layer to new RPC architecture

The old ICE layer had caching for individual instances of each object type. We should add a similar cache to fit somewhere within the new architecture - at the database layer is a likely candidate.

Make jobLauncher.launch return the Job objects

If you look at ManageJob.launchSpecAndWait, this method is probably doing too much logic in the servant class. We should have jobLauncher.launch return a list of Jobs so that we don't have to iterate over the spec and call findJob inside the servant.

standardize backend component logging

Cuebot and RQD use somewhat different logging setups and RQD at least needs some cleanup - in various places it uses standing logging as well as print directly.

Clean up the logging code in both, using standard logging libraries, and document how logs can be written to either a) a configurable path on disk, or b) to a logging service such as Cloud Logging.

Have pyoutline backend.launch return the list of jobs

Right now in pyoutline the launch command will only return the first job submitted. It should return all jobs submitted and let the caller handle what to do with them.
See pyoutline/src/outline/backend/cue3.py : launch()

Make rqconstants.py be driven by a config file/env vars

Currently a number of rqd variables are hardcoded in rqconstants.py. Some of these are proper constants but others need to be dynamic, such as:

  • Cuebot hostname
  • Port numbers
  • Logging config

These should be modified to support a config file / environment vars so that the application code doesn't need to be modified by the end user.

configurable email settings

Cuebot sends email in a variety of situations e.g. job completion, job failure. Some of code hardcodes SPI-specific things like imageworks email addresses, and other code assumes all users use a @imageworks.com email domain.

rename "mcp" throughout the system

OpenCue contains a concept called "mcp" which is basically a term for local temporary storage. It is monitored as a resource in the same way that cores or RAM is, to ensure that render nodes have enough scratch storage to complete a job.

It originally had a common mountpoint of /mcp on Linux, hence the name.

Rename this to be something a bit more clear - "tmp" or something like that - and make the mount point a config value as its hardcoded to /mcp in a few places particularly RQD.

CueSubmit doesn't make use of Show and Shot fields.

https://github.com/imageworks/OpenCue/pull/139 adds some defaults when Show/Shot aren't set as env vars.

However when testing this, I filled some values into the Show and Shot fields in CueSubmit and it looks like the defaults are still being used. If the show defined by default_show doesn't exist, the job submission fails with a generic exception. The shot doesn't seem to affect much, and the job submission succeeds, but when I pull up the job attributes in CueGUI I do see the shot from the config file rather than what I filled into the CueSubmit window.

Reimplement RPC stats collection for SystemStats call

Ice provided a way to log the number of

  • requests for data
  • requests for function
  • error requests

The SystemStats call would retrieve this info. We need to reimplement this functionality in the absence of ICE.
See TODO in com.imageworks.spcue.servant.CueStatic.

PyOutline code cleanup

Code is stored under a src/ subdir unlike other components, and exposes most of its functionality in a toplevel namespace via wildcard imports.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.