Add flags on logs - #2720

Merged
aanand merged 4 commits into
docker:masterfrom
seguins:2227-improvements-logs
Mar 2, 2016
Merged

Add flags on logs#2720
aanand merged 4 commits into
docker:masterfrom
seguins:2227-improvements-logs

Conversation

@seguins

Copy link
Copy Markdown

This PR adds the --follow, --timestamps and --tail options on logs (#2227).

Comment threadcompose/cli/log_printer.py Outdated

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of passing these as individual properties, could we do it as a single dict log_args ?

@dnephin

Copy link
Copy Markdown

Thanks for this PR! This is looking good, although I'm not sure if we can just change the api call from attach to logs. We'll have to make sure we have reasonable test coverage in this area, and try it out manually.

The test failure is unrelated I think.

@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 874e179 to 3e1bbceCompareJanuary 22, 2016 16:29
@seguins

Copy link
Copy Markdown
Author

I transformed the logs args as a dictionary.

I added some tests, mainly acceptance. I'm sure you would like integration or units tests, but I don't know how to do that because it's mainly api calls ?

@j-san

Copy link
Copy Markdown

+1 for tail

@dnephindnephin added this to the 1.7.0 milestone Feb 5, 2016
Comment threadcompose/cli/main.py Outdated
tail = options['--tail']
if tail is not None and tail.isdigit():
tail = int(tail)
log_args['tail'] = tail

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small problem here, we should show an error if --tail is invalid instead of just ignoring it.

image_type_from_opt() is a good example for this. It lets you move this if branch into the validation function as well.

@dnephin

Copy link
Copy Markdown

Thanks! This is looking great. Couple comments around error reporting and testing.

Comment threadcompose/cli/main.py Outdated

monochrome = options['--no-color']
log_args = {}
log_args['stream'] = options['--follow']

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

stream and follow should be different things, however it looks like they were set to the same thing in docker-py. stream should say "return an iterator", where as follow is a behaviour of the API to continue to send logs or stop once it receives the latest one.

I think we need to fix docker-py to have separate params, then this should be:

logs_args['follow'] = ...

stream should always be True.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I understand the difference between stream and follow, but I'm not sure to understand the advantage of this change.

If you set follow to True, should stream always be True ?

Maybe should we open an issue on docker-py to talk about it before to merge this PR ?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I think follow=True does imply stream=True, but stream=True doesn't imply follow=True, you may still want to stream without following.

Yes, I created #934

@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 3e1bbce to 8fd4d3eCompareFebruary 15, 2016 21:04
@seguins

Copy link
Copy Markdown
Author

Thanks for the feedback, I added an error message when the tail parameter is invalid, and I rewrote some tests.

I'm waiting for the issue docker/docker-py#934 to finish this PR.

@SvenDowideit

Copy link
Copy Markdown

the documentation checker failure is due to the tutorials repo going private

#2928 will solve that when merged.

@dnephin

Copy link
Copy Markdown

Cool, the docker-py change has been merged and will be in the next release.

For now you can use a git url and git sha for the docker-py dependency in requirements.txt: For example: git+https://github.com/docker/docker-py.git@81d8caaf36159bf1accd86eab2e157bf8dd071a9#egg=docker-py

@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 8fd4d3e to 5618b07CompareFebruary 28, 2016 22:20
@seguins

Copy link
Copy Markdown
Author

I changed the docker-py dependency. Now, we always call the logs api with stream=True.

Comment threadcompose/cli/log_printer.py Outdated
output=sys.stdout,
monochrome=False,
cascade_stop=False,
log_args={'follow': False}):

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using a mutable value as a default kwarg value can lead to a lot of confusion.

Instead of this default, please use

def__init__(self, ..., log_args=None):
log_args=log_argsor {}
...

@dnephin

Copy link
Copy Markdown

This is looking good. I'm a little surprised there isn't any changes to def up(). I suspect that it's going to need to pass in follow=True, and it's a bit concerning we don't have any tests failing without it.

Comment threadcompose/cli/main.py Outdated
monochrome = options['--no-color']
log_args = {}
log_args['follow'] = options['--follow']
log_args['timestamps'] = options['--timestamps']

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor thing, but this could be a single assignment with a dictionary literal.

log_args= {
'follow': options['--follow'],
'timestamps': options['--timestamps'],
}

@seguins

Copy link
Copy Markdown
Author

Thank you for the review. I applied fixes. I removed the part with threading and I rewrite the test_logs_follow test. I'm not sure it's the best way to test this case, but I haven't found better solution.

There is no change on up because it uses the attach api instead of logapi.

@dnephin

Copy link
Copy Markdown

There is no change on up because it uses the attach api instead of log api.

up uses LogPrinter, which used to attach, but is now using logs, so I think it's no longer using attach.

@seguins

Copy link
Copy Markdown
Author

Indeed, I missed it ... Because docker-py has a backward compatibly, up still work.

Should we set explicitly follow=True ?

@dnephin

Copy link
Copy Markdown

I think it would be good to set that explicitly, yes

@seguins

Copy link
Copy Markdown
Author

up uses a convergence_plan. Convergence plan sets should_attach_logs = not detached which has for effect to call attach_log_stream method of container. This method attachs the container and stores the result in log_stream.

LogPrinter checks if log_stream is set and in this case it's not call the logs api. up will not call the log api but the attach api.

However, we need to set follow=True because it's used for displaying the end of process.

Do you think there are enough tests if I just add to the test_up_attached test : assert 'exited with code 0' in stdout ?

@dnephin

Copy link
Copy Markdown

I see, you're right it does use attach, I forgot about that. I think it's fine as is.

Closesdocker#2187
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
Closesdocker#265
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 2bbb779 to 038da4eCompareMarch 1, 2016 19:57
@seguins

Copy link
Copy Markdown
Author

I added the follow=True for up. This PR is ready for a new review.

@dnephin

Copy link
Copy Markdown

LGTM

@shin-

shin- commented Mar 1, 2016

Copy link
Copy Markdown

Might be a good idea to rerun the tests on janky? Code looks good overall.

@aanand

Copy link
Copy Markdown

LGTM

aanand added a commit that referenced this pull request Mar 2, 2016
@aanand
aanand merged commit 0b3561a into docker:masterMar 2, 2016
@dnephindnephin mentioned this pull request Mar 2, 2016
@jayhding

Copy link
Copy Markdown

@aanand would you mind to comment if this merge will be done also to libcompose, which is used by rancher-compose? Thanks.

@aanand

Copy link
Copy Markdown

@JayHaoDing It will have to be separately implemented. libcompose is not high priority at the moment - we have a Compose release very soon, so that's what we're focusing on.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@seguins@dnephin@j-san@SvenDowideit@shin-@aanand@jayhding@GordonTheTurtle
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Add flags on logs - #2720

Merged
aanand merged 4 commits into
docker:masterfrom
seguins:2227-improvements-logs
Mar 2, 2016
Merged

Add flags on logs#2720
aanand merged 4 commits into
docker:masterfrom
seguins:2227-improvements-logs

Conversation

@seguins

Copy link
Copy Markdown

This PR adds the --follow, --timestamps and --tail options on logs (#2227).

Comment threadcompose/cli/log_printer.py Outdated

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of passing these as individual properties, could we do it as a single dict log_args ?

@dnephin

Copy link
Copy Markdown

Thanks for this PR! This is looking good, although I'm not sure if we can just change the api call from attach to logs. We'll have to make sure we have reasonable test coverage in this area, and try it out manually.

The test failure is unrelated I think.

@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 874e179 to 3e1bbceCompareJanuary 22, 2016 16:29
@seguins

Copy link
Copy Markdown
Author

I transformed the logs args as a dictionary.

I added some tests, mainly acceptance. I'm sure you would like integration or units tests, but I don't know how to do that because it's mainly api calls ?

@j-san

Copy link
Copy Markdown

+1 for tail

@dnephindnephin added this to the 1.7.0 milestone Feb 5, 2016
Comment threadcompose/cli/main.py Outdated
tail = options['--tail']
if tail is not None and tail.isdigit():
tail = int(tail)
log_args['tail'] = tail

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small problem here, we should show an error if --tail is invalid instead of just ignoring it.

image_type_from_opt() is a good example for this. It lets you move this if branch into the validation function as well.

@dnephin

Copy link
Copy Markdown

Thanks! This is looking great. Couple comments around error reporting and testing.

Comment threadcompose/cli/main.py Outdated

monochrome = options['--no-color']
log_args = {}
log_args['stream'] = options['--follow']

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

stream and follow should be different things, however it looks like they were set to the same thing in docker-py. stream should say "return an iterator", where as follow is a behaviour of the API to continue to send logs or stop once it receives the latest one.

I think we need to fix docker-py to have separate params, then this should be:

logs_args['follow'] = ...

stream should always be True.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I understand the difference between stream and follow, but I'm not sure to understand the advantage of this change.

If you set follow to True, should stream always be True ?

Maybe should we open an issue on docker-py to talk about it before to merge this PR ?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I think follow=True does imply stream=True, but stream=True doesn't imply follow=True, you may still want to stream without following.

Yes, I created #934

@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 3e1bbce to 8fd4d3eCompareFebruary 15, 2016 21:04
@seguins

Copy link
Copy Markdown
Author

Thanks for the feedback, I added an error message when the tail parameter is invalid, and I rewrote some tests.

I'm waiting for the issue docker/docker-py#934 to finish this PR.

@SvenDowideit

Copy link
Copy Markdown

the documentation checker failure is due to the tutorials repo going private

#2928 will solve that when merged.

@dnephin

Copy link
Copy Markdown

Cool, the docker-py change has been merged and will be in the next release.

For now you can use a git url and git sha for the docker-py dependency in requirements.txt: For example: git+https://github.com/docker/docker-py.git@81d8caaf36159bf1accd86eab2e157bf8dd071a9#egg=docker-py

@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 8fd4d3e to 5618b07CompareFebruary 28, 2016 22:20
@seguins

Copy link
Copy Markdown
Author

I changed the docker-py dependency. Now, we always call the logs api with stream=True.

Comment threadcompose/cli/log_printer.py Outdated
output=sys.stdout,
monochrome=False,
cascade_stop=False,
log_args={'follow': False}):

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using a mutable value as a default kwarg value can lead to a lot of confusion.

Instead of this default, please use

def__init__(self, ..., log_args=None):
log_args=log_argsor {}
...

@dnephin

Copy link
Copy Markdown

This is looking good. I'm a little surprised there isn't any changes to def up(). I suspect that it's going to need to pass in follow=True, and it's a bit concerning we don't have any tests failing without it.

Comment threadcompose/cli/main.py Outdated
monochrome = options['--no-color']
log_args = {}
log_args['follow'] = options['--follow']
log_args['timestamps'] = options['--timestamps']

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor thing, but this could be a single assignment with a dictionary literal.

log_args= {
'follow': options['--follow'],
'timestamps': options['--timestamps'],
}

@seguins

Copy link
Copy Markdown
Author

Thank you for the review. I applied fixes. I removed the part with threading and I rewrite the test_logs_follow test. I'm not sure it's the best way to test this case, but I haven't found better solution.

There is no change on up because it uses the attach api instead of logapi.

@dnephin

Copy link
Copy Markdown

There is no change on up because it uses the attach api instead of log api.

up uses LogPrinter, which used to attach, but is now using logs, so I think it's no longer using attach.

@seguins

Copy link
Copy Markdown
Author

Indeed, I missed it ... Because docker-py has a backward compatibly, up still work.

Should we set explicitly follow=True ?

@dnephin

Copy link
Copy Markdown

I think it would be good to set that explicitly, yes

@seguins

Copy link
Copy Markdown
Author

up uses a convergence_plan. Convergence plan sets should_attach_logs = not detached which has for effect to call attach_log_stream method of container. This method attachs the container and stores the result in log_stream.

LogPrinter checks if log_stream is set and in this case it's not call the logs api. up will not call the log api but the attach api.

However, we need to set follow=True because it's used for displaying the end of process.

Do you think there are enough tests if I just add to the test_up_attached test : assert 'exited with code 0' in stdout ?

@dnephin

Copy link
Copy Markdown

I see, you're right it does use attach, I forgot about that. I think it's fine as is.

Closesdocker#2187
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
Closesdocker#265
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 2bbb779 to 038da4eCompareMarch 1, 2016 19:57
@seguins

Copy link
Copy Markdown
Author

I added the follow=True for up. This PR is ready for a new review.

@dnephin

Copy link
Copy Markdown

LGTM

@shin-

shin- commented Mar 1, 2016

Copy link
Copy Markdown

Might be a good idea to rerun the tests on janky? Code looks good overall.

@aanand

Copy link
Copy Markdown

LGTM

aanand added a commit that referenced this pull request Mar 2, 2016
@aanand
aanand merged commit 0b3561a into docker:masterMar 2, 2016
@dnephindnephin mentioned this pull request Mar 2, 2016
@jayhding

Copy link
Copy Markdown

@aanand would you mind to comment if this merge will be done also to libcompose, which is used by rancher-compose? Thanks.

@aanand

Copy link
Copy Markdown

@JayHaoDing It will have to be separately implemented. libcompose is not high priority at the moment - we have a Compose release very soon, so that's what we're focusing on.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@seguins@dnephin@j-san@SvenDowideit@shin-@aanand@jayhding@GordonTheTurtle
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add flags on logs - #2720

Merged
aanand merged 4 commits into
docker:masterfrom
seguins:2227-improvements-logs
Mar 2, 2016
Merged

Add flags on logs#2720
aanand merged 4 commits into
docker:masterfrom
seguins:2227-improvements-logs

Conversation

@seguins

Copy link
Copy Markdown

This PR adds the --follow, --timestamps and --tail options on logs (#2227).

Comment threadcompose/cli/log_printer.py Outdated

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of passing these as individual properties, could we do it as a single dict log_args ?

@dnephin

Copy link
Copy Markdown

Thanks for this PR! This is looking good, although I'm not sure if we can just change the api call from attach to logs. We'll have to make sure we have reasonable test coverage in this area, and try it out manually.

The test failure is unrelated I think.

@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 874e179 to 3e1bbceCompareJanuary 22, 2016 16:29
@seguins

Copy link
Copy Markdown
Author

I transformed the logs args as a dictionary.

I added some tests, mainly acceptance. I'm sure you would like integration or units tests, but I don't know how to do that because it's mainly api calls ?

@j-san

Copy link
Copy Markdown

+1 for tail

@dnephindnephin added this to the 1.7.0 milestone Feb 5, 2016
Comment threadcompose/cli/main.py Outdated
tail = options['--tail']
if tail is not None and tail.isdigit():
tail = int(tail)
log_args['tail'] = tail

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small problem here, we should show an error if --tail is invalid instead of just ignoring it.

image_type_from_opt() is a good example for this. It lets you move this if branch into the validation function as well.

@dnephin

Copy link
Copy Markdown

Thanks! This is looking great. Couple comments around error reporting and testing.

Comment threadcompose/cli/main.py Outdated

monochrome = options['--no-color']
log_args = {}
log_args['stream'] = options['--follow']

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

stream and follow should be different things, however it looks like they were set to the same thing in docker-py. stream should say "return an iterator", where as follow is a behaviour of the API to continue to send logs or stop once it receives the latest one.

I think we need to fix docker-py to have separate params, then this should be:

logs_args['follow'] = ...

stream should always be True.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I understand the difference between stream and follow, but I'm not sure to understand the advantage of this change.

If you set follow to True, should stream always be True ?

Maybe should we open an issue on docker-py to talk about it before to merge this PR ?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I think follow=True does imply stream=True, but stream=True doesn't imply follow=True, you may still want to stream without following.

Yes, I created #934

@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 3e1bbce to 8fd4d3eCompareFebruary 15, 2016 21:04
@seguins

Copy link
Copy Markdown
Author

Thanks for the feedback, I added an error message when the tail parameter is invalid, and I rewrote some tests.

I'm waiting for the issue docker/docker-py#934 to finish this PR.

@SvenDowideit

Copy link
Copy Markdown

the documentation checker failure is due to the tutorials repo going private

#2928 will solve that when merged.

@dnephin

Copy link
Copy Markdown

Cool, the docker-py change has been merged and will be in the next release.

For now you can use a git url and git sha for the docker-py dependency in requirements.txt: For example: git+https://github.com/docker/docker-py.git@81d8caaf36159bf1accd86eab2e157bf8dd071a9#egg=docker-py

@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 8fd4d3e to 5618b07CompareFebruary 28, 2016 22:20
@seguins

Copy link
Copy Markdown
Author

I changed the docker-py dependency. Now, we always call the logs api with stream=True.

Comment threadcompose/cli/log_printer.py Outdated
output=sys.stdout,
monochrome=False,
cascade_stop=False,
log_args={'follow': False}):

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using a mutable value as a default kwarg value can lead to a lot of confusion.

Instead of this default, please use

def__init__(self, ..., log_args=None):
log_args=log_argsor {}
...

@dnephin

Copy link
Copy Markdown

This is looking good. I'm a little surprised there isn't any changes to def up(). I suspect that it's going to need to pass in follow=True, and it's a bit concerning we don't have any tests failing without it.

Comment threadcompose/cli/main.py Outdated
monochrome = options['--no-color']
log_args = {}
log_args['follow'] = options['--follow']
log_args['timestamps'] = options['--timestamps']

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor thing, but this could be a single assignment with a dictionary literal.

log_args= {
'follow': options['--follow'],
'timestamps': options['--timestamps'],
}

@seguins

Copy link
Copy Markdown
Author

Thank you for the review. I applied fixes. I removed the part with threading and I rewrite the test_logs_follow test. I'm not sure it's the best way to test this case, but I haven't found better solution.

There is no change on up because it uses the attach api instead of logapi.

@dnephin

Copy link
Copy Markdown

There is no change on up because it uses the attach api instead of log api.

up uses LogPrinter, which used to attach, but is now using logs, so I think it's no longer using attach.

@seguins

Copy link
Copy Markdown
Author

Indeed, I missed it ... Because docker-py has a backward compatibly, up still work.

Should we set explicitly follow=True ?

@dnephin

Copy link
Copy Markdown

I think it would be good to set that explicitly, yes

@seguins

Copy link
Copy Markdown
Author

up uses a convergence_plan. Convergence plan sets should_attach_logs = not detached which has for effect to call attach_log_stream method of container. This method attachs the container and stores the result in log_stream.

LogPrinter checks if log_stream is set and in this case it's not call the logs api. up will not call the log api but the attach api.

However, we need to set follow=True because it's used for displaying the end of process.

Do you think there are enough tests if I just add to the test_up_attached test : assert 'exited with code 0' in stdout ?

@dnephin

Copy link
Copy Markdown

I see, you're right it does use attach, I forgot about that. I think it's fine as is.

Closesdocker#2187
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
Closesdocker#265
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 2bbb779 to 038da4eCompareMarch 1, 2016 19:57
@seguins

Copy link
Copy Markdown
Author

I added the follow=True for up. This PR is ready for a new review.

@dnephin

Copy link
Copy Markdown

LGTM

@shin-

shin- commented Mar 1, 2016

Copy link
Copy Markdown

Might be a good idea to rerun the tests on janky? Code looks good overall.

@aanand

Copy link
Copy Markdown

LGTM

aanand added a commit that referenced this pull request Mar 2, 2016
@aanand
aanand merged commit 0b3561a into docker:masterMar 2, 2016
@dnephindnephin mentioned this pull request Mar 2, 2016
@jayhding

Copy link
Copy Markdown

@aanand would you mind to comment if this merge will be done also to libcompose, which is used by rancher-compose? Thanks.

@aanand

Copy link
Copy Markdown

@JayHaoDing It will have to be separately implemented. libcompose is not high priority at the moment - we have a Compose release very soon, so that's what we're focusing on.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@seguins@dnephin@j-san@SvenDowideit@shin-@aanand@jayhding@GordonTheTurtle
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add flags on logs - #2720

Merged
aanand merged 4 commits into
docker:masterfrom
seguins:2227-improvements-logs
Mar 2, 2016
Merged

Add flags on logs#2720
aanand merged 4 commits into
docker:masterfrom
seguins:2227-improvements-logs

Conversation

@seguins

Copy link
Copy Markdown

This PR adds the --follow, --timestamps and --tail options on logs (#2227).

Comment threadcompose/cli/log_printer.py Outdated

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of passing these as individual properties, could we do it as a single dict log_args ?

@dnephin

Copy link
Copy Markdown

Thanks for this PR! This is looking good, although I'm not sure if we can just change the api call from attach to logs. We'll have to make sure we have reasonable test coverage in this area, and try it out manually.

The test failure is unrelated I think.

@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 874e179 to 3e1bbceCompareJanuary 22, 2016 16:29
@seguins

Copy link
Copy Markdown
Author

I transformed the logs args as a dictionary.

I added some tests, mainly acceptance. I'm sure you would like integration or units tests, but I don't know how to do that because it's mainly api calls ?

@j-san

Copy link
Copy Markdown

+1 for tail

@dnephindnephin added this to the 1.7.0 milestone Feb 5, 2016
Comment threadcompose/cli/main.py Outdated
tail = options['--tail']
if tail is not None and tail.isdigit():
tail = int(tail)
log_args['tail'] = tail

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small problem here, we should show an error if --tail is invalid instead of just ignoring it.

image_type_from_opt() is a good example for this. It lets you move this if branch into the validation function as well.

@dnephin

Copy link
Copy Markdown

Thanks! This is looking great. Couple comments around error reporting and testing.

Comment threadcompose/cli/main.py Outdated

monochrome = options['--no-color']
log_args = {}
log_args['stream'] = options['--follow']

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

stream and follow should be different things, however it looks like they were set to the same thing in docker-py. stream should say "return an iterator", where as follow is a behaviour of the API to continue to send logs or stop once it receives the latest one.

I think we need to fix docker-py to have separate params, then this should be:

logs_args['follow'] = ...

stream should always be True.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I understand the difference between stream and follow, but I'm not sure to understand the advantage of this change.

If you set follow to True, should stream always be True ?

Maybe should we open an issue on docker-py to talk about it before to merge this PR ?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I think follow=True does imply stream=True, but stream=True doesn't imply follow=True, you may still want to stream without following.

Yes, I created #934

@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 3e1bbce to 8fd4d3eCompareFebruary 15, 2016 21:04
@seguins

Copy link
Copy Markdown
Author

Thanks for the feedback, I added an error message when the tail parameter is invalid, and I rewrote some tests.

I'm waiting for the issue docker/docker-py#934 to finish this PR.

@SvenDowideit

Copy link
Copy Markdown

the documentation checker failure is due to the tutorials repo going private

#2928 will solve that when merged.

@dnephin

Copy link
Copy Markdown

Cool, the docker-py change has been merged and will be in the next release.

For now you can use a git url and git sha for the docker-py dependency in requirements.txt: For example: git+https://github.com/docker/docker-py.git@81d8caaf36159bf1accd86eab2e157bf8dd071a9#egg=docker-py

@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 8fd4d3e to 5618b07CompareFebruary 28, 2016 22:20
@seguins

Copy link
Copy Markdown
Author

I changed the docker-py dependency. Now, we always call the logs api with stream=True.

Comment threadcompose/cli/log_printer.py Outdated
output=sys.stdout,
monochrome=False,
cascade_stop=False,
log_args={'follow': False}):

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using a mutable value as a default kwarg value can lead to a lot of confusion.

Instead of this default, please use

def__init__(self, ..., log_args=None):
log_args=log_argsor {}
...

@dnephin

Copy link
Copy Markdown

This is looking good. I'm a little surprised there isn't any changes to def up(). I suspect that it's going to need to pass in follow=True, and it's a bit concerning we don't have any tests failing without it.

Comment threadcompose/cli/main.py Outdated
monochrome = options['--no-color']
log_args = {}
log_args['follow'] = options['--follow']
log_args['timestamps'] = options['--timestamps']

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor thing, but this could be a single assignment with a dictionary literal.

log_args= {
'follow': options['--follow'],
'timestamps': options['--timestamps'],
}

@seguins

Copy link
Copy Markdown
Author

Thank you for the review. I applied fixes. I removed the part with threading and I rewrite the test_logs_follow test. I'm not sure it's the best way to test this case, but I haven't found better solution.

There is no change on up because it uses the attach api instead of logapi.

@dnephin

Copy link
Copy Markdown

There is no change on up because it uses the attach api instead of log api.

up uses LogPrinter, which used to attach, but is now using logs, so I think it's no longer using attach.

@seguins

Copy link
Copy Markdown
Author

Indeed, I missed it ... Because docker-py has a backward compatibly, up still work.

Should we set explicitly follow=True ?

@dnephin

Copy link
Copy Markdown

I think it would be good to set that explicitly, yes

@seguins

Copy link
Copy Markdown
Author

up uses a convergence_plan. Convergence plan sets should_attach_logs = not detached which has for effect to call attach_log_stream method of container. This method attachs the container and stores the result in log_stream.

LogPrinter checks if log_stream is set and in this case it's not call the logs api. up will not call the log api but the attach api.

However, we need to set follow=True because it's used for displaying the end of process.

Do you think there are enough tests if I just add to the test_up_attached test : assert 'exited with code 0' in stdout ?

@dnephin

Copy link
Copy Markdown

I see, you're right it does use attach, I forgot about that. I think it's fine as is.

Closesdocker#2187
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
Closesdocker#265
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 2bbb779 to 038da4eCompareMarch 1, 2016 19:57
@seguins

Copy link
Copy Markdown
Author

I added the follow=True for up. This PR is ready for a new review.

@dnephin

Copy link
Copy Markdown

LGTM

@shin-

shin- commented Mar 1, 2016

Copy link
Copy Markdown

Might be a good idea to rerun the tests on janky? Code looks good overall.

@aanand

Copy link
Copy Markdown

LGTM

aanand added a commit that referenced this pull request Mar 2, 2016
@aanand
aanand merged commit 0b3561a into docker:masterMar 2, 2016
@dnephindnephin mentioned this pull request Mar 2, 2016
@jayhding

Copy link
Copy Markdown

@aanand would you mind to comment if this merge will be done also to libcompose, which is used by rancher-compose? Thanks.

@aanand

Copy link
Copy Markdown

@JayHaoDing It will have to be separately implemented. libcompose is not high priority at the moment - we have a Compose release very soon, so that's what we're focusing on.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@seguins@dnephin@j-san@SvenDowideit@shin-@aanand@jayhding@GordonTheTurtle
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Add flags on logs - #2720

Merged
aanand merged 4 commits into
docker:masterfrom
seguins:2227-improvements-logs
Mar 2, 2016
Merged

Add flags on logs#2720
aanand merged 4 commits into
docker:masterfrom
seguins:2227-improvements-logs

Conversation

@seguins

Copy link
Copy Markdown

This PR adds the --follow, --timestamps and --tail options on logs (#2227).

Comment threadcompose/cli/log_printer.py Outdated

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of passing these as individual properties, could we do it as a single dict log_args ?

@dnephin

Copy link
Copy Markdown

Thanks for this PR! This is looking good, although I'm not sure if we can just change the api call from attach to logs. We'll have to make sure we have reasonable test coverage in this area, and try it out manually.

The test failure is unrelated I think.

@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 874e179 to 3e1bbceCompareJanuary 22, 2016 16:29
@seguins

Copy link
Copy Markdown
Author

I transformed the logs args as a dictionary.

I added some tests, mainly acceptance. I'm sure you would like integration or units tests, but I don't know how to do that because it's mainly api calls ?

@j-san

Copy link
Copy Markdown

+1 for tail

@dnephindnephin added this to the 1.7.0 milestone Feb 5, 2016
Comment threadcompose/cli/main.py Outdated
tail = options['--tail']
if tail is not None and tail.isdigit():
tail = int(tail)
log_args['tail'] = tail

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small problem here, we should show an error if --tail is invalid instead of just ignoring it.

image_type_from_opt() is a good example for this. It lets you move this if branch into the validation function as well.

@dnephin

Copy link
Copy Markdown

Thanks! This is looking great. Couple comments around error reporting and testing.

Comment threadcompose/cli/main.py Outdated

monochrome = options['--no-color']
log_args = {}
log_args['stream'] = options['--follow']

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

stream and follow should be different things, however it looks like they were set to the same thing in docker-py. stream should say "return an iterator", where as follow is a behaviour of the API to continue to send logs or stop once it receives the latest one.

I think we need to fix docker-py to have separate params, then this should be:

logs_args['follow'] = ...

stream should always be True.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I understand the difference between stream and follow, but I'm not sure to understand the advantage of this change.

If you set follow to True, should stream always be True ?

Maybe should we open an issue on docker-py to talk about it before to merge this PR ?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I think follow=True does imply stream=True, but stream=True doesn't imply follow=True, you may still want to stream without following.

Yes, I created #934

@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 3e1bbce to 8fd4d3eCompareFebruary 15, 2016 21:04
@seguins

Copy link
Copy Markdown
Author

Thanks for the feedback, I added an error message when the tail parameter is invalid, and I rewrote some tests.

I'm waiting for the issue docker/docker-py#934 to finish this PR.

@SvenDowideit

Copy link
Copy Markdown

the documentation checker failure is due to the tutorials repo going private

#2928 will solve that when merged.

@dnephin

Copy link
Copy Markdown

Cool, the docker-py change has been merged and will be in the next release.

For now you can use a git url and git sha for the docker-py dependency in requirements.txt: For example: git+https://github.com/docker/docker-py.git@81d8caaf36159bf1accd86eab2e157bf8dd071a9#egg=docker-py

@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 8fd4d3e to 5618b07CompareFebruary 28, 2016 22:20
@seguins

Copy link
Copy Markdown
Author

I changed the docker-py dependency. Now, we always call the logs api with stream=True.

Comment threadcompose/cli/log_printer.py Outdated
output=sys.stdout,
monochrome=False,
cascade_stop=False,
log_args={'follow': False}):

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using a mutable value as a default kwarg value can lead to a lot of confusion.

Instead of this default, please use

def__init__(self, ..., log_args=None):
log_args=log_argsor {}
...

@dnephin

Copy link
Copy Markdown

This is looking good. I'm a little surprised there isn't any changes to def up(). I suspect that it's going to need to pass in follow=True, and it's a bit concerning we don't have any tests failing without it.

Comment threadcompose/cli/main.py Outdated
monochrome = options['--no-color']
log_args = {}
log_args['follow'] = options['--follow']
log_args['timestamps'] = options['--timestamps']

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor thing, but this could be a single assignment with a dictionary literal.

log_args= {
'follow': options['--follow'],
'timestamps': options['--timestamps'],
}

@seguins

Copy link
Copy Markdown
Author

Thank you for the review. I applied fixes. I removed the part with threading and I rewrite the test_logs_follow test. I'm not sure it's the best way to test this case, but I haven't found better solution.

There is no change on up because it uses the attach api instead of logapi.

@dnephin

Copy link
Copy Markdown

There is no change on up because it uses the attach api instead of log api.

up uses LogPrinter, which used to attach, but is now using logs, so I think it's no longer using attach.

@seguins

Copy link
Copy Markdown
Author

Indeed, I missed it ... Because docker-py has a backward compatibly, up still work.

Should we set explicitly follow=True ?

@dnephin

Copy link
Copy Markdown

I think it would be good to set that explicitly, yes

@seguins

Copy link
Copy Markdown
Author

up uses a convergence_plan. Convergence plan sets should_attach_logs = not detached which has for effect to call attach_log_stream method of container. This method attachs the container and stores the result in log_stream.

LogPrinter checks if log_stream is set and in this case it's not call the logs api. up will not call the log api but the attach api.

However, we need to set follow=True because it's used for displaying the end of process.

Do you think there are enough tests if I just add to the test_up_attached test : assert 'exited with code 0' in stdout ?

@dnephin

Copy link
Copy Markdown

I see, you're right it does use attach, I forgot about that. I think it's fine as is.

Closesdocker#2187
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
Closesdocker#265
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 2bbb779 to 038da4eCompareMarch 1, 2016 19:57
@seguins

Copy link
Copy Markdown
Author

I added the follow=True for up. This PR is ready for a new review.

@dnephin

Copy link
Copy Markdown

LGTM

@shin-

shin- commented Mar 1, 2016

Copy link
Copy Markdown

Might be a good idea to rerun the tests on janky? Code looks good overall.

@aanand

Copy link
Copy Markdown

LGTM

aanand added a commit that referenced this pull request Mar 2, 2016
@aanand
aanand merged commit 0b3561a into docker:masterMar 2, 2016
@dnephindnephin mentioned this pull request Mar 2, 2016
@jayhding

Copy link
Copy Markdown

@aanand would you mind to comment if this merge will be done also to libcompose, which is used by rancher-compose? Thanks.

@aanand

Copy link
Copy Markdown

@JayHaoDing It will have to be separately implemented. libcompose is not high priority at the moment - we have a Compose release very soon, so that's what we're focusing on.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@seguins@dnephin@j-san@SvenDowideit@shin-@aanand@jayhding@GordonTheTurtle
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add flags on logs - #2720

Merged
aanand merged 4 commits into
docker:masterfrom
seguins:2227-improvements-logs
Mar 2, 2016
Merged

Add flags on logs#2720
aanand merged 4 commits into
docker:masterfrom
seguins:2227-improvements-logs

Conversation

@seguins

Copy link
Copy Markdown

This PR adds the --follow, --timestamps and --tail options on logs (#2227).

Comment threadcompose/cli/log_printer.py Outdated

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of passing these as individual properties, could we do it as a single dict log_args ?

@dnephin

Copy link
Copy Markdown

Thanks for this PR! This is looking good, although I'm not sure if we can just change the api call from attach to logs. We'll have to make sure we have reasonable test coverage in this area, and try it out manually.

The test failure is unrelated I think.

@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 874e179 to 3e1bbceCompareJanuary 22, 2016 16:29
@seguins

Copy link
Copy Markdown
Author

I transformed the logs args as a dictionary.

I added some tests, mainly acceptance. I'm sure you would like integration or units tests, but I don't know how to do that because it's mainly api calls ?

@j-san

Copy link
Copy Markdown

+1 for tail

@dnephindnephin added this to the 1.7.0 milestone Feb 5, 2016
Comment threadcompose/cli/main.py Outdated
tail = options['--tail']
if tail is not None and tail.isdigit():
tail = int(tail)
log_args['tail'] = tail

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small problem here, we should show an error if --tail is invalid instead of just ignoring it.

image_type_from_opt() is a good example for this. It lets you move this if branch into the validation function as well.

@dnephin

Copy link
Copy Markdown

Thanks! This is looking great. Couple comments around error reporting and testing.

Comment threadcompose/cli/main.py Outdated

monochrome = options['--no-color']
log_args = {}
log_args['stream'] = options['--follow']

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

stream and follow should be different things, however it looks like they were set to the same thing in docker-py. stream should say "return an iterator", where as follow is a behaviour of the API to continue to send logs or stop once it receives the latest one.

I think we need to fix docker-py to have separate params, then this should be:

logs_args['follow'] = ...

stream should always be True.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I understand the difference between stream and follow, but I'm not sure to understand the advantage of this change.

If you set follow to True, should stream always be True ?

Maybe should we open an issue on docker-py to talk about it before to merge this PR ?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I think follow=True does imply stream=True, but stream=True doesn't imply follow=True, you may still want to stream without following.

Yes, I created #934

@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 3e1bbce to 8fd4d3eCompareFebruary 15, 2016 21:04
@seguins

Copy link
Copy Markdown
Author

Thanks for the feedback, I added an error message when the tail parameter is invalid, and I rewrote some tests.

I'm waiting for the issue docker/docker-py#934 to finish this PR.

@SvenDowideit

Copy link
Copy Markdown

the documentation checker failure is due to the tutorials repo going private

#2928 will solve that when merged.

@dnephin

Copy link
Copy Markdown

Cool, the docker-py change has been merged and will be in the next release.

For now you can use a git url and git sha for the docker-py dependency in requirements.txt: For example: git+https://github.com/docker/docker-py.git@81d8caaf36159bf1accd86eab2e157bf8dd071a9#egg=docker-py

@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 8fd4d3e to 5618b07CompareFebruary 28, 2016 22:20
@seguins

Copy link
Copy Markdown
Author

I changed the docker-py dependency. Now, we always call the logs api with stream=True.

Comment threadcompose/cli/log_printer.py Outdated
output=sys.stdout,
monochrome=False,
cascade_stop=False,
log_args={'follow': False}):

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using a mutable value as a default kwarg value can lead to a lot of confusion.

Instead of this default, please use

def__init__(self, ..., log_args=None):
log_args=log_argsor {}
...

@dnephin

Copy link
Copy Markdown

This is looking good. I'm a little surprised there isn't any changes to def up(). I suspect that it's going to need to pass in follow=True, and it's a bit concerning we don't have any tests failing without it.

Comment threadcompose/cli/main.py Outdated
monochrome = options['--no-color']
log_args = {}
log_args['follow'] = options['--follow']
log_args['timestamps'] = options['--timestamps']

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor thing, but this could be a single assignment with a dictionary literal.

log_args= {
'follow': options['--follow'],
'timestamps': options['--timestamps'],
}

@seguins

Copy link
Copy Markdown
Author

Thank you for the review. I applied fixes. I removed the part with threading and I rewrite the test_logs_follow test. I'm not sure it's the best way to test this case, but I haven't found better solution.

There is no change on up because it uses the attach api instead of logapi.

@dnephin

Copy link
Copy Markdown

There is no change on up because it uses the attach api instead of log api.

up uses LogPrinter, which used to attach, but is now using logs, so I think it's no longer using attach.

@seguins

Copy link
Copy Markdown
Author

Indeed, I missed it ... Because docker-py has a backward compatibly, up still work.

Should we set explicitly follow=True ?

@dnephin

Copy link
Copy Markdown

I think it would be good to set that explicitly, yes

@seguins

Copy link
Copy Markdown
Author

up uses a convergence_plan. Convergence plan sets should_attach_logs = not detached which has for effect to call attach_log_stream method of container. This method attachs the container and stores the result in log_stream.

LogPrinter checks if log_stream is set and in this case it's not call the logs api. up will not call the log api but the attach api.

However, we need to set follow=True because it's used for displaying the end of process.

Do you think there are enough tests if I just add to the test_up_attached test : assert 'exited with code 0' in stdout ?

@dnephin

Copy link
Copy Markdown

I see, you're right it does use attach, I forgot about that. I think it's fine as is.

Closesdocker#2187
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
Closesdocker#265
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 2bbb779 to 038da4eCompareMarch 1, 2016 19:57
@seguins

Copy link
Copy Markdown
Author

I added the follow=True for up. This PR is ready for a new review.

@dnephin

Copy link
Copy Markdown

LGTM

@shin-

shin- commented Mar 1, 2016

Copy link
Copy Markdown

Might be a good idea to rerun the tests on janky? Code looks good overall.

@aanand

Copy link
Copy Markdown

LGTM

aanand added a commit that referenced this pull request Mar 2, 2016
@aanand
aanand merged commit 0b3561a into docker:masterMar 2, 2016
@dnephindnephin mentioned this pull request Mar 2, 2016
@jayhding

Copy link
Copy Markdown

@aanand would you mind to comment if this merge will be done also to libcompose, which is used by rancher-compose? Thanks.

@aanand

Copy link
Copy Markdown

@JayHaoDing It will have to be separately implemented. libcompose is not high priority at the moment - we have a Compose release very soon, so that's what we're focusing on.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@seguins@dnephin@j-san@SvenDowideit@shin-@aanand@jayhding@GordonTheTurtle
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add flags on logs - #2720

Merged
aanand merged 4 commits into
docker:masterfrom
seguins:2227-improvements-logs
Mar 2, 2016
Merged

Add flags on logs#2720
aanand merged 4 commits into
docker:masterfrom
seguins:2227-improvements-logs

Conversation

@seguins

Copy link
Copy Markdown

This PR adds the --follow, --timestamps and --tail options on logs (#2227).

Comment threadcompose/cli/log_printer.py Outdated

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of passing these as individual properties, could we do it as a single dict log_args ?

@dnephin

Copy link
Copy Markdown

Thanks for this PR! This is looking good, although I'm not sure if we can just change the api call from attach to logs. We'll have to make sure we have reasonable test coverage in this area, and try it out manually.

The test failure is unrelated I think.

@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 874e179 to 3e1bbceCompareJanuary 22, 2016 16:29
@seguins

Copy link
Copy Markdown
Author

I transformed the logs args as a dictionary.

I added some tests, mainly acceptance. I'm sure you would like integration or units tests, but I don't know how to do that because it's mainly api calls ?

@j-san

Copy link
Copy Markdown

+1 for tail

@dnephindnephin added this to the 1.7.0 milestone Feb 5, 2016
Comment threadcompose/cli/main.py Outdated
tail = options['--tail']
if tail is not None and tail.isdigit():
tail = int(tail)
log_args['tail'] = tail

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small problem here, we should show an error if --tail is invalid instead of just ignoring it.

image_type_from_opt() is a good example for this. It lets you move this if branch into the validation function as well.

@dnephin

Copy link
Copy Markdown

Thanks! This is looking great. Couple comments around error reporting and testing.

Comment threadcompose/cli/main.py Outdated

monochrome = options['--no-color']
log_args = {}
log_args['stream'] = options['--follow']

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

stream and follow should be different things, however it looks like they were set to the same thing in docker-py. stream should say "return an iterator", where as follow is a behaviour of the API to continue to send logs or stop once it receives the latest one.

I think we need to fix docker-py to have separate params, then this should be:

logs_args['follow'] = ...

stream should always be True.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I understand the difference between stream and follow, but I'm not sure to understand the advantage of this change.

If you set follow to True, should stream always be True ?

Maybe should we open an issue on docker-py to talk about it before to merge this PR ?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I think follow=True does imply stream=True, but stream=True doesn't imply follow=True, you may still want to stream without following.

Yes, I created #934

@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 3e1bbce to 8fd4d3eCompareFebruary 15, 2016 21:04
@seguins

Copy link
Copy Markdown
Author

Thanks for the feedback, I added an error message when the tail parameter is invalid, and I rewrote some tests.

I'm waiting for the issue docker/docker-py#934 to finish this PR.

@SvenDowideit

Copy link
Copy Markdown

the documentation checker failure is due to the tutorials repo going private

#2928 will solve that when merged.

@dnephin

Copy link
Copy Markdown

Cool, the docker-py change has been merged and will be in the next release.

For now you can use a git url and git sha for the docker-py dependency in requirements.txt: For example: git+https://github.com/docker/docker-py.git@81d8caaf36159bf1accd86eab2e157bf8dd071a9#egg=docker-py

@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 8fd4d3e to 5618b07CompareFebruary 28, 2016 22:20
@seguins

Copy link
Copy Markdown
Author

I changed the docker-py dependency. Now, we always call the logs api with stream=True.

Comment threadcompose/cli/log_printer.py Outdated
output=sys.stdout,
monochrome=False,
cascade_stop=False,
log_args={'follow': False}):

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using a mutable value as a default kwarg value can lead to a lot of confusion.

Instead of this default, please use

def__init__(self, ..., log_args=None):
log_args=log_argsor {}
...

@dnephin

Copy link
Copy Markdown

This is looking good. I'm a little surprised there isn't any changes to def up(). I suspect that it's going to need to pass in follow=True, and it's a bit concerning we don't have any tests failing without it.

Comment threadcompose/cli/main.py Outdated
monochrome = options['--no-color']
log_args = {}
log_args['follow'] = options['--follow']
log_args['timestamps'] = options['--timestamps']

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor thing, but this could be a single assignment with a dictionary literal.

log_args= {
'follow': options['--follow'],
'timestamps': options['--timestamps'],
}

@seguins

Copy link
Copy Markdown
Author

Thank you for the review. I applied fixes. I removed the part with threading and I rewrite the test_logs_follow test. I'm not sure it's the best way to test this case, but I haven't found better solution.

There is no change on up because it uses the attach api instead of logapi.

@dnephin

Copy link
Copy Markdown

There is no change on up because it uses the attach api instead of log api.

up uses LogPrinter, which used to attach, but is now using logs, so I think it's no longer using attach.

@seguins

Copy link
Copy Markdown
Author

Indeed, I missed it ... Because docker-py has a backward compatibly, up still work.

Should we set explicitly follow=True ?

@dnephin

Copy link
Copy Markdown

I think it would be good to set that explicitly, yes

@seguins

Copy link
Copy Markdown
Author

up uses a convergence_plan. Convergence plan sets should_attach_logs = not detached which has for effect to call attach_log_stream method of container. This method attachs the container and stores the result in log_stream.

LogPrinter checks if log_stream is set and in this case it's not call the logs api. up will not call the log api but the attach api.

However, we need to set follow=True because it's used for displaying the end of process.

Do you think there are enough tests if I just add to the test_up_attached test : assert 'exited with code 0' in stdout ?

@dnephin

Copy link
Copy Markdown

I see, you're right it does use attach, I forgot about that. I think it's fine as is.

Closesdocker#2187
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
Closesdocker#265
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 2bbb779 to 038da4eCompareMarch 1, 2016 19:57
@seguins

Copy link
Copy Markdown
Author

I added the follow=True for up. This PR is ready for a new review.

@dnephin

Copy link
Copy Markdown

LGTM

@shin-

shin- commented Mar 1, 2016

Copy link
Copy Markdown

Might be a good idea to rerun the tests on janky? Code looks good overall.

@aanand

Copy link
Copy Markdown

LGTM

aanand added a commit that referenced this pull request Mar 2, 2016
@aanand
aanand merged commit 0b3561a into docker:masterMar 2, 2016
@dnephindnephin mentioned this pull request Mar 2, 2016
@jayhding

Copy link
Copy Markdown

@aanand would you mind to comment if this merge will be done also to libcompose, which is used by rancher-compose? Thanks.

@aanand

Copy link
Copy Markdown

@JayHaoDing It will have to be separately implemented. libcompose is not high priority at the moment - we have a Compose release very soon, so that's what we're focusing on.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@seguins@dnephin@j-san@SvenDowideit@shin-@aanand@jayhding@GordonTheTurtle
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Add flags on logs - #2720

Merged
aanand merged 4 commits into
docker:masterfrom
seguins:2227-improvements-logs
Mar 2, 2016
Merged

Add flags on logs#2720
aanand merged 4 commits into
docker:masterfrom
seguins:2227-improvements-logs

Conversation

@seguins

Copy link
Copy Markdown

This PR adds the --follow, --timestamps and --tail options on logs (#2227).

Comment threadcompose/cli/log_printer.py Outdated

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of passing these as individual properties, could we do it as a single dict log_args ?

@dnephin

Copy link
Copy Markdown

Thanks for this PR! This is looking good, although I'm not sure if we can just change the api call from attach to logs. We'll have to make sure we have reasonable test coverage in this area, and try it out manually.

The test failure is unrelated I think.

@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 874e179 to 3e1bbceCompareJanuary 22, 2016 16:29
@seguins

Copy link
Copy Markdown
Author

I transformed the logs args as a dictionary.

I added some tests, mainly acceptance. I'm sure you would like integration or units tests, but I don't know how to do that because it's mainly api calls ?

@j-san

Copy link
Copy Markdown

+1 for tail

@dnephindnephin added this to the 1.7.0 milestone Feb 5, 2016
Comment threadcompose/cli/main.py Outdated
tail = options['--tail']
if tail is not None and tail.isdigit():
tail = int(tail)
log_args['tail'] = tail

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small problem here, we should show an error if --tail is invalid instead of just ignoring it.

image_type_from_opt() is a good example for this. It lets you move this if branch into the validation function as well.

@dnephin

Copy link
Copy Markdown

Thanks! This is looking great. Couple comments around error reporting and testing.

Comment threadcompose/cli/main.py Outdated

monochrome = options['--no-color']
log_args = {}
log_args['stream'] = options['--follow']

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

stream and follow should be different things, however it looks like they were set to the same thing in docker-py. stream should say "return an iterator", where as follow is a behaviour of the API to continue to send logs or stop once it receives the latest one.

I think we need to fix docker-py to have separate params, then this should be:

logs_args['follow'] = ...

stream should always be True.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I understand the difference between stream and follow, but I'm not sure to understand the advantage of this change.

If you set follow to True, should stream always be True ?

Maybe should we open an issue on docker-py to talk about it before to merge this PR ?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I think follow=True does imply stream=True, but stream=True doesn't imply follow=True, you may still want to stream without following.

Yes, I created #934

@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 3e1bbce to 8fd4d3eCompareFebruary 15, 2016 21:04
@seguins

Copy link
Copy Markdown
Author

Thanks for the feedback, I added an error message when the tail parameter is invalid, and I rewrote some tests.

I'm waiting for the issue docker/docker-py#934 to finish this PR.

@SvenDowideit

Copy link
Copy Markdown

the documentation checker failure is due to the tutorials repo going private

#2928 will solve that when merged.

@dnephin

Copy link
Copy Markdown

Cool, the docker-py change has been merged and will be in the next release.

For now you can use a git url and git sha for the docker-py dependency in requirements.txt: For example: git+https://github.com/docker/docker-py.git@81d8caaf36159bf1accd86eab2e157bf8dd071a9#egg=docker-py

@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 8fd4d3e to 5618b07CompareFebruary 28, 2016 22:20
@seguins

Copy link
Copy Markdown
Author

I changed the docker-py dependency. Now, we always call the logs api with stream=True.

Comment threadcompose/cli/log_printer.py Outdated
output=sys.stdout,
monochrome=False,
cascade_stop=False,
log_args={'follow': False}):

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using a mutable value as a default kwarg value can lead to a lot of confusion.

Instead of this default, please use

def__init__(self, ..., log_args=None):
log_args=log_argsor {}
...

@dnephin

Copy link
Copy Markdown

This is looking good. I'm a little surprised there isn't any changes to def up(). I suspect that it's going to need to pass in follow=True, and it's a bit concerning we don't have any tests failing without it.

Comment threadcompose/cli/main.py Outdated
monochrome = options['--no-color']
log_args = {}
log_args['follow'] = options['--follow']
log_args['timestamps'] = options['--timestamps']

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor thing, but this could be a single assignment with a dictionary literal.

log_args= {
'follow': options['--follow'],
'timestamps': options['--timestamps'],
}

@seguins

Copy link
Copy Markdown
Author

Thank you for the review. I applied fixes. I removed the part with threading and I rewrite the test_logs_follow test. I'm not sure it's the best way to test this case, but I haven't found better solution.

There is no change on up because it uses the attach api instead of logapi.

@dnephin

Copy link
Copy Markdown

There is no change on up because it uses the attach api instead of log api.

up uses LogPrinter, which used to attach, but is now using logs, so I think it's no longer using attach.

@seguins

Copy link
Copy Markdown
Author

Indeed, I missed it ... Because docker-py has a backward compatibly, up still work.

Should we set explicitly follow=True ?

@dnephin

Copy link
Copy Markdown

I think it would be good to set that explicitly, yes

@seguins

Copy link
Copy Markdown
Author

up uses a convergence_plan. Convergence plan sets should_attach_logs = not detached which has for effect to call attach_log_stream method of container. This method attachs the container and stores the result in log_stream.

LogPrinter checks if log_stream is set and in this case it's not call the logs api. up will not call the log api but the attach api.

However, we need to set follow=True because it's used for displaying the end of process.

Do you think there are enough tests if I just add to the test_up_attached test : assert 'exited with code 0' in stdout ?

@dnephin

Copy link
Copy Markdown

I see, you're right it does use attach, I forgot about that. I think it's fine as is.

Closesdocker#2187
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
Closesdocker#265
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
Signed-off-by: Stéphane Seguin <stephseguin93@gmail.com>
@seguins
seguinsforce-pushed the 2227-improvements-logs branch from 2bbb779 to 038da4eCompareMarch 1, 2016 19:57
@seguins

Copy link
Copy Markdown
Author

I added the follow=True for up. This PR is ready for a new review.

@dnephin

Copy link
Copy Markdown

LGTM

@shin-

shin- commented Mar 1, 2016

Copy link
Copy Markdown

Might be a good idea to rerun the tests on janky? Code looks good overall.

@aanand

Copy link
Copy Markdown

LGTM

aanand added a commit that referenced this pull request Mar 2, 2016
@aanand
aanand merged commit 0b3561a into docker:masterMar 2, 2016
@dnephindnephin mentioned this pull request Mar 2, 2016
@jayhding

Copy link
Copy Markdown

@aanand would you mind to comment if this merge will be done also to libcompose, which is used by rancher-compose? Thanks.

@aanand

Copy link
Copy Markdown

@JayHaoDing It will have to be separately implemented. libcompose is not high priority at the moment - we have a Compose release very soon, so that's what we're focusing on.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@seguins@dnephin@j-san@SvenDowideit@shin-@aanand@jayhding@GordonTheTurtle