mirror of
https://github.com/apache/zeppelin
synced 2026-05-24 09:38:26 +00:00
Merge branch 'master' of https://github.com/apache/zeppelin into ZEPPELIN-429
This commit is contained in:
commit
58a94acdef
3 changed files with 215 additions and 92 deletions
|
|
@ -37,45 +37,165 @@ limitations under the License.
|
|||
|
||||
<div>
|
||||
<h5>Option</h5>
|
||||
<span class="checkbox input-group">
|
||||
<label><input type="checkbox" style="width:0%;height:0%" id="perNote" ng-model="newInterpreterSetting.option.perNote"/>
|
||||
perNote </label>
|
||||
</span>
|
||||
<span class="checkbox input-group">
|
||||
<label><input type="checkbox" style="width:0%;height:0%" id="perUser" ng-model="newInterpreterSetting.option.perUser"/>
|
||||
perUser</label>
|
||||
</span>
|
||||
<span class="btn-group">
|
||||
<button type="button" class="btn btn-default btn-xs dropdown-toggle"
|
||||
data-toggle="dropdown">
|
||||
{{getSessionOption(newInterpreterSetting.id)}} <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li>
|
||||
<a style="cursor:pointer"
|
||||
tooltip="Single interpreter instance are shared across notes"
|
||||
ng-click="setSessionOption(newInterpreterSetting.id, 'shared')">
|
||||
shared
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a style="cursor:pointer"
|
||||
tooltip="Separate Interpreter instance for each note"
|
||||
ng-click="setSessionOption(newInterpreterSetting.id, 'scoped')">
|
||||
scoped
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a style="cursor:pointer"
|
||||
tooltip="Separate Interpreter process for each note"
|
||||
ng-click="setSessionOption(setting.id, 'isolated')">
|
||||
isolated
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</span>
|
||||
</div>
|
||||
<div class="row interpreter" style="margin-top: 5px;">
|
||||
<div class="col-md-6">
|
||||
The interpreter will be instantiated
|
||||
<span class="btn-group">
|
||||
<button type="button" class="btn btn-default btn-xs dropdown-toggle"
|
||||
data-toggle="dropdown"
|
||||
>
|
||||
{{getInterpreterRunningOption(setting.id)}} <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li>
|
||||
<a style="cursor:pointer"
|
||||
ng-click="setInterpreterRunningOption(setting.id, 'shared', 'shared')">
|
||||
Globally
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a style="cursor:pointer"
|
||||
ng-click="setInterpreterRunningOption(setting.id, 'scoped', '')">
|
||||
Per Note
|
||||
</a>
|
||||
</li>
|
||||
<li ng-if="ticket.ticket !== 'anonymous' && ticket.roles !== '[]'">
|
||||
<a style="cursor:pointer"
|
||||
ng-click="setInterpreterRunningOption(setting.id, 'shared', 'scoped')">
|
||||
Per User
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</span>
|
||||
in
|
||||
<span class="btn-group">
|
||||
<button type="button" class="btn btn-default btn-xs dropdown-toggle"
|
||||
data-toggle="dropdown"
|
||||
ng-disabled="getInterpreterRunningOption(setting.id) === 'Globally'">
|
||||
<span ng-if="getInterpreterRunningOption(setting.id) !== 'Per User'">
|
||||
{{getPerNoteOption(setting.id)}}
|
||||
</span>
|
||||
<span ng-if="getInterpreterRunningOption(setting.id) === 'Per User'">
|
||||
{{getPerUserOption(setting.id)}}
|
||||
</span>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li
|
||||
ng-if="getInterpreterRunningOption(setting.id) === 'Globally'">
|
||||
<a style="cursor:pointer"
|
||||
tooltip="Single interpreter instance are shared across notes"
|
||||
ng-click="setPerNoteOption(setting.id, 'shared')">
|
||||
shared per note
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a style="cursor:pointer"
|
||||
ng-if="getInterpreterRunningOption(setting.id) === 'Per Note'"
|
||||
tooltip="Separate Interpreter instance for each note"
|
||||
ng-click="setPerNoteOption(setting.id, 'scoped')">
|
||||
scoped per note
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a style="cursor:pointer"
|
||||
ng-if="getInterpreterRunningOption(setting.id) === 'Per User'"
|
||||
tooltip="Separate Interpreter instance for each note"
|
||||
ng-click="setPerUserOption(setting.id, 'scoped')">
|
||||
scoped per user
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a style="cursor:pointer"
|
||||
ng-if="getInterpreterRunningOption(setting.id) === 'Per Note'"
|
||||
tooltip="Separate Interpreter process for each note"
|
||||
ng-click="setPerNoteOption(setting.id, 'isolated')">
|
||||
isolated per note
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a style="cursor:pointer"
|
||||
ng-if="getInterpreterRunningOption(setting.id) === 'Per User'"
|
||||
tooltip="Separate Interpreter process for each note"
|
||||
ng-click="setPerUserOption(setting.id, 'isolated')">
|
||||
isolated per user
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</span>
|
||||
process.
|
||||
<span ng-if="getInterpreterRunningOption(setting.id) === 'Per User' && ticket.ticket !== 'anonymous' && ticket.roles !== '[]'">
|
||||
<span ng-if="getPerNoteOption(setting.id) === 'shared'">
|
||||
<button type="button" class="btn btn-default btn-xs"
|
||||
ng-click="setPerNoteOption(setting.id, 'scoped')"
|
||||
data-toggle="dropdown">
|
||||
<i class="fa fa-plus"></i>
|
||||
</button>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="row interpreter"
|
||||
style="margin-top: 6px;"
|
||||
ng-if="getInterpreterRunningOption(setting.id) === 'Per User'
|
||||
&& ticket.ticket !== 'anonymous'
|
||||
&& ticket.roles !== '[]'
|
||||
&& getPerNoteOption(setting.id) !== 'shared'">
|
||||
<div class="col-md-12">
|
||||
<span>
|
||||
<span class="hidden-xs" style="padding-left: 190px;">And </span>
|
||||
<span class="visible-xs" style="padding-left: 0px;">And </span>
|
||||
<span class="btn-group">
|
||||
<button type="button" class="btn btn-default btn-xs dropdown-toggle"
|
||||
data-toggle="dropdown"
|
||||
ng-disabled="true">
|
||||
<span>
|
||||
Per Note
|
||||
</span>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
</span>
|
||||
in
|
||||
<span class="btn-group">
|
||||
<button type="button" class="btn btn-default btn-xs dropdown-toggle"
|
||||
data-toggle="dropdown">
|
||||
<span>
|
||||
{{getPerNoteOption(setting.id)}}
|
||||
</span>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li>
|
||||
<a style="cursor:pointer"
|
||||
tooltip="Separate Interpreter instance for each note"
|
||||
ng-click="setPerNoteOption(setting.id, 'scoped')">
|
||||
scoped per note
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a style="cursor:pointer"
|
||||
tooltip="Separate Interpreter process for each note"
|
||||
ng-click="setPerNoteOption(setting.id, 'isolated')">
|
||||
isolated per note
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</span>
|
||||
process.
|
||||
<button type="button" class="btn btn-default btn-xs"
|
||||
ng-click="setPerNoteOption(setting.id, 'shared')"
|
||||
data-toggle="dropdown">
|
||||
<i class="fa fa-minus"></i>
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row interpreter" style="margin-top: 5px;">
|
||||
<div class="col-md-12">
|
||||
<div class="checkbox remove-margin-top-bottom">
|
||||
|
|
|
|||
|
|
@ -250,62 +250,62 @@ limitations under the License.
|
|||
|
||||
</div>
|
||||
</div>
|
||||
<div class="row interpreter" style="margin-top: 6px;">
|
||||
<div class="col-md-6">
|
||||
<span ng-if="getInterpreterRunningOption(setting.id) === 'Per User' && ticket.ticket !== 'anonymous' && ticket.roles !== '[]'">
|
||||
<span ng-if="getPerNoteOption(setting.id) !== 'shared'">
|
||||
<span class="hidden-xs" style="padding-left: 190px;">And </span>
|
||||
<span class="visible-xs" style="padding-left: 0px;">And </span>
|
||||
<span class="btn-group">
|
||||
<button type="button" class="btn btn-default btn-xs dropdown-toggle"
|
||||
data-toggle="dropdown"
|
||||
ng-disabled="true">
|
||||
<span>
|
||||
Per Note
|
||||
</span>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
</span>
|
||||
in
|
||||
<span class="btn-group">
|
||||
<button type="button" class="btn btn-default btn-xs dropdown-toggle"
|
||||
data-toggle="dropdown"
|
||||
ng-disabled="!valueform.$visible">
|
||||
<span>
|
||||
{{getPerNoteOption(setting.id)}}
|
||||
</span>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li>
|
||||
<a style="cursor:pointer"
|
||||
tooltip="Separate Interpreter instance for each note"
|
||||
ng-click="setPerNoteOption(setting.id, 'scoped')">
|
||||
scoped per note
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a style="cursor:pointer"
|
||||
tooltip="Separate Interpreter process for each note"
|
||||
ng-click="setPerNoteOption(setting.id, 'isolated')">
|
||||
isolated per note
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</span>
|
||||
process.
|
||||
<button type="button" class="btn btn-default btn-xs"
|
||||
ng-disabled="!valueform.$visible"
|
||||
ng-click="setPerNoteOption(setting.id, 'shared')"
|
||||
data-toggle="dropdown">
|
||||
<i class="fa fa-minus"></i>
|
||||
<div class="row interpreter"
|
||||
style="margin-top: 6px;"
|
||||
ng-if="getInterpreterRunningOption(setting.id) === 'Per User'
|
||||
&& ticket.ticket !== 'anonymous'
|
||||
&& ticket.roles !== '[]'
|
||||
&& getPerNoteOption(setting.id) !== 'shared'">
|
||||
<div class="col-md-12">
|
||||
<span>
|
||||
<span class="hidden-xs" style="padding-left: 190px;">And </span>
|
||||
<span class="visible-xs" style="padding-left: 0px;">And </span>
|
||||
<span class="btn-group">
|
||||
<button type="button" class="btn btn-default btn-xs dropdown-toggle"
|
||||
data-toggle="dropdown"
|
||||
ng-disabled="true">
|
||||
<span>
|
||||
Per Note
|
||||
</span>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
</span>
|
||||
in
|
||||
<span class="btn-group">
|
||||
<button type="button" class="btn btn-default btn-xs dropdown-toggle"
|
||||
data-toggle="dropdown"
|
||||
ng-disabled="!valueform.$visible">
|
||||
<span>
|
||||
{{getPerNoteOption(setting.id)}}
|
||||
</span>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li>
|
||||
<a style="cursor:pointer"
|
||||
tooltip="Separate Interpreter instance for each note"
|
||||
ng-click="setPerNoteOption(setting.id, 'scoped')">
|
||||
scoped per note
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a style="cursor:pointer"
|
||||
tooltip="Separate Interpreter process for each note"
|
||||
ng-click="setPerNoteOption(setting.id, 'isolated')">
|
||||
isolated per note
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</span>
|
||||
process.
|
||||
<button type="button" class="btn btn-default btn-xs"
|
||||
ng-disabled="!valueform.$visible"
|
||||
ng-click="setPerNoteOption(setting.id, 'shared')"
|
||||
data-toggle="dropdown">
|
||||
<i class="fa fa-minus"></i>
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -293,9 +293,12 @@ public class Paragraph extends Job implements Serializable, Cloneable {
|
|||
logger.error("Can not find interpreter name " + repl);
|
||||
throw new RuntimeException("Can not find interpreter for " + getRequiredReplName());
|
||||
}
|
||||
|
||||
InterpreterSetting intp = getInterpreterSettingById(repl.getInterpreterGroup().getId());
|
||||
while (intp.getStatus().equals(
|
||||
org.apache.zeppelin.interpreter.InterpreterSetting.Status.DOWNLOADING_DEPENDENCIES)) {
|
||||
Thread.sleep(200);
|
||||
}
|
||||
if (this.noteHasUser() && this.noteHasInterpreters()) {
|
||||
InterpreterSetting intp = getInterpreterSettingById(repl.getInterpreterGroup().getId());
|
||||
if (intp != null &&
|
||||
interpreterHasUser(intp) &&
|
||||
isUserAuthorizedToAccessInterpreter(intp.getOption()) == false) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue