Jelajahi Sumber

AMBARI-5771. Multiple repositories support in UI Admin > Cluster. (akovalenko)

Aleksandr Kovalenko 11 tahun lalu
induk
melakukan
53eba086dd

+ 19 - 5
ambari-web/app/controllers/main/admin/cluster.js

@@ -90,13 +90,27 @@ App.MainAdminClusterController = Em.Controller.extend({
 
 
   loadRepositoriesSuccessCallback: function (data) {
   loadRepositoriesSuccessCallback: function (data) {
     var allRepos = [];
     var allRepos = [];
-    data.items.forEach(function(os) {
+    data.items.forEach(function (os) {
       if (!App.supports.ubuntu && os.OperatingSystems.os_type == 'debian12') return; // @todo: remove after Ubuntu support confirmation
       if (!App.supports.ubuntu && os.OperatingSystems.os_type == 'debian12') return; // @todo: remove after Ubuntu support confirmation
-      var repo = Em.Object.create({
-        baseUrl: os.repositories[0].Repositories.base_url,
-        osType: os.repositories[0].Repositories.os_type
+      os.repositories.forEach(function (repository) {
+        var osType = repository.Repositories.os_type;
+        var repo = Em.Object.create({
+          baseUrl: repository.Repositories.base_url,
+          osType: osType,
+          repoId: repository.Repositories.repo_id,
+          isFirst: false
+        });
+        var group = allRepos.findProperty('name', osType);
+        if (!group) {
+          group = {
+            name: osType,
+            repositories: []
+          };
+          repo.set('isFirst', true);
+          allRepos.push(group);
+        }
+        group.repositories.push(repo);
       });
       });
-      allRepos.push(repo);
     }, this);
     }, this);
     allRepos.stackVersion = App.get('currentStackVersionNumber');
     allRepos.stackVersion = App.get('currentStackVersionNumber');
     this.set('repositories', allRepos);
     this.set('repositories', allRepos);

+ 12 - 6
ambari-web/app/templates/main/admin/cluster.hbs

@@ -60,19 +60,25 @@
       </li>
       </li>
     </ul>
     </ul>
 
 
-    <table class="table table-bordered table-striped">
+    <table class="table table-bordered">
       <thead>
       <thead>
       <tr>
       <tr>
         <th>{{t admin.cluster.repositories.os}}</th>
         <th>{{t admin.cluster.repositories.os}}</th>
+        <th>{{t common.name}}</th>
         <th>{{t admin.cluster.repositories.baseUrl}}</th>
         <th>{{t admin.cluster.repositories.baseUrl}}</th>
       </tr>
       </tr>
       </thead>
       </thead>
       <tbody>
       <tbody>
-        {{#each repo in repositories}}
-          <tr>
-            <td>{{repo.osType}}</td>
-            <td>{{repo.baseUrl}}</td>
-          </tr>
+        {{#each repoGroup in repositories}}
+          {{#each repo in repoGroup.repositories}}
+            <tr>
+              {{#if repo.isFirst}}
+                <td {{bindAttr rowspan="repoGroup.repositories.length"}}>{{repo.osType}}</td>
+              {{/if}}
+              <td>{{repo.repoId}}</td>
+              <td>{{repo.baseUrl}}</td>
+            </tr>
+          {{/each}}
         {{/each}}
         {{/each}}
       </tbody>
       </tbody>
     </table>
     </table>