Przeglądaj źródła

AMBARI-3720. Provide read-only view of repo options in Ambari Web

Xi Wang 11 lat temu
rodzic
commit
695a3bcdaf

+ 39 - 0
ambari-web/app/controllers/main/admin/cluster.js

@@ -22,6 +22,7 @@ var stringUtils = require('utils/string_utils');
 App.MainAdminClusterController = Em.Controller.extend({
   name:'mainAdminClusterController',
   services: [],
+  repositories: [],
   upgradeVersion: '',
   /**
    * get the newest version of HDP from server
@@ -69,6 +70,44 @@ App.MainAdminClusterController = Em.Controller.extend({
     console.log('HDP stack doesn\'t have services with defaultStackVersion');
   },
 
+  /**
+   * get the installed repositories of HDP from server
+   */
+  loadRepositories: function(){
+    if(App.router.get('clusterController.isLoaded')){
+      var nameVersionCombo = App.get('currentStackVersion');
+      var stackName = nameVersionCombo.split('-')[0];
+      var stackVersion = nameVersionCombo.split('-')[1];
+      App.ajax.send({
+        name: 'cluster.load_repositories',
+        sender: this,
+        data: {
+          stackName: stackName,
+          stackVersion: stackVersion
+        },
+        success: 'loadRepositoriesSuccessCallback',
+        error: 'loadRepositoriesErrorCallback'
+      });
+    }
+  }.observes('App.router.clusterController.isLoaded'),
+
+  loadRepositoriesSuccessCallback: function (data) {
+    var allRepos = [];
+    data.items.forEach(function(os) {
+      var repo = Em.Object.create({
+        baseUrl: os.repositories[0].Repositories.base_url,
+        osType: os.repositories[0].Repositories.os_type
+      });
+      allRepos.push(repo);
+    }, this);
+    allRepos.stackVersion = App.get('currentStackVersionNumber');
+    this.set('repositories', allRepos);
+  },
+
+  loadRepositoriesErrorCallback: function(request, ajaxOptions, error) {
+    console.log('Error message is: ' + request.responseText);
+  },
+
   /**
    * parse services info(versions, description) by version
    */

+ 3 - 0
ambari-web/app/messages.js

@@ -878,6 +878,9 @@ Em.I18n.translations = {
   'admin.cluster.stackVersion':'Cluster Stack Version',
   'admin.cluster.upgradeAvailable':'Upgrade available',
   'admin.cluster.upgradeUnavailable':'Upgrade unavailable',
+  'admin.cluster.repositories.repositories':'Repositories',
+  'admin.cluster.repositories.os':'OS',
+  'admin.cluster.repositories.baseUrl':'Base URL',
 
   'admin.userSettings.header': 'Customize User Settings',
   'admin.userSettings.showBgOperations': 'Show background operations dialog when an operation is started',

+ 51 - 25
ambari-web/app/templates/main/admin/cluster.hbs

@@ -18,34 +18,60 @@
 
 <div class="admin-cluster">
     <div class="header">
-        <strong>{{t admin.cluster.stackVersion}}: {{App.currentStackVersion}}
-          {{#if App.supports.stackUpgrade}}
-            (<a href="true" {{bindAttr class="view.isUpgradeAvailable::inactive"}}{{action "upgradeStack"}}>
-            {{#if view.isUpgradeAvailable}}{{t admin.cluster.upgradeAvailable}}: {{upgradeVersion}}
-            {{else}} {{t admin.cluster.upgradeUnavailable}}
-            {{/if}}
-            </a>)
+      <strong>{{t admin.cluster.stackVersion}}: {{App.currentStackVersion}}
+        {{#if App.supports.stackUpgrade}}
+          (<a href="true" {{bindAttr class="view.isUpgradeAvailable::inactive"}}{{action "upgradeStack"}}>
+          {{#if view.isUpgradeAvailable}}{{t admin.cluster.upgradeAvailable}}: {{upgradeVersion}}
+          {{else}} {{t admin.cluster.upgradeUnavailable}}
           {{/if}}
-        </strong>
+          </a>)
+        {{/if}}
+      </strong>
     </div>
     <table class="table table-bordered table-striped">
-        <thead>
-        <tr>
-            <th>{{t common.service}}</th>
-            <th>{{t common.version}}</th>
-            <th>{{t common.description}}</th>
-        </tr>
-        </thead>
-        <tbody>
-        {{#each service in services}}
-        {{#unless service.isHidden}}
-        <tr>
-            <td>{{service.displayName}}</td>
-            <td>{{service.version}}</td>
-            <td>{{service.description}}</td>
-        </tr>
-        {{/unless}}
+      <thead>
+      <tr>
+        <th>{{t common.service}}</th>
+        <th>{{t common.version}}</th>
+        <th>{{t common.description}}</th>
+      </tr>
+      </thead>
+      <tbody>
+      {{#each service in services}}
+      {{#unless service.isHidden}}
+      <tr>
+        <td>{{service.displayName}}</td>
+        <td>{{service.version}}</td>
+        <td>{{service.description}}</td>
+      </tr>
+      {{/unless}}
+      {{/each}}
+      </tbody>
+    </table>
+
+    <div class="header">
+      <strong>{{t admin.cluster.repositories.repositories}}</strong>
+    </div>
+    <ul class="nav nav-tabs">
+      <li class="active">
+        <a href="#">{{repositories.stackVersion}}</a>
+      </li>
+    </ul>
+
+    <table class="table table-bordered table-striped">
+      <thead>
+      <tr>
+        <th>{{t admin.cluster.repositories.os}}</th>
+        <th>{{t admin.cluster.repositories.baseUrl}}</th>
+      </tr>
+      </thead>
+      <tbody>
+        {{#each repo in repositories}}
+          <tr>
+            <td>{{repo.osType}}</td>
+            <td>{{repo.baseUrl}}</td>
+          </tr>
         {{/each}}
-        </tbody>
+      </tbody>
     </table>
 </div>

+ 10 - 0
ambari-web/app/utils/ajax.js

@@ -550,6 +550,16 @@ var urls = {
       };
     }
   },
+  'cluster.load_repositories': {
+    'real': '/stacks2/{stackName}/versions/{stackVersion}/operatingSystems?fields=repositories/*',
+    'mock': '',
+    'type': 'GET',
+    'format': function (data, opt) {
+      return {
+        async: false
+      };
+    }
+  },
   'admin.high_availability.stop_all_services': {
     'real': '/clusters/{clusterName}/services',
     'mock': '',