mirror of https://github.com/rancher/ui.git
Merge pull request #2675 from vincent99/master
Cleanup custom cluster drivers
This commit is contained in:
commit
6b7005d46f
|
|
@ -281,9 +281,9 @@ const rootNav = [
|
|||
{
|
||||
scope: 'global',
|
||||
id: 'nodes-node-drivers',
|
||||
localizedLabel: 'nav.admin.nodeDrivers',
|
||||
localizedLabel: 'nav.admin.drivers',
|
||||
route: 'nodes.custom-drivers',
|
||||
resource: ['nodedriver', 'kontainerDriver'],
|
||||
resource: ['nodedriver', 'kontainerdriver'],
|
||||
resourceScope: 'global',
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
$btn-padding: 8px 15px;
|
||||
$xs-padding: 2px 3px;
|
||||
$sm-padding: 6px 10px 4px 10px;
|
||||
$sm-padding: 5px 10px 3px 10px;
|
||||
$lg-padding: 18px 30px;
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -73,6 +73,13 @@
|
|||
&.alidns { @include alidns; }
|
||||
}
|
||||
|
||||
.machine-driver-empty {
|
||||
height: 100px;
|
||||
margin-top: 10px;
|
||||
padding-top: 50px;
|
||||
color: $text-muted;
|
||||
}
|
||||
|
||||
.error-loading-driver {
|
||||
border: 2px solid red !important;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,15 @@
|
|||
<section class="header clearfix">
|
||||
<section class="header has-tabs clearfix p-0">
|
||||
<ul class="tab-nav">
|
||||
<li>
|
||||
{{#link-to "custom-drivers.cluster-drivers"}}{{t 'customDrivers.clusters'}}{{/link-to}}
|
||||
</li>
|
||||
<li>
|
||||
{{#link-to "custom-drivers.node-drivers"}}{{t 'customDrivers.nodes'}}{{/link-to}}
|
||||
</li>
|
||||
</ul>
|
||||
<div class="right-buttons">
|
||||
{{!-- <button disabled={{rbac-prevents resource="kontainerDriver" scope="global" permission="create"}} class="btn btn-sm bg-primary right-divider-btn" {{action 'addNewDriver'}}>{{t 'machinePage.add'}}</button> --}}
|
||||
<button class="btn btn-sm bg-primary right-divider-btn" {{action 'addNewDriver'}}>{{t 'clusterDrivers.add'}}</button>
|
||||
<button disabled={{rbac-prevents resource="kontainerdriver" scope="global" permission="create"}} class="btn btn-sm bg-primary right-divider-btn" {{action 'addNewDriver'}}>{{t 'clusterDrivers.add'}}</button>
|
||||
</div>
|
||||
|
||||
<h1>{{t 'clusterDrivers.title'}}</h1>
|
||||
</section>
|
||||
|
||||
{{#sortable-table
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import Route from '@ember/routing/route';
|
|||
export default Route.extend({
|
||||
redirect(model, transition) {
|
||||
if (transition.targetName === 'nodes.custom-drivers.index') {
|
||||
this.replaceWith('custom-drivers.node-drivers');
|
||||
this.replaceWith('custom-drivers.cluster-drivers');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,9 +1,15 @@
|
|||
<section class="header clearfix">
|
||||
<section class="header has-tabs clearfix p-0">
|
||||
<ul class="tab-nav">
|
||||
<li>
|
||||
{{#link-to "custom-drivers.cluster-drivers"}}{{t 'customDrivers.clusters'}}{{/link-to}}
|
||||
</li>
|
||||
<li>
|
||||
{{#link-to "custom-drivers.node-drivers"}}{{t 'customDrivers.nodes'}}{{/link-to}}
|
||||
</li>
|
||||
</ul>
|
||||
<div class="right-buttons">
|
||||
<button disabled={{rbac-prevents resource="nodedriver" scope="global" permission="create"}} class="btn btn-sm bg-primary right-divider-btn" {{action 'addNewDriver'}}>{{t 'machinePage.add'}}</button>
|
||||
</div>
|
||||
|
||||
<h1>{{t 'machinePage.header'}}</h1>
|
||||
</section>
|
||||
|
||||
{{#sortable-table
|
||||
|
|
|
|||
|
|
@ -1,12 +1 @@
|
|||
<section class="header has-tabs clearfix pb-0">
|
||||
<ul class="tab-nav">
|
||||
<li>
|
||||
{{#link-to "custom-drivers.cluster-drivers"}}{{t 'customDrivers.clusters'}}{{/link-to}}
|
||||
</li>
|
||||
<li>
|
||||
{{#link-to "custom-drivers.node-drivers"}}{{t 'customDrivers.nodes'}}{{/link-to}}
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
{{outlet}}
|
||||
|
|
@ -2,9 +2,9 @@ import buildRoutes from 'ember-engines/routes';
|
|||
|
||||
export default buildRoutes(function() {
|
||||
// Define your engine's route map here
|
||||
this.route('custom-drivers', { path: '/custom-drivers' }, function() {
|
||||
this.route('node-drivers', { path: '/node-drivers' });
|
||||
this.route('cluster-drivers', { path: '/cluster-drivers' });
|
||||
this.route('custom-drivers', { path: '/drivers' }, function() {
|
||||
this.route('node-drivers', { path: '/node' });
|
||||
this.route('cluster-drivers', { path: '/cluster' });
|
||||
});
|
||||
this.route('node-templates');
|
||||
});
|
||||
|
|
|
|||
|
|
@ -142,7 +142,7 @@ export default Component.extend(ViewNewEdit, ChildHook, {
|
|||
driver: get(c, 'name'),
|
||||
kontainerId: get(c, 'id'),
|
||||
name: get(c, 'name'),
|
||||
nodeWhich: 'external',
|
||||
genericIcon: true, // @TODO should have a way for drivers to provide an icon
|
||||
});
|
||||
} else {
|
||||
set(this, 'needReloadSchema', true);
|
||||
|
|
@ -203,6 +203,8 @@ export default Component.extend(ViewNewEdit, ChildHook, {
|
|||
out = out.filterBy('driver', 'rke');
|
||||
}
|
||||
|
||||
out.sortBy('name');
|
||||
|
||||
return out;
|
||||
}),
|
||||
|
||||
|
|
@ -212,7 +214,6 @@ export default Component.extend(ViewNewEdit, ChildHook, {
|
|||
const cloudGroup = [];
|
||||
const customGroup = [];
|
||||
const importGroup = [];
|
||||
const externalGroup = [];
|
||||
|
||||
choices.forEach((item) => {
|
||||
if (get(item, 'driver') === 'rke' && get(item, 'name') !== 'custom') {
|
||||
|
|
@ -221,8 +222,6 @@ export default Component.extend(ViewNewEdit, ChildHook, {
|
|||
importGroup.pushObject(item);
|
||||
} else if (get(item, 'name') === 'custom') {
|
||||
customGroup.pushObject(item);
|
||||
} else if (get(item, 'nodeWhich') === 'external') {
|
||||
externalGroup.pushObject(item)
|
||||
} else {
|
||||
cloudGroup.pushObject(item);
|
||||
}
|
||||
|
|
@ -231,7 +230,6 @@ export default Component.extend(ViewNewEdit, ChildHook, {
|
|||
return {
|
||||
cloudGroup,
|
||||
customGroup,
|
||||
externalGroup,
|
||||
importGroup,
|
||||
rkeGroup,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -13,113 +13,75 @@
|
|||
{{#unless initialProvider}}
|
||||
|
||||
<div class="row nav nav-boxes checked-active inline-form">
|
||||
<div class="col span-8 col-inline mt-0 mb-0">
|
||||
{{#if (gte providerGroups.cloudGroup.length 1)}}
|
||||
<div class="row nav checked-active inline-form">
|
||||
<div>
|
||||
<label class="acc-label">{{t 'clusterNew.driverLabels.cloud'}}</label>
|
||||
<div class="col span-8 col-inline mb-0">
|
||||
<div>
|
||||
<label class="acc-label">{{t 'clusterNew.driverLabels.cloud'}}</label>
|
||||
</div>
|
||||
{{#each (get providerGroups "cloudGroup") as |choice|}}
|
||||
{{#unless choice.scriptError}}
|
||||
{{#link-to (query-params provider=choice.name) class=(concat "mb-20 mt-10 col span-3 col-inline nav-box-item driver " choice.name)}}
|
||||
<div class="machine-driver {{if choice.genericIcon 'generic'}} {{choice.name}}"></div>
|
||||
<p class="driver-name">{{driver-name choice.name}}</p>
|
||||
{{/link-to}}
|
||||
{{else}}
|
||||
<div class={{concat "disabled error-loading-driver mb-20 mt-10 col span-3 col-inline nav-box-item driver " choice.name}}>
|
||||
{{#tooltip-element type="tooltip-basic" model=choice.scriptError tooltipTemplate='tooltip-static' aria-describedby="tooltip-base" tooltipFor="tooltipDriverError"}}
|
||||
<span class="icon icon-alert"></span>
|
||||
{{/tooltip-element}}
|
||||
<div class="machine-driver {{choice.name}}"></div>
|
||||
<p class="driver-name">{{driver-name choice.name}}</p>
|
||||
</div>
|
||||
{{#each (get providerGroups "cloudGroup") as |choice|}}
|
||||
{{#unless choice.scriptError}}
|
||||
{{#link-to (query-params provider=choice.name) class=(concat "mb-20 mt-10 col span-3 col-inline nav-box-item driver " choice.name)}}
|
||||
<div class="machine-driver {{choice.name}}"></div>
|
||||
<p class="driver-name">{{driver-name choice.name}}</p>
|
||||
{{#if choice.genericIcon}}
|
||||
<p class="text-link text-bold">{{driver-name choice.name}}</p>
|
||||
{{/if}}
|
||||
{{/link-to}}
|
||||
{{else}}
|
||||
<div
|
||||
class={{concat "disabled error-loading-driver mb-20 mt-10 col span-3 col-inline nav-box-item driver " choice.name}}>
|
||||
{{#tooltip-element type="tooltip-basic" model=choice.scriptError tooltipTemplate='tooltip-static' aria-describedby="tooltip-base" tooltipFor="tooltipDriverError"}}
|
||||
<span class="icon icon-alert"></span>
|
||||
{{/tooltip-element}}
|
||||
<div class="machine-driver {{choice.name}}"></div>
|
||||
<p class="driver-name">{{driver-name choice.name}}</p>
|
||||
{{#if choice.genericIcon}}
|
||||
<p class="text-link text-bold">{{driver-name choice.name}}</p>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/unless}}
|
||||
{{/each}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if (gte providerGroups.rkeGroup.length 1)}}
|
||||
<div class="row">
|
||||
<div>
|
||||
<label class="acc-label">{{t 'clusterNew.driverLabels.infra'}}</label>
|
||||
</div>
|
||||
{{#each (get providerGroups "rkeGroup") as |choice|}}
|
||||
{{#link-to (query-params provider=choice.name) class=(concat "mb-20 mt-10 col span-3 col-inline nav-box-item driver " choice.name)}}
|
||||
<div class="machine-driver {{if choice.genericIcon 'generic'}} {{choice.name}}"></div>
|
||||
<p class="driver-name">{{driver-name choice.name}}</p>
|
||||
{{/link-to}}
|
||||
{{/each}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if (gte providerGroups.externalGroup.length 1)}}
|
||||
<div class="row">
|
||||
<div>
|
||||
<label class="acc-label">{{t 'clusterNew.driverLabels.external'}}</label>
|
||||
</div>
|
||||
{{#each (get providerGroups "externalGroup") as |choice|}}
|
||||
{{#unless choice.scriptError}}
|
||||
{{#link-to (query-params provider=choice.name) class=(concat "mb-20 mt-10 col span-3 col-inline nav-box-item driver " choice.name)}}
|
||||
<div class="machine-driver {{choice.name}}"></div>
|
||||
<p class="driver-name">{{driver-name choice.name}}</p>
|
||||
{{#if choice.genericIcon}}
|
||||
<p class="text-link text-bold">{{driver-name choice.name}}</p>
|
||||
{{/if}}
|
||||
{{/link-to}}
|
||||
{{else}}
|
||||
<div
|
||||
class={{concat "disabled error-loading-driver mb-20 mt-10 col span-3 col-inline nav-box-item driver " choice.name}}>
|
||||
{{#tooltip-element type="tooltip-basic" model=choice.scriptError tooltipTemplate='tooltip-static' aria-describedby="tooltip-base" tooltipFor="tooltipDriverError"}}
|
||||
<span class="icon icon-alert"></span>
|
||||
{{/tooltip-element}}
|
||||
<div class="machine-driver {{choice.name}}"></div>
|
||||
<p class="driver-name">{{driver-name choice.name}}</p>
|
||||
{{#if choice.genericIcon}}
|
||||
<p class="text-link text-bold">{{driver-name choice.name}}</p>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/unless}}
|
||||
{{/each}}
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/unless}}
|
||||
{{else}}
|
||||
<div class="machine-driver-empty">{{t 'clusterNew.driverLabels.noCloud'}}</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
<div class="col span-2 col-inline mt-0 mb-0">
|
||||
<div class="row">
|
||||
<div>
|
||||
<label class="acc-label">{{t 'clusterNew.driverLabels.import'}}</label>
|
||||
</div>
|
||||
{{#each (get providerGroups "importGroup") as |choice|}}
|
||||
{{#link-to (query-params provider=choice.name) class=(concat "mb-20 mt-10 col span-12 col-inline nav-box-item driver " choice.name)}}
|
||||
<div class="machine-driver {{choice.name}}"></div>
|
||||
<p class="driver-name">{{driver-name choice.name}}</p>
|
||||
{{#if choice.genericIcon}}
|
||||
<p class="text-link text-bold">{{driver-name choice.name}}</p>
|
||||
{{/if}}
|
||||
{{/link-to}}
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div>
|
||||
<label class="acc-label">{{t 'clusterNew.driverLabels.custom'}}</label>
|
||||
</div>
|
||||
{{#each (get providerGroups "customGroup") as |choice|}}
|
||||
{{#link-to (query-params provider=choice.name) class=(concat "mb-20 mt-10 col span-12 col-inline nav-box-item driver " choice.name)}}
|
||||
<div class="machine-driver {{choice.name}}"></div>
|
||||
<p class="driver-name">{{driver-name choice.name}}</p>
|
||||
{{#if choice.genericIcon}}
|
||||
<p class="text-link text-bold">{{driver-name choice.name}}</p>
|
||||
{{/if}}
|
||||
{{/link-to}}
|
||||
{{/each}}
|
||||
<div class="col span-2 col-inline mb-0">
|
||||
<div>
|
||||
<label class="acc-label">{{t 'clusterNew.driverLabels.import'}}</label>
|
||||
</div>
|
||||
{{#each (get providerGroups "importGroup") as |choice|}}
|
||||
{{#link-to (query-params provider=choice.name) class=(concat "mb-20 mt-10 col span-12 col-inline nav-box-item driver " choice.name)}}
|
||||
<div class="machine-driver {{choice.name}}"></div>
|
||||
<p class="driver-name">{{driver-name choice.name}}</p>
|
||||
{{#if choice.genericIcon}}
|
||||
<p class="text-link text-bold">{{driver-name choice.name}}</p>
|
||||
{{/if}}
|
||||
{{/link-to}}
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row nav nav-boxes checked-active inline-form">
|
||||
<div class="col span-8 col-inline mt-0">
|
||||
<div>
|
||||
<label class="acc-label">{{t 'clusterNew.driverLabels.infra'}}</label>
|
||||
</div>
|
||||
{{#each (get providerGroups "rkeGroup") as |choice|}}
|
||||
{{#link-to (query-params provider=choice.name) class=(concat "mb-20 mt-10 col span-3 col-inline nav-box-item driver " choice.name)}}
|
||||
<div class="machine-driver {{if choice.genericIcon 'generic'}} {{choice.name}}"></div>
|
||||
<p class="driver-name">{{driver-name choice.name}}</p>
|
||||
{{/link-to}}
|
||||
{{else}}
|
||||
<div class="machine-driver-empty">{{t 'clusterNew.driverLabels.noInfra'}}</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
<div class="col span-2 col-inline mt-0">
|
||||
<div>
|
||||
<label class="acc-label">{{t 'clusterNew.driverLabels.custom'}}</label>
|
||||
</div>
|
||||
{{#each (get providerGroups "customGroup") as |choice|}}
|
||||
{{#link-to (query-params provider=choice.name) class=(concat "mb-20 mt-10 col span-12 col-inline nav-box-item driver " choice.name)}}
|
||||
<div class="machine-driver {{choice.name}}"></div>
|
||||
<p class="driver-name">{{driver-name choice.name}}</p>
|
||||
{{#if choice.genericIcon}}
|
||||
<p class="text-link text-bold">{{driver-name choice.name}}</p>
|
||||
{{/if}}
|
||||
{{/link-to}}
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
|
|
|
|||
|
|
@ -23,21 +23,39 @@ module.exports = function(app, options) {
|
|||
return;
|
||||
}
|
||||
|
||||
proxyLog('WS', req);
|
||||
|
||||
if ( socket.ssl ) {
|
||||
req.headers['x-forwarded-proto'] = 'https';
|
||||
}
|
||||
|
||||
|
||||
|
||||
let targetHost = config.apiServer.replace(/^https?:\/\//, '');
|
||||
let host = req.headers['host'];
|
||||
let port;
|
||||
|
||||
req.headers['x-forwarded-host'] = req.headers['host'];
|
||||
if ( socket.ssl ) {
|
||||
req.headers['x-forwarded-proto'] = 'https';
|
||||
port = 443;
|
||||
} else {
|
||||
req.headers['x-forwarded-proto'] = 'http';
|
||||
port = 80;
|
||||
}
|
||||
|
||||
if ( host ) {
|
||||
idx = host.lastIndexOf(':');
|
||||
if ( ( host.startsWith('[') && host.includes(']:') || !host.startsWith('[') ) && idx > 0 ){
|
||||
port = host.substr(idx+1);
|
||||
host = host.substr(0, host.lastIndexOf(':'));
|
||||
}
|
||||
}
|
||||
|
||||
req.headers['x-forwarded-host'] = host;
|
||||
req.headers['x-forwarded-port'] = port;
|
||||
req.headers['host'] = targetHost;
|
||||
req.headers['origin'] = config.apiServer;
|
||||
req.socket.servername = targetHost;
|
||||
|
||||
proxyLog('WS', req);
|
||||
|
||||
try {
|
||||
proxy.ws(req, socket, head);
|
||||
} catch (err) {
|
||||
|
|
@ -113,5 +131,5 @@ function onProxyError(err, req, res) {
|
|||
}
|
||||
|
||||
function proxyLog(label, req) {
|
||||
console.log(`[${ label }][${ req._source }]`, req.method, req.url);
|
||||
console.log(`[${ label }]`, req.method, req.url);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2118,9 +2118,10 @@ clusterNew:
|
|||
driverLabels:
|
||||
cloud: In a hosted Kubernetes provider
|
||||
custom: From my own existing nodes
|
||||
external: User Provided
|
||||
import: Import existing cluster
|
||||
infra: From nodes in an infrastructure provider
|
||||
noCloud: There are no cluster drivers enabled.
|
||||
noInfra: There are no node drivers enabled.
|
||||
externalError: 'Component could not be loaded. Check URL.'
|
||||
members:
|
||||
label: Member Roles
|
||||
|
|
@ -5866,7 +5867,6 @@ customDrivers:
|
|||
clusters: Cluster Drivers
|
||||
|
||||
clusterDrivers:
|
||||
title: Cluster Drivers
|
||||
add: Add Cluster Driver
|
||||
builtIn: Built-In
|
||||
table:
|
||||
|
|
@ -6983,7 +6983,7 @@ nav:
|
|||
accounts: Users
|
||||
clusters: Clusters
|
||||
machines: Nodes
|
||||
nodeDrivers: Custom Drivers
|
||||
drivers: Drivers
|
||||
catalogs: Catalogs
|
||||
globalDns: Global DNS
|
||||
globalDnsEntries: Entries
|
||||
|
|
|
|||
Loading…
Reference in New Issue