feat: [ui] Relative navigation; add storageClass (#1835)
- Change all ui request from absolute path to relative path. Can access ui web like ex.com/pgo/ with nginx spec config relative issue: zalando#1613 - Add storageClass field relative-nav Co-authored-by: Felix Kunde <felix-kunde@gmx.de>
This commit is contained in:
		
							parent
							
								
									e80cccb93b
								
							
						
					
					
						commit
						2011367525
					
				|  | @ -214,13 +214,13 @@ const delete_cluster = (namespace, clustername) => { | ||||||
|                     jQuery.ajax({ |                     jQuery.ajax({ | ||||||
|                         type: 'DELETE', |                         type: 'DELETE', | ||||||
|                         url: ( |                         url: ( | ||||||
|                             '/postgresqls/' |                             './postgresqls/' | ||||||
|               + encodeURI(namespace) |               + encodeURI(namespace) | ||||||
|               + '/' + encodeURI(clustername) |               + '/' + encodeURI(clustername) | ||||||
|                         ), |                         ), | ||||||
|                         dataType: 'text', |                         dataType: 'text', | ||||||
|                         success: () => location.assign('/#/list'), |                         success: () => location.assign('./#/list'), | ||||||
|                         error: (r, status, error) => location.assign('/#/list'), // TODO: show error
 |                         error: (r, status, error) => location.assign('./#/list'), // TODO: show error
 | ||||||
|                     }) |                     }) | ||||||
|                 }, |                 }, | ||||||
|             }, |             }, | ||||||
|  |  | ||||||
|  | @ -4,23 +4,23 @@ app | ||||||
|     .container |     .container | ||||||
| 
 | 
 | ||||||
|       .navbar-header |       .navbar-header | ||||||
|         a.navbar-brand(href='/') |         a.navbar-brand(href='./') | ||||||
|           | PostgreSQL Operator UI |           | PostgreSQL Operator UI | ||||||
| 
 | 
 | ||||||
|       #navbar.navbar-collapse.collapse |       #navbar.navbar-collapse.collapse | ||||||
|         ul.nav.navbar-nav |         ul.nav.navbar-nav | ||||||
| 
 | 
 | ||||||
|           li(class='{ active: ["EDIT", "LIST", "LOGS", "STATUS"].includes(activenav) }') |           li(class='{ active: ["EDIT", "LIST", "LOGS", "STATUS"].includes(activenav) }') | ||||||
|             a(href='/#/list') PostgreSQL clusters |             a(href='./#/list') PostgreSQL clusters | ||||||
| 
 | 
 | ||||||
|           li(class='{ active: "BACKUPS" === activenav }') |           li(class='{ active: "BACKUPS" === activenav }') | ||||||
|             a(href='/#/backups') Backups |             a(href='./#/backups') Backups | ||||||
| 
 | 
 | ||||||
|           li(class='{ active: "OPERATOR" === activenav }') |           li(class='{ active: "OPERATOR" === activenav }') | ||||||
|             a(href='/#/operator') Status |             a(href='./#/operator') Status | ||||||
| 
 | 
 | ||||||
|           li(class='{ active: "NEW" === activenav }') |           li(class='{ active: "NEW" === activenav }') | ||||||
|             a(href='/#/new') New cluster |             a(href='./#/new') New cluster | ||||||
| 
 | 
 | ||||||
|           li(if='{ config }') |           li(if='{ config }') | ||||||
|             a(href='{ config.docs_link }' target='_blank') Documentation |             a(href='{ config.docs_link }' target='_blank') Documentation | ||||||
|  | @ -55,7 +55,7 @@ app | ||||||
|       | |       | | ||||||
|       | or |       | or | ||||||
|       | |       | | ||||||
|       a(href="/") start over |       a(href="./") start over | ||||||
|       | . |       | . | ||||||
| 
 | 
 | ||||||
|     div(if='{ config }') |     div(if='{ config }') | ||||||
|  | @ -152,12 +152,12 @@ app | ||||||
| 
 | 
 | ||||||
|     ;( |     ;( | ||||||
|       jQuery |       jQuery | ||||||
|       .get('/config') |       .get('./config') | ||||||
|       .done(config => { |       .done(config => { | ||||||
|         this.config = config |         this.config = config | ||||||
|         ;( |         ;( | ||||||
|           jQuery |           jQuery | ||||||
|           .get('/teams') |           .get('./teams') | ||||||
|           .done(teams => { |           .done(teams => { | ||||||
|             this.teams = teams.sort() |             this.teams = teams.sort() | ||||||
|             this.team = this.teams[0] |             this.team = this.teams[0] | ||||||
|  |  | ||||||
|  | @ -6,18 +6,18 @@ edit | ||||||
|         ol.breadcrumb |         ol.breadcrumb | ||||||
| 
 | 
 | ||||||
|           li.breadcrumb-item |           li.breadcrumb-item | ||||||
|             a(href='/#/list') |             a(href='./#/list') | ||||||
|               | PostgreSQL clusters |               | PostgreSQL clusters | ||||||
| 
 | 
 | ||||||
|           li.breadcrumb-item(if='{ cluster_path }') |           li.breadcrumb-item(if='{ cluster_path }') | ||||||
|             a(href='/#/status/{ cluster_path }') |             a(href='./#/status/{ cluster_path }') | ||||||
|               | { qname } |               | { qname } | ||||||
| 
 | 
 | ||||||
|           li.breadcrumb-item.active( |           li.breadcrumb-item.active( | ||||||
|             aria-current='page' |             aria-current='page' | ||||||
|             if='{ cluster_path }' |             if='{ cluster_path }' | ||||||
|           ) |           ) | ||||||
|             a(href='/#/edit/{ cluster_path }') |             a(href='./#/edit/{ cluster_path }') | ||||||
|               | Edit |               | Edit | ||||||
| 
 | 
 | ||||||
|     .row(if='{ cluster_path }') |     .row(if='{ cluster_path }') | ||||||
|  | @ -92,7 +92,7 @@ edit | ||||||
| 
 | 
 | ||||||
|       jQuery.ajax({ |       jQuery.ajax({ | ||||||
|         type: 'POST', |         type: 'POST', | ||||||
|         url: '/postgresqls/' + this.cluster_path, |         url: './postgresqls/' + this.cluster_path, | ||||||
|         contentType:"application/json", |         contentType:"application/json", | ||||||
|         data: jsonPayload, |         data: jsonPayload, | ||||||
|         processData: false, |         processData: false, | ||||||
|  | @ -113,7 +113,7 @@ edit | ||||||
| 
 | 
 | ||||||
|     this.pollProgress = () => { |     this.pollProgress = () => { | ||||||
|       jQuery.get( |       jQuery.get( | ||||||
|         '/postgresqls/' + this.cluster_path, |         './postgresqls/' + this.cluster_path, | ||||||
|       ).then(data => { |       ).then(data => { | ||||||
| 
 | 
 | ||||||
|         // Input data: |         // Input data: | ||||||
|  | @ -148,6 +148,9 @@ edit | ||||||
|           throughput: i.spec.volume.throughput || 125, |           throughput: i.spec.volume.throughput || 125, | ||||||
|           iops: i.spec.volume.iops || 3000 |           iops: i.spec.volume.iops || 3000 | ||||||
|         } |         } | ||||||
|  |         if ('storageClass' in i.spec.volume) { | ||||||
|  |             o.spec.volume.storageClass=i.spec.volume.storageClass | ||||||
|  |         } | ||||||
| 
 | 
 | ||||||
|         o.spec.postgresql = {} |         o.spec.postgresql = {} | ||||||
|         o.spec.postgresql.version = i.spec.postgresql.version |         o.spec.postgresql.version = i.spec.postgresql.version | ||||||
|  |  | ||||||
|  | @ -5,15 +5,15 @@ logs | ||||||
|       ol.breadcrumb |       ol.breadcrumb | ||||||
| 
 | 
 | ||||||
|         li.breadcrumb-item |         li.breadcrumb-item | ||||||
|           a(href='/#/list') |           a(href='./#/list') | ||||||
|             | PostgreSQL clusters |             | PostgreSQL clusters | ||||||
| 
 | 
 | ||||||
|         li.breadcrumb-item |         li.breadcrumb-item | ||||||
|           a(href='/#/status/{ cluster_path }') |           a(href='./#/status/{ cluster_path }') | ||||||
|             | { qname } |             | { qname } | ||||||
| 
 | 
 | ||||||
|         li.breadcrumb-item |         li.breadcrumb-item | ||||||
|           a(href='/#/logs/{ cluster_path }') |           a(href='./#/logs/{ cluster_path }') | ||||||
|             | Logs |             | Logs | ||||||
| 
 | 
 | ||||||
|   .sk-spinner-pulse(if='{ logs === undefined }') |   .sk-spinner-pulse(if='{ logs === undefined }') | ||||||
|  | @ -26,7 +26,7 @@ logs | ||||||
|       | |       | | ||||||
|       | or |       | or | ||||||
|       | |       | | ||||||
|       a(href="/") start over |       a(href="./") start over | ||||||
|       | . |       | . | ||||||
| 
 | 
 | ||||||
|   .container-fluid(if='{ logs }') |   .container-fluid(if='{ logs }') | ||||||
|  | @ -72,7 +72,7 @@ logs | ||||||
|         ) |         ) | ||||||
|         ;( |         ;( | ||||||
|           jQuery |           jQuery | ||||||
|           .get(`/operator/clusters/${cluster_path}/logs`) |           .get(`./operator/clusters/${cluster_path}/logs`) | ||||||
|           .done(logs => this.logs = logs.reverse()) |           .done(logs => this.logs = logs.reverse()) | ||||||
|           .fail(() => this.logs = null) |           .fail(() => this.logs = null) | ||||||
|           .always(() => this.update()) |           .always(() => this.update()) | ||||||
|  |  | ||||||
|  | @ -18,7 +18,7 @@ new | ||||||
|         ol.breadcrumb |         ol.breadcrumb | ||||||
| 
 | 
 | ||||||
|           li.breadcrumb-item |           li.breadcrumb-item | ||||||
|             a(href='/#/new') |             a(href='./#/new') | ||||||
|               | New PostgreSQL cluster |               | New PostgreSQL cluster | ||||||
| 
 | 
 | ||||||
|     .row.text-center(if='{ !creating }') |     .row.text-center(if='{ !creating }') | ||||||
|  | @ -64,7 +64,7 @@ new | ||||||
| 
 | 
 | ||||||
|               a.btn.btn-small.btn-warning( |               a.btn.btn-small.btn-warning( | ||||||
|                 if='{ clusterExists }' |                 if='{ clusterExists }' | ||||||
|                 href='/#/status/{ namespace.state }/{ name }' |                 href='./#/status/{ namespace.state }/{ name }' | ||||||
|               ) |               ) | ||||||
|                 | Cluster exists (show status) |                 | Cluster exists (show status) | ||||||
| 
 | 
 | ||||||
|  | @ -299,6 +299,19 @@ new | ||||||
|                   ) |                   ) | ||||||
|                   .input-group-addon |                   .input-group-addon | ||||||
|                     .input-units Gi |                     .input-units Gi | ||||||
|  | 
 | ||||||
|  |             tr | ||||||
|  |               td storageClass | ||||||
|  |               td | ||||||
|  |                 .input-group | ||||||
|  |                   input.form-control( | ||||||
|  |                     ref='volumeStorageClass' | ||||||
|  |                     type='text' | ||||||
|  |                     value='{ volumeStorageClass }' | ||||||
|  |                     onchange='{ storageClassChange }' | ||||||
|  |                     onkeyup='{ storageClassChange }' | ||||||
|  |                   ) | ||||||
|  | 
 | ||||||
|             tr |             tr | ||||||
|               td  |               td  | ||||||
|               td Specify Iops and Throughput only if you need more than the default 3000 Iops and 125Mb/s EBS provides. |               td Specify Iops and Throughput only if you need more than the default 3000 Iops and 125Mb/s EBS provides. | ||||||
|  | @ -582,7 +595,8 @@ new | ||||||
|         enableReplicaPoolerLoadBalancer: true |         enableReplicaPoolerLoadBalancer: true | ||||||
|         {{/if}} |         {{/if}} | ||||||
|         volume: |         volume: | ||||||
|           size: "{{ volumeSize }}Gi"{{#if iops}} |           size: "{{ volumeSize }}Gi"{{#if volumeStorageClass}} | ||||||
|  |           storageClass: "{{ volumeStorageClass }}"{{/if}}{{#if iops}} | ||||||
|           iops: {{ iops }}{{/if}}{{#if throughput}} |           iops: {{ iops }}{{/if}}{{#if throughput}} | ||||||
|           throughput: {{ throughput }}{{/if}} |           throughput: {{ throughput }}{{/if}} | ||||||
|         {{#if users}} |         {{#if users}} | ||||||
|  | @ -638,6 +652,7 @@ new | ||||||
|         enableMasterPoolerLoadBalancer: this.enableMasterPoolerLoadBalancer, |         enableMasterPoolerLoadBalancer: this.enableMasterPoolerLoadBalancer, | ||||||
|         enableReplicaPoolerLoadBalancer: this.enableReplicaPoolerLoadBalancer, |         enableReplicaPoolerLoadBalancer: this.enableReplicaPoolerLoadBalancer, | ||||||
|         volumeSize: this.volumeSize, |         volumeSize: this.volumeSize, | ||||||
|  |         volumeStorageClass: this.volumeStorageClass, | ||||||
|         iops: this.iops, |         iops: this.iops, | ||||||
|         throughput: this.throughput, |         throughput: this.throughput, | ||||||
|         users: this.users.valids, |         users: this.users.valids, | ||||||
|  | @ -716,6 +731,10 @@ new | ||||||
|       this.volumeSize = +e.target.value |       this.volumeSize = +e.target.value | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     this.storageClassChange = e => { | ||||||
|  |       this.volumeStorageClass = e.target.value | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     this.iopsChange = e => { |     this.iopsChange = e => { | ||||||
|       this.iops = +e.target.value |       this.iops = +e.target.value | ||||||
|     } |     } | ||||||
|  | @ -759,7 +778,7 @@ new | ||||||
|     this.checkClusterExists = () => ( |     this.checkClusterExists = () => ( | ||||||
|       jQuery |       jQuery | ||||||
|       .get( |       .get( | ||||||
|         '/postgresqls/' |         './postgresqls/' | ||||||
|         + this.namespace.state |         + this.namespace.state | ||||||
|         + '/' |         + '/' | ||||||
|         + this.clusterName |         + this.clusterName | ||||||
|  | @ -781,7 +800,7 @@ new | ||||||
| 
 | 
 | ||||||
|       jQuery.ajax({ |       jQuery.ajax({ | ||||||
|         type: 'POST', |         type: 'POST', | ||||||
|         url: '/create-cluster', |         url: './create-cluster', | ||||||
|         contentType:'application/json', |         contentType:'application/json', | ||||||
|         data: jsonPayload, |         data: jsonPayload, | ||||||
|         processData: false, |         processData: false, | ||||||
|  | @ -1013,6 +1032,7 @@ new | ||||||
| 
 | 
 | ||||||
|       this.clusterName = (this.name + '-').toLowerCase() |       this.clusterName = (this.name + '-').toLowerCase() | ||||||
|       this.volumeSize = 10 |       this.volumeSize = 10 | ||||||
|  |       this.volumeStorageClass = '' | ||||||
|       this.instanceCount = 1 |       this.instanceCount = 1 | ||||||
|       this.ranges = {} |       this.ranges = {} | ||||||
|       this.odd = '' |       this.odd = '' | ||||||
|  |  | ||||||
|  | @ -6,11 +6,11 @@ postgresql | ||||||
|         ol.breadcrumb |         ol.breadcrumb | ||||||
| 
 | 
 | ||||||
|           li.breadcrumb-item |           li.breadcrumb-item | ||||||
|             a(href='/#/list') |             a(href='./#/list') | ||||||
|               | PostgreSQL clusters |               | PostgreSQL clusters | ||||||
| 
 | 
 | ||||||
|           li.breadcrumb-item(if='{ cluster_path }') |           li.breadcrumb-item(if='{ cluster_path }') | ||||||
|             a(href='/#/status/{ cluster_path }') |             a(href='./#/status/{ cluster_path }') | ||||||
|               | { qname } |               | { qname } | ||||||
| 
 | 
 | ||||||
|     .row(if='{ cluster_path }') |     .row(if='{ cluster_path }') | ||||||
|  | @ -39,20 +39,20 @@ postgresql | ||||||
|             ) |             ) | ||||||
| 
 | 
 | ||||||
|               a.btn.btn-info( |               a.btn.btn-info( | ||||||
|                 href='/#/logs/{ cluster_path }' |                 href='./#/logs/{ cluster_path }' | ||||||
|               ) |               ) | ||||||
|                 | Logs |                 | Logs | ||||||
| 
 | 
 | ||||||
|               a.btn( |               a.btn( | ||||||
|                 class='btn-{ opts.read_write ? "primary" : "info" }' |                 class='btn-{ opts.read_write ? "primary" : "info" }' | ||||||
|                 if='{ progress.postgresql }' |                 if='{ progress.postgresql }' | ||||||
|                 href='/#/clone/{ clustername }/{ uid }/{ encodeURI(new Date().toISOString()) }' |                 href='./#/clone/{ clustername }/{ uid }/{ encodeURI(new Date().toISOString()) }' | ||||||
|               ) |               ) | ||||||
|                 | Clone |                 | Clone | ||||||
| 
 | 
 | ||||||
|               a.btn( |               a.btn( | ||||||
|                 class='btn-{ opts.read_write ? "warning" : "info" }' |                 class='btn-{ opts.read_write ? "warning" : "info" }' | ||||||
|                 href='/#/edit/{ cluster_path }' |                 href='./#/edit/{ cluster_path }' | ||||||
|               ) |               ) | ||||||
|                 | Edit |                 | Edit | ||||||
| 
 | 
 | ||||||
|  | @ -124,7 +124,7 @@ postgresql | ||||||
| 
 | 
 | ||||||
|     this.pollProgress = () => { |     this.pollProgress = () => { | ||||||
|       jQuery.get( |       jQuery.get( | ||||||
|         '/postgresqls/' + this.cluster_path, |         './postgresqls/' + this.cluster_path, | ||||||
|       ).done(data => { |       ).done(data => { | ||||||
|         this.progress.pooler = false |         this.progress.pooler = false | ||||||
|         this.progress.postgresql = true |         this.progress.postgresql = true | ||||||
|  | @ -137,13 +137,13 @@ postgresql | ||||||
|         this.update() |         this.update() | ||||||
| 
 | 
 | ||||||
|         jQuery.get( |         jQuery.get( | ||||||
|           '/statefulsets/' + this.cluster_path, |           './statefulsets/' + this.cluster_path, | ||||||
|         ).done(data => { |         ).done(data => { | ||||||
|           this.progress.statefulSet = true |           this.progress.statefulSet = true | ||||||
|           this.update() |           this.update() | ||||||
| 
 | 
 | ||||||
|           jQuery.get( |           jQuery.get( | ||||||
|             '/statefulsets/' + this.cluster_path + '/pods', |             './statefulsets/' + this.cluster_path + '/pods', | ||||||
|           ).done(data => { |           ).done(data => { | ||||||
|             if (data.length > 0) { |             if (data.length > 0) { | ||||||
|                 this.progress.containerFirst = true |                 this.progress.containerFirst = true | ||||||
|  | @ -157,7 +157,7 @@ postgresql | ||||||
|             this.update() |             this.update() | ||||||
| 
 | 
 | ||||||
|             jQuery.get( |             jQuery.get( | ||||||
|               '/services/' + this.cluster_path, |               './services/' + this.cluster_path, | ||||||
|             ).done(data => { |             ).done(data => { | ||||||
|               if (data.metadata && data.metadata.annotations && 'zalando.org/dnsname' in data.metadata.annotations) { |               if (data.metadata && data.metadata.annotations && 'zalando.org/dnsname' in data.metadata.annotations) { | ||||||
|                 this.progress.dnsName = data.metadata.annotations['zalando.org/dnsname'] |                 this.progress.dnsName = data.metadata.annotations['zalando.org/dnsname'] | ||||||
|  | @ -169,7 +169,7 @@ postgresql | ||||||
|               } |               } | ||||||
| 
 | 
 | ||||||
|               if (this.progress.poolerEnabled == true) { |               if (this.progress.poolerEnabled == true) { | ||||||
|                 jQuery.get('/pooler/' + this.cluster_path).done(data => { |                 jQuery.get('./pooler/' + this.cluster_path).done(data => { | ||||||
|                   this.progress.pooler = {"url": ""} |                   this.progress.pooler = {"url": ""} | ||||||
|                   this.update() |                   this.update() | ||||||
|                 }) |                 }) | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ postgresqls | ||||||
|         ol.breadcrumb |         ol.breadcrumb | ||||||
| 
 | 
 | ||||||
|           li.breadcrumb-item |           li.breadcrumb-item | ||||||
|             a(href='/#/list') |             a(href='./#/list') | ||||||
|               | PostgreSQL clusters |               | PostgreSQL clusters | ||||||
| 
 | 
 | ||||||
|     .sk-spinner-pulse( |     .sk-spinner-pulse( | ||||||
|  | @ -20,7 +20,7 @@ postgresqls | ||||||
|       | |       | | ||||||
|       | or |       | or | ||||||
|       | |       | | ||||||
|       a(href='/') start over |       a(href='./') start over | ||||||
|       | . |       | . | ||||||
| 
 | 
 | ||||||
|     div( |     div( | ||||||
|  | @ -81,7 +81,7 @@ postgresqls | ||||||
|             td(style='white-space: pre') |             td(style='white-space: pre') | ||||||
|               | { namespace } |               | { namespace } | ||||||
|             td |             td | ||||||
|               a(href='/#/status/{ cluster_path(this) }') { name } |               a(href='./#/status/{ cluster_path(this) }') { name } | ||||||
|               btn.btn-danger(if='{status.PostgresClusterStatus == "CreateFailed"}') Create Failed |               btn.btn-danger(if='{status.PostgresClusterStatus == "CreateFailed"}') Create Failed | ||||||
|             td { nodes } |             td { nodes } | ||||||
|             td { cpu } / { cpu_limit } |             td { cpu } / { cpu_limit } | ||||||
|  | @ -101,7 +101,7 @@ postgresqls | ||||||
|               ) |               ) | ||||||
| 
 | 
 | ||||||
|                 a.btn.btn-info( |                 a.btn.btn-info( | ||||||
|                   href='/#/status/{ cluster_path(this) }' |                   href='./#/status/{ cluster_path(this) }' | ||||||
|                 ) |                 ) | ||||||
|                   i.fa.fa-check-circle.regular |                   i.fa.fa-check-circle.regular | ||||||
|                   | Status |                   | Status | ||||||
|  | @ -114,21 +114,21 @@ postgresqls | ||||||
|                   | Pgview |                   | Pgview | ||||||
| 
 | 
 | ||||||
|                 a.btn.btn-info( |                 a.btn.btn-info( | ||||||
|                   href='/#/logs/{ cluster_path(this) }' |                   href='./#/logs/{ cluster_path(this) }' | ||||||
|                 ) |                 ) | ||||||
|                   i.fa.fa-align-justify |                   i.fa.fa-align-justify | ||||||
|                   | Logs |                   | Logs | ||||||
| 
 | 
 | ||||||
|                 a.btn( |                 a.btn( | ||||||
|                   class='btn-{ opts.read_write ? "primary" : "info" }' |                   class='btn-{ opts.read_write ? "primary" : "info" }' | ||||||
|                   href='/#/clone/{ encodeURI(name) }/{ encodeURI(uid) }/{ encodeURI(new Date().toISOString()) }' |                   href='./#/clone/{ encodeURI(name) }/{ encodeURI(uid) }/{ encodeURI(new Date().toISOString()) }' | ||||||
|                 ) |                 ) | ||||||
|                   i.fa.fa-clone.regular |                   i.fa.fa-clone.regular | ||||||
|                   | Clone |                   | Clone | ||||||
| 
 | 
 | ||||||
|                 a.btn( |                 a.btn( | ||||||
|                   class='btn-{ opts.read_write ? "warning" : "info" }' |                   class='btn-{ opts.read_write ? "warning" : "info" }' | ||||||
|                   href='/#/edit/{ cluster_path(this) }' |                   href='./#/edit/{ cluster_path(this) }' | ||||||
|                 ) |                 ) | ||||||
|                   | Edit |                   | Edit | ||||||
| 
 | 
 | ||||||
|  | @ -183,7 +183,7 @@ postgresqls | ||||||
|               | { namespace } |               | { namespace } | ||||||
|             td |             td | ||||||
|               a( |               a( | ||||||
|                 href='/#/status/{ cluster_path(this) }' |                 href='./#/status/{ cluster_path(this) }' | ||||||
|               ) |               ) | ||||||
|                 | { name } |                 | { name } | ||||||
|             td { nodes } |             td { nodes } | ||||||
|  | @ -203,7 +203,7 @@ postgresqls | ||||||
|               ) |               ) | ||||||
| 
 | 
 | ||||||
|                 a.btn.btn-info( |                 a.btn.btn-info( | ||||||
|                   href='/#/status/{ cluster_path(this) }' |                   href='./#/status/{ cluster_path(this) }' | ||||||
|                 ) |                 ) | ||||||
|                   i.fa.fa-check-circle.regular |                   i.fa.fa-check-circle.regular | ||||||
|                   | Status |                   | Status | ||||||
|  | @ -217,21 +217,21 @@ postgresqls | ||||||
|                   | Pgview |                   | Pgview | ||||||
| 
 | 
 | ||||||
|                 a.btn.btn-info( |                 a.btn.btn-info( | ||||||
|                   href='/#/logs/{ cluster_path(this) }' |                   href='./#/logs/{ cluster_path(this) }' | ||||||
|                 ) |                 ) | ||||||
|                   i.fa.fa-align-justify |                   i.fa.fa-align-justify | ||||||
|                   | Logs |                   | Logs | ||||||
| 
 | 
 | ||||||
|                 a.btn( |                 a.btn( | ||||||
|                   class='btn-{ opts.read_write ? "primary" : "info" }' |                   class='btn-{ opts.read_write ? "primary" : "info" }' | ||||||
|                   href='/#/clone/{ encodeURI(name) }/{ encodeURI(uid) }/{ encodeURI(new Date().toISOString()) }' |                   href='./#/clone/{ encodeURI(name) }/{ encodeURI(uid) }/{ encodeURI(new Date().toISOString()) }' | ||||||
|                 ) |                 ) | ||||||
|                   i.fa.fa-clone.regular |                   i.fa.fa-clone.regular | ||||||
|                   | Clone |                   | Clone | ||||||
| 
 | 
 | ||||||
|                 a.btn( |                 a.btn( | ||||||
|                   class='btn-{ opts.read_write ? "warning" : "info" }' |                   class='btn-{ opts.read_write ? "warning" : "info" }' | ||||||
|                   href='/#/edit/{ cluster_path(this) }' |                   href='./#/edit/{ cluster_path(this) }' | ||||||
|                 ) |                 ) | ||||||
|                   | Edit |                   | Edit | ||||||
| 
 | 
 | ||||||
|  | @ -343,7 +343,7 @@ postgresqls | ||||||
| 
 | 
 | ||||||
|     this.on('mount', () => |     this.on('mount', () => | ||||||
|       jQuery |       jQuery | ||||||
|       .get('/postgresqls') |       .get('./postgresqls') | ||||||
|       .done(clusters => { |       .done(clusters => { | ||||||
|         this.my_clusters = [] |         this.my_clusters = [] | ||||||
|         this.other_clusters = [] |         this.other_clusters = [] | ||||||
|  |  | ||||||
|  | @ -10,7 +10,7 @@ restore | ||||||
|       | |       | | ||||||
|       | or |       | or | ||||||
|       | |       | | ||||||
|       a(href="/") start over |       a(href="./") start over | ||||||
|       | . |       | . | ||||||
| 
 | 
 | ||||||
|     p(if='{ stored_clusters && stored_clusters.length === 0 }') |     p(if='{ stored_clusters && stored_clusters.length === 0 }') | ||||||
|  | @ -23,7 +23,7 @@ restore | ||||||
|           ol.breadcrumb |           ol.breadcrumb | ||||||
| 
 | 
 | ||||||
|             li.breadcrumb-item |             li.breadcrumb-item | ||||||
|               a(href='/#/backups') |               a(href='./#/backups') | ||||||
|                 | PostgreSQL cluster backups ({ stored_clusters.length }) |                 | PostgreSQL cluster backups ({ stored_clusters.length }) | ||||||
| 
 | 
 | ||||||
|       p |       p | ||||||
|  | @ -63,7 +63,7 @@ restore | ||||||
|               p(if='{ versions === null }') |               p(if='{ versions === null }') | ||||||
|                 | Error loading backups.  Please try again or |                 | Error loading backups.  Please try again or | ||||||
|                 | |                 | | ||||||
|                 a(href="/") start over |                 a(href="./") start over | ||||||
|                 | . |                 | . | ||||||
| 
 | 
 | ||||||
|               p(if='{ versions && versions.length === 0 }') |               p(if='{ versions && versions.length === 0 }') | ||||||
|  | @ -96,7 +96,7 @@ restore | ||||||
|                         p(if='{ basebackups === null }') |                         p(if='{ basebackups === null }') | ||||||
|                           | Error loading snapshots.  Please try again or |                           | Error loading snapshots.  Please try again or | ||||||
|                           | |                           | | ||||||
|                           a(href="/") start over |                           a(href="./") start over | ||||||
|                           | . |                           | . | ||||||
| 
 | 
 | ||||||
|                         p(if='{ basebackups && basebackups.length === 0 }') |                         p(if='{ basebackups && basebackups.length === 0 }') | ||||||
|  | @ -312,7 +312,7 @@ restore | ||||||
|       get_subresources_once({ |       get_subresources_once({ | ||||||
|         parent_resource: this, |         parent_resource: this, | ||||||
|         key: 'stored_clusters', |         key: 'stored_clusters', | ||||||
|         url: '/stored_clusters', |         url: './stored_clusters', | ||||||
|         build_subresource: stored_cluster_name => ({ |         build_subresource: stored_cluster_name => ({ | ||||||
|           id: 'stored-cluster-' + stored_cluster_name, |           id: 'stored-cluster-' + stored_cluster_name, | ||||||
|           name: stored_cluster_name, |           name: stored_cluster_name, | ||||||
|  | @ -324,7 +324,7 @@ restore | ||||||
|           body: stored_cluster => get_subresources_once({ |           body: stored_cluster => get_subresources_once({ | ||||||
|             parent_resource: stored_cluster, |             parent_resource: stored_cluster, | ||||||
|             key: 'versions', |             key: 'versions', | ||||||
|             url: '/stored_clusters/' + stored_cluster.name, |             url: './stored_clusters/' + stored_cluster.name, | ||||||
|             build_subresource: version_name => ({ |             build_subresource: version_name => ({ | ||||||
|               id: stored_cluster.id + '-version-' + version_name, |               id: stored_cluster.id + '-version-' + version_name, | ||||||
|               name: version_name, |               name: version_name, | ||||||
|  | @ -340,7 +340,7 @@ restore | ||||||
|                 parent_resource: version, |                 parent_resource: version, | ||||||
|                 key: 'basebackups', |                 key: 'basebackups', | ||||||
|                 url: ( |                 url: ( | ||||||
|                   '/stored_clusters/' + stored_cluster.name |                   './stored_clusters/' + stored_cluster.name | ||||||
|                   + '/' + version.name |                   + '/' + version.name | ||||||
|                 ), |                 ), | ||||||
|                 build_subresource: basebackup => Object.assign(basebackup, { |                 build_subresource: basebackup => Object.assign(basebackup, { | ||||||
|  |  | ||||||
|  | @ -6,19 +6,19 @@ status | ||||||
|         ol.breadcrumb |         ol.breadcrumb | ||||||
| 
 | 
 | ||||||
|           li.breadcrumb-item |           li.breadcrumb-item | ||||||
|             a(href='/#/operator') |             a(href='./#/operator') | ||||||
|               | Workers |               | Workers | ||||||
| 
 | 
 | ||||||
|           virtual(if='{ operatorShowLogs && logs }') |           virtual(if='{ operatorShowLogs && logs }') | ||||||
|             li.breadcrumb-item { worker_id } |             li.breadcrumb-item { worker_id } | ||||||
|             li.breadcrumb-item |             li.breadcrumb-item | ||||||
|               a(href='/#/operator/worker/{ worker_id }/logs') |               a(href='./#/operator/worker/{ worker_id }/logs') | ||||||
|                 | Logs |                 | Logs | ||||||
| 
 | 
 | ||||||
|           virtual(if='{ operatorShowQueue && queue }') |           virtual(if='{ operatorShowQueue && queue }') | ||||||
|             li.breadcrumb-item { worker_id } |             li.breadcrumb-item { worker_id } | ||||||
|             li.breadcrumb-item |             li.breadcrumb-item | ||||||
|               a(href='/#/operator/worker/{ worker_id }/queue') |               a(href='./#/operator/worker/{ worker_id }/queue') | ||||||
|                 | Queue |                 | Queue | ||||||
| 
 | 
 | ||||||
|     div(if='{ status }') |     div(if='{ status }') | ||||||
|  | @ -44,12 +44,12 @@ status | ||||||
|               ) |               ) | ||||||
| 
 | 
 | ||||||
|                 a.btn.btn-info( |                 a.btn.btn-info( | ||||||
|                   href='/#/operator/worker/{ worker_id }/logs' |                   href='./#/operator/worker/{ worker_id }/logs' | ||||||
|                 ) |                 ) | ||||||
|                   | Logs |                   | Logs | ||||||
| 
 | 
 | ||||||
|                 a.btn.btn-info( |                 a.btn.btn-info( | ||||||
|                   href='/#/operator/worker/{ worker_id }/queue' |                   href='./#/operator/worker/{ worker_id }/queue' | ||||||
|                 ) |                 ) | ||||||
|                   | Queue |                   | Queue | ||||||
| 
 | 
 | ||||||
|  | @ -96,7 +96,7 @@ status | ||||||
| 
 | 
 | ||||||
|     this.pollStatus = () => { |     this.pollStatus = () => { | ||||||
|       jQuery.get( |       jQuery.get( | ||||||
|         '/operator/status', |         './operator/status', | ||||||
|       ).done(data => { |       ).done(data => { | ||||||
|         this.update({status: data}) |         this.update({status: data}) | ||||||
|       }) |       }) | ||||||
|  | @ -111,7 +111,7 @@ status | ||||||
| 
 | 
 | ||||||
|     this.pollLogs = id => { |     this.pollLogs = id => { | ||||||
|       jQuery.get( |       jQuery.get( | ||||||
|         '/operator/workers/' + id + '/logs', |         './operator/workers/' + id + '/logs', | ||||||
|       ).done(data => { |       ).done(data => { | ||||||
|         data.reverse() |         data.reverse() | ||||||
|         this.update({logs: data}) |         this.update({logs: data}) | ||||||
|  | @ -120,7 +120,7 @@ status | ||||||
| 
 | 
 | ||||||
|     this.pollQueue = id => { |     this.pollQueue = id => { | ||||||
|       jQuery.get( |       jQuery.get( | ||||||
|         '/operator/workers/' + id + '/queue', |         './operator/workers/' + id + '/queue', | ||||||
|       ).done(data => |       ).done(data => | ||||||
|         this.update({queue: data.List}) |         this.update({queue: data.List}) | ||||||
|       ) |       ) | ||||||
|  |  | ||||||
|  | @ -62,9 +62,9 @@ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     <!-- self-hosted --> |     <!-- self-hosted --> | ||||||
|     <link href="/css/styles.css" rel="stylesheet"> |     <link href="./css/styles.css" rel="stylesheet"> | ||||||
|     <link href="/css/prism.css" rel="stylesheet"> |     <link href="./css/prism.css" rel="stylesheet"> | ||||||
|     <link href="/favicon.png" rel="icon" type="image/png"> |     <link href="./favicon.png" rel="icon" type="image/png"> | ||||||
| 
 | 
 | ||||||
|   </head> |   </head> | ||||||
| 
 | 
 | ||||||
|  | @ -168,8 +168,8 @@ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     <!-- self-hosted --> |     <!-- self-hosted --> | ||||||
|     <script src="/js/prism.js"></script> |     <script src="./js/prism.js"></script> | ||||||
|     <script src="/js/build/app.js"></script> |     <script src="./js/build/app.js"></script> | ||||||
| 
 | 
 | ||||||
|     {% if google_analytics %} |     {% if google_analytics %} | ||||||
|     <!-- Global site tag (gtag.js) - Google Analytics --> |     <!-- Global site tag (gtag.js) - Google Analytics --> | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue