| <!-- |
| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| --> |
| <div class="col-xs-24 plr0px"> |
| <div class="col-xs-10 plr0px"> |
| <div class="col-xs-24"> |
| <label class="light">Cluster<mandatory-field></mandatory-field></label> |
| </div> |
| <div class="col-xs-24"> |
| <select ng-model="cluster.name" name="clusterName" |
| class="form-control padding0" ng-required="required" |
| ng-change="findClusterExists(cluster.name, cluster.type, storageInfo.feedClusters)" |
| validation-message="{{validations.messages.cluster}}"> |
| <option value="" disabled style='display:none;'>-Select {{cluster.type}} cluster-</option> |
| <option ng-repeat="clusterItem in storageInfo.clustersList" |
| value="{{clusterItem.name}}" ng-selected="cluster.name === clusterItem.name"> |
| {{clusterItem.name}} |
| </option> |
| </select> |
| </div> |
| <div class="col-xs-24 custom-danger" ng-show="checkDuplicateClusterOnTarget()"> |
| Target cannot be the same as the Source |
| </div> |
| <div class="col-xs-24 custom-danger" ng-show="clusterExists"> |
| Cluster is already added |
| </div> |
| <div class="col-xs-24"> |
| <label class="light">Data Path<mandatory-field></mandatory-field></label> |
| </div> |
| <div ng-repeat="location in cluster.storage.fileSystem.locations"> |
| <div class="col-xs-24" ng-if="location.type==='data'"> |
| <input type="text" name="dataPath" |
| placeholder="Enter Data Path" |
| ng-required="cluster.name" |
| validation-optional-message="{{validations.messages.path}}" |
| class="form-control" |
| ng-model="location.path" /> |
| </div> |
| </div> |
| <div class="col-xs-24"> |
| <a href="" ng-click="toggleAdvancedOptions()">MORE OPTIONS ></a> |
| </div> |
| </div> |
| <div class="col-xs-12 plr0px"> |
| <div class="datasourceBox" ng-show="showingAdvancedOptions"> |
| <div class="col-xs-24"> |
| <label class="light">Statistics Path</label> |
| </div> |
| <div ng-repeat="location in cluster.storage.fileSystem.locations"> |
| <div class="col-xs-24" ng-if="location.type==='stats'"> |
| <input type="text" class="form-control" ng-model="location.path"/> |
| </div> |
| </div> |
| <div class="col-xs-24 validityBox plr0px"> |
| <div class="col-xs-24 plr0px"> |
| <div class="col-xs-12 startDateBox"> |
| <label class="light">Start<mandatory-field></mandatory-field></label> |
| <input type="text" |
| name="startDateInput" |
| class="form-control dateInput" |
| placeholder="{{dateFormat | lowercase}}" |
| ng-model="cluster.validity.start.date" |
| simple-date-picker /> |
| </div> |
| <div class="col-xs-12 startTimeBox"> |
| <label class="light">Time<mandatory-field></mandatory-field></label> |
| <timepicker ng-change="constructDate()" |
| ng-model="cluster.validity.start.time" |
| hour-step="1" |
| minute-step="1" |
| show-meridian="true"> |
| </timepicker> |
| </div> |
| </div> |
| <label class="col-xs-24 custom-danger validationMessageGral" ng-if="!cluster.validity.start.date"> |
| {{validations.messages.date.empty}} |
| </label> |
| <div class="col-xs-24 plr0px"> |
| <div class="col-xs-12 endDateBox"> |
| <label class="light">End<mandatory-field></mandatory-field></label> |
| <input type="text" |
| name="startDateInput" |
| class="form-control dateInput" |
| placeholder="{{dateFormat | lowercase}}" |
| ng-model="cluster.validity.end.date" |
| simple-date-picker /> |
| </div> |
| <div class="col-xs-12 endTimeBox"> |
| <label class="light">Time<mandatory-field></mandatory-field></label> |
| <timepicker ng-change="constructDate()" |
| ng-model="cluster.validity.end.time" |
| hour-step="1" |
| minute-step="1" |
| show-meridian="true"> |
| </timepicker> |
| </div> |
| </div> |
| <label class="col-xs-24 custom-danger validationMessageGral" ng-if="!cluster.validity.end.date"> |
| {{validations.messages.date.empty}} |
| </label> |
| </div> |
| <label class="light col-xs-24">Retention<mandatory-field></mandatory-field></label> |
| <div class="col-xs-24 inlineInputsGroup"> |
| <input type="text" class="form-control" ng-model="cluster.retention.quantity" |
| ng-keydown="validations.acceptOnlyNumber($event)" ng-pattern="validations.patterns.twoDigits" /> |
| <select ng-model="cluster.retention.unit"> |
| <option selected value="minutes">minutes</option> |
| <option value="hours">hours</option> |
| <option value="days">days</option> |
| <option value="months">months</option> |
| </select> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="col-xs-24 mt10"> |
| <a ng-click="reset()" ng-if="!storageInfo.readOnly">Reset</a> |
| <button class="btn datasourceBtn" ng-if="!storageInfo.readOnly" |
| ng-disabled="cluster.name==='' || !cluster.storage.fileSystem.locations[0].path || cluster.storage.fileSystem.locations[0].path ==='' || clusterExists" |
| ng-click="addCluster({type : storageInfo.type, dataTransferType : 'hdfs'})">Add {{buttonText}}</button> |
| <button class="btn datasourceBtn" ng-click="deleteCluster()" |
| ng-if="(storageInfo.feedClusters | filter:{type: cluster.type}).length > 1">Delete</button> |
| </div> |