-
Notifications
You must be signed in to change notification settings - Fork 162
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Job filters #247
Add Job filters #247
Conversation
I'm not sure I agree with codefactor's "complexity" rating here. The method seems fairly straightforward to me. I'm open to suggestions for how to handle this. |
turbinia/client.py
Outdated
@@ -350,13 +350,15 @@ class TurbiniaServer(object): | |||
|
|||
Attributes: | |||
task_manager (TaskManager): An object to manage turbinia tasks. | |||
jobs_blacklist (list): Jobs we will exclude from running |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
List of what? Strings? Class names? Instances? Please add this to the docstring.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
turbinia/jobs/__init__.py
Outdated
and all Jobs will be returned if both are specified. | ||
|
||
Args: | ||
jobs_blacklist (list): Jobs that will be excluded from running |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As above, please indicate the type of things in these lists
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
turbinia/jobs/__init__.py
Outdated
TomcatAnalysisJob()] | ||
|
||
if jobs_whitelist and jobs_blacklist: | ||
log.info( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just .info? I would have thought Warn, at least. I also would prefer raising here, rather than trying to continue - what do you think?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1 on raising and let the user know.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I think raising is a better idea as well. Done.
turbinia/jobs/__init__.py
Outdated
TomcatAnalysisJob()] | ||
|
||
if jobs_whitelist and jobs_blacklist: | ||
log.info( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1 on raising and let the user know.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, I addressed the comments and merged this in to work with the new Job manager. PTAL. Thanks!
turbinia/client.py
Outdated
@@ -350,13 +350,15 @@ class TurbiniaServer(object): | |||
|
|||
Attributes: | |||
task_manager (TaskManager): An object to manage turbinia tasks. | |||
jobs_blacklist (list): Jobs we will exclude from running |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
turbinia/jobs/__init__.py
Outdated
and all Jobs will be returned if both are specified. | ||
|
||
Args: | ||
jobs_blacklist (list): Jobs that will be excluded from running |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
turbinia/jobs/__init__.py
Outdated
TomcatAnalysisJob()] | ||
|
||
if jobs_whitelist and jobs_blacklist: | ||
log.info( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I think raising is a better idea as well. Done.
Sorry, I'll fix the conflicts first. |
Ok, PTAL. Thanks! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, just one thing I think should be different.
turbinia/jobs/manager.py
Outdated
|
||
class JobsManager(object): | ||
"""The jobs manager.""" | ||
|
||
_job_classes = {} | ||
|
||
@classmethod | ||
def FilterJobNames( | ||
cls, jobs, jobs_blacklist=None, jobs_whitelist=None, objects=False): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not a big fan of the "objects" arg here, and it doesn't seem to be used so I just removing it.
I recommend two different methods if you want this functionality in the future.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I felt it was a bit skeevy too. It was actually used, but I refactored it into a separate function, and I think this is better.
PTAL
turbinia/client.py
Outdated
""" | ||
|
||
def __init__(self): | ||
def __init__(self, jobs_blacklist=None, jobs_whitelist=None): | ||
"""Initialize Turbinia Server.""" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"Initializes" + add args section
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, yeah, it was documented just above in the class attributes, but I realized that they are not actually class attributes, so I moved it here.
turbinia/jobs/manager.py
Outdated
jobs_whitelist and jobs_blacklist must not be specified at the same time. | ||
|
||
Args: | ||
jobs (list[str]): The names of the jobs to filter. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
rename to job_names for clarity
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
turbinia/jobs/manager.py
Outdated
jobs_whitelist and jobs_blacklist must not be specified at the same time. | ||
|
||
Args: | ||
jobs (list[TurbiniaJob]): The names of the jobs to filter. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix the docstring here - this is the jobs themselves not their names.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
"""Does setup of Task manager and its dependencies. | ||
|
||
Args: | ||
jobs_blacklist (list): Jobs that will be excluded from running |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(Optional[list[str]), not (list)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done. Can you point me to a specification for this? Thanks.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
self._backend_setup(*args, **kwargs) | ||
# TODO(aarontp): Consider instantiating a job per evidence object | ||
job_names = jobs_manager.JobsManager.GetJobNames() | ||
if jobs_blacklist or jobs_whitelist: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add a check here for specifying both? Since that will cause an exception later anyway.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See my comment below.
@@ -125,11 +137,22 @@ def add_evidence(self, evidence_): | |||
log.info('Adding new evidence: {0:s}'.format(str(evidence_))) | |||
self.evidence.append(evidence_) | |||
job_count = 0 | |||
jobs_whitelist = evidence_.config.get('jobs_whitelist', []) | |||
jobs_blacklist = evidence_.config.get('jobs_blacklist', []) | |||
if jobs_blacklist or jobs_whitelist: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See above comment about raising here instead of later
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I actually originally had a check that raised an exception here, but @berggren suggested removing it. Unless you feel strongly about this, I think I'll leave it as is since it will still raise an exception anyway. In practice this condition will be caught on start anyway (with another check that occurs during arg parse time).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PTAL
turbinia/client.py
Outdated
""" | ||
|
||
def __init__(self): | ||
def __init__(self, jobs_blacklist=None, jobs_whitelist=None): | ||
"""Initialize Turbinia Server.""" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, yeah, it was documented just above in the class attributes, but I realized that they are not actually class attributes, so I moved it here.
turbinia/jobs/manager.py
Outdated
jobs_whitelist and jobs_blacklist must not be specified at the same time. | ||
|
||
Args: | ||
jobs (list[str]): The names of the jobs to filter. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
turbinia/jobs/manager.py
Outdated
jobs_whitelist and jobs_blacklist must not be specified at the same time. | ||
|
||
Args: | ||
jobs (list[TurbiniaJob]): The names of the jobs to filter. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
"""Does setup of Task manager and its dependencies. | ||
|
||
Args: | ||
jobs_blacklist (list): Jobs that will be excluded from running |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done. Can you point me to a specification for this? Thanks.
@@ -125,11 +137,22 @@ def add_evidence(self, evidence_): | |||
log.info('Adding new evidence: {0:s}'.format(str(evidence_))) | |||
self.evidence.append(evidence_) | |||
job_count = 0 | |||
jobs_whitelist = evidence_.config.get('jobs_whitelist', []) | |||
jobs_blacklist = evidence_.config.get('jobs_blacklist', []) | |||
if jobs_blacklist or jobs_whitelist: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I actually originally had a check that raised an exception here, but @berggren suggested removing it. Unless you feel strongly about this, I think I'll leave it as is since it will still raise an exception anyway. In practice this condition will be caught on start anyway (with another check that occurs during arg parse time).
self._backend_setup(*args, **kwargs) | ||
# TODO(aarontp): Consider instantiating a job per evidence object | ||
job_names = jobs_manager.JobsManager.GetJobNames() | ||
if jobs_blacklist or jobs_whitelist: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See my comment below.
All review feedback should already be addressed
@berggren I ended up having to "dismiss" your review, though AFAIK all of the review feedback has been addressed. There was one comment I hadn't resolved, but it won't let me resolve it or comment on it now (I believe because it refers to a commit that no longer exists due to pushing a rebased-branch). If anyone knows of a better way to resolve reviews without dismissing them, please let me know. |
* Pin specific Celery/Kombu/Redis versions (google#305) * in TurbiniaTaskResult, input_evidence doesn't have to be a list (google#309) * input_evidence doesn't have to be a list * Fix exception * current pypi version of google-cloud-storage (1.13.0) requires google-cloud-core 0.28.1 (before the rename of google.cloud.iam (core) to google.api_core.iam (google#315) * Use a link to a "parent Evidence" instead of subclassing (google#296) * parent evidence * undo some simplifications for the sake of a simpler CL * Add some serialization * update docstring * Initialize attribute * set parent evidence if Evidence type is context dependant * don't pass parent_evidence at instantiation * undo linter stuff * comments * fix aim lib breaking tests * typo * Print version on start 3 (google#320) * Add files via upload * Delete turbiniactl.py * Delete turbiniactl.py * Add files via upload * Delete turbiniactl.py * Add files via upload * Update turbiniactl.py * Caps * Quick update to evidence docstrings (google#317) ... to disambiguate between _preprocess() and preprocess(). * Add Job filters (google#247) * Add job filters * fix docstrings. * update docstring * Get jobs filters working with new job manager * Refactor out FilterJobObjects into new method * Update YAPF * remove missed confict markers * Docstrings and renaming * Migrate job graph generator to use new manager (google#321) * Update Evidence local_path when it's saved (google#319) * Pin google-cloud-storage to 1.13.0 (google#326) Fixes google#325 Looks like google-cloud-storage was updated in: googleapis/google-cloud-python#6741 Which just got released as 1.13.1: https://pypi.org/project/google-cloud-storage/#history * Set image export to process all partitions (google#324) * Add --partitions all to image_export invocations * Fix typo * Explicitly set saved_paths to list (google#323) * Move version print after log level setup (google#322) * Move version print after log level setup * Remove extra whitespace * update the pystyle link (google#333) * Undefined name: Define 'unicode' in Python 3 (google#337) * Undefined name: Define 'unicode' in Python 3 __unicode()__ was removed in Python 3 because all __str__ are Unicode. [flake8](http://flake8.pycqa.org) testing of https://github.com/google/turbinia on Python 3.7.1 $ __flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics__ ``` ./tools/turbinia_job_graph.py:47:40: F821 undefined name 'unicode' parser.add_argument('filename', type=unicode, help='where to save the file') ^ 1 F821 undefined name 'unicode' 1 ``` * Placate PyLint * Added PSQ timeout to 1 week (google#336) * Error when worker version doesn't match server google#307 (google#327) * Added turbina_version to TurbinaTask * First approach * Changed to no rise error and return instead * Restored the run from run_wrapper * Changed format of strings * Changed words fixed line too long * bump version
Adds Job whitelist/blacklists. This is used when either starting the Turbinia Server, or per-request from the client.