Merge "fix: Fix certificate and magnum"

This commit is contained in:
Zuul 2022-06-16 07:15:22 +00:00 committed by Gerrit Code Review
commit 7741b99e1f
8 changed files with 126 additions and 159 deletions

View File

@ -12,113 +12,95 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
import Base from "components/Form"; import Base from 'components/Form';
import { inject, observer } from "mobx-react"; import { inject, observer } from 'mobx-react';
import globalNetworkStore from "src/stores/neutron/network";
export class StepNetworks extends Base { export class StepNetworks extends Base {
init() {
this.getNetworks();
}
get title() { get title() {
return t("Cluster Network") return t('Cluster Network');
} }
get name() { get name() {
return t("Cluster Network") return t('Cluster Network');
} }
allowed = () => Promise.resolve(); allowed = () => Promise.resolve();
get defaultValue() { get defaultValue() {
return { return {
enableNetwork: true enableNetwork: true,
}; };
} }
get nameForStateUpdate() { get nameForStateUpdate() {
return ['enableNetwork'] return ['enableNetwork'];
}
async getNetworks() {
globalNetworkStore.fetchList();
}
get getNetworkList() {
return (globalNetworkStore.list.data || []).map((it) => ({
value: it.id,
label: it.name,
}));
} }
get formItems() { get formItems() {
const { enableNetwork } = this.state; const { enableNetwork } = this.state;
return [ return [
{ {
name: "enableLoadBalancer", name: 'enableLoadBalancer',
label: t("Enable Load Balancer"), label: t('Enable Load Balancer'),
type: "check", type: 'check',
content: t("Enabled Load Balancer for Master Nodes"), content: t('Enabled Load Balancer for Master Nodes'),
}, },
{ {
name: "enableNetwork", name: 'enableNetwork',
label: t("Enabled Network"), label: t('Enabled Network'),
type: "check", type: 'check',
content: t("Create New Network"), content: t('Create New Network'),
}, },
{ {
name: "network", name: 'network',
label: t("Use an Existing Network"), label: t('Use an Existing Network'),
type: 'network-select-table', type: 'network-select-table',
hidden: enableNetwork hidden: enableNetwork,
}, },
{ {
type: "divider" type: 'divider',
}, },
{ {
name: "floating_ip_enabled", name: 'floating_ip_enabled',
label: t("Cluster API"), label: t('Cluster API'),
type: "select", type: 'select',
options: [ options: [
{ {
label: t("Accessible on private network only"), label: t('Accessible on private network only'),
value: "networkOnly" value: 'networkOnly',
}, },
{ {
label: t("Accessible on the public internet"), label: t('Accessible on the public internet'),
value: "publicInternet" value: 'publicInternet',
} },
], ],
}, },
{ {
type: "divider" type: 'divider',
}, },
{ {
name: "ingress_controller", name: 'ingress_controller',
label: t("Ingress Controller"), label: t('Ingress Controller'),
type: "select", type: 'select',
options: [ options: [
{ {
label: t("octavia"), label: t('octavia'),
value: "octavia" value: 'octavia',
}, },
{ {
label: t("nginx"), label: t('nginx'),
value: "nginx" value: 'nginx',
}, },
{ {
label: t("traefik"), label: t('traefik'),
value: "traefik" value: 'traefik',
} },
], ],
placeholder: t("Choose an ingress controller"), placeholder: t('Choose an ingress controller'),
} },
] ];
} }
} }
export default inject("rootStore")(observer(StepNetworks)) export default inject('rootStore')(observer(StepNetworks));

View File

@ -13,17 +13,17 @@
// limitations under the License. // limitations under the License.
import React from 'react'; import React from 'react';
import { inject, observer } from "mobx-react"; import { inject, observer } from 'mobx-react';
import Base from "components/Form"; import Base from 'components/Form';
import FlavorSelectTable from 'src/pages/compute/containers/Instance/components/FlavorSelectTable'; import FlavorSelectTable from 'src/pages/compute/containers/Instance/components/FlavorSelectTable';
export class StepSize extends Base { export class StepSize extends Base {
get title() { get title() {
return t("Cluster Size") return t('Cluster Size');
} }
get name() { get name() {
return t("Cluster Size") return t('Cluster Size');
} }
allowed = () => Promise.resolve(); allowed = () => Promise.resolve();
@ -41,38 +41,38 @@ export class StepSize extends Base {
get formItems() { get formItems() {
return [ return [
{ {
name: "numberOfMasterNodes", name: 'numberOfMasterNodes',
label: t("Number of Master Nodes"), label: t('Number of Master Nodes'),
type: "input-number", type: 'input-int',
min: 1, min: 1,
required: true required: true,
}, },
{ {
name: "flavorOfMasterNodes", name: 'flavorOfMasterNodes',
label: t("Flavor of Master Nodes"), label: t('Flavor of Master Nodes'),
type: 'select-table', type: 'select-table',
component: this.getFlavorComponent(), component: this.getFlavorComponent(),
required: true, required: true,
}, },
{ {
type: "divider" type: 'divider',
}, },
{ {
name: "numberOfWorkerNodes", name: 'numberOfWorkerNodes',
label: t("Number of Worker Nodes"), label: t('Number of Worker Nodes'),
type: "input-number", type: 'input-int',
min: 1, min: 1,
required: true, required: true,
}, },
{ {
name: "flavorOfWorkerNodes", name: 'flavorOfWorkerNodes',
label: t("Flavor of Worker Nodes"), label: t('Flavor of Worker Nodes'),
type: 'select-table', type: 'select-table',
component: this.getFlavorComponent(), component: this.getFlavorComponent(),
required: true required: true,
} },
] ];
} }
} }
export default inject('rootStore')(observer(StepSize)); export default inject('rootStore')(observer(StepSize));

View File

@ -10,38 +10,38 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
import StepDetails from "./StepDetails"; import { inject, observer } from 'mobx-react';
import { StepAction } from 'src/containers/Action';
import globalClustersStore from 'src/stores/magnum/clusters';
import StepDetails from './StepDetails';
import StepSize from './StepSize'; import StepSize from './StepSize';
import StepNetworks from './StepNetworks'; import StepNetworks from './StepNetworks';
import StepManagement from './StepManagement'; import StepManagement from './StepManagement';
import StepAdvanced from './StepAdvanced'; import StepAdvanced from './StepAdvanced';
import { inject, observer } from "mobx-react";
import { StepAction } from "src/containers/Action";
import globalClustersStore from "src/stores/magnum/clusters";
export class StepCreate extends StepAction { export class StepCreate extends StepAction {
init() { init() {
this.store = globalClustersStore this.store = globalClustersStore;
} }
static id = "create-cluster"; static id = 'create-cluster';
static title = t("Create Cluster"); static title = t('Create Cluster');
static path = "/container-infra/clusters/create"; static path = '/container-infra/clusters/create';
static policy = "container-infra:cluster:create"; static policy = 'container-infra:cluster:create';
static allowed() { static allowed() {
return Promise.resolve(true); return Promise.resolve(true);
} }
get name() { get name() {
return t("Create Instance"); return t('Create Instance');
} }
get listUrl() { get listUrl() {
return this.getRoutePath("containerInfraClusters"); return this.getRoutePath('containerInfraClusters');
} }
get hasConfirmStep() { get hasConfirmStep() {
@ -51,31 +51,31 @@ export class StepCreate extends StepAction {
get steps() { get steps() {
return [ return [
{ {
title: t("Details *"), title: t('Details *'),
component: StepDetails component: StepDetails,
}, },
{ {
title: t("Size: *"), title: t('Size: *'),
component: StepSize component: StepSize,
}, },
{ {
title: t("Networks"), title: t('Networks'),
component: StepNetworks component: StepNetworks,
}, },
{ {
title: t("Management"), title: t('Management'),
component: StepManagement component: StepManagement,
}, },
{ {
title: t("Advanced"), title: t('Advanced'),
component: StepAdvanced component: StepAdvanced,
} },
] ];
} }
onSubmit = (values) => { onSubmit = (values) => {
const { additionalLabels, auto_healing_enabled, auto_scaling_enabled } =
const { additionalLabels, auto_healing_enabled, auto_scaling_enabled } = values; values;
const requestLabels = {}; const requestLabels = {};
if (additionalLabels) { if (additionalLabels) {
@ -83,34 +83,36 @@ export class StepCreate extends StepAction {
const labelKey = item.value.key.toLowerCase().trim(); const labelKey = item.value.key.toLowerCase().trim();
const labelValue = item.value.value.toLowerCase().trim(); const labelValue = item.value.value.toLowerCase().trim();
requestLabels[labelKey] = labelValue; requestLabels[labelKey] = labelValue;
}) });
} }
const data = { const data = {
name: values.clusterName, name: values.clusterName,
labels: { labels: {
...requestLabels, ...requestLabels,
auto_healing_enabled: auto_healing_enabled, auto_healing_enabled,
auto_scaling_enabled: auto_scaling_enabled, auto_scaling_enabled,
admission_control_list: 'NodeRestriction,NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,TaintNodesByCondition,Priority,DefaultTolerationSeconds,DefaultStorageClass,StorageObjectInUseProtection,PersistentVolumeClaimResize,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,RuntimeClass' admission_control_list:
'NodeRestriction,NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,TaintNodesByCondition,Priority,DefaultTolerationSeconds,DefaultStorageClass,StorageObjectInUseProtection,PersistentVolumeClaimResize,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,RuntimeClass',
}, },
cluster_template_id: values.clusterTemplateId, cluster_template_id: values.clusterTemplateId,
create_timeout: 60, create_timeout: 60,
master_count: values.numberOfMasterNodes, master_count: values.numberOfMasterNodes,
node_count: values.numberOfWorkerNodes, node_count: values.numberOfWorkerNodes,
keypair: values.keypair, keypair: values.keypair,
master_flavor_id: values.flavorOfMasterNodes, master_flavor_id: values.flavorOfMasterNodes.selectedRowKeys[0],
flavor_id: values.flavorOfWorkerNodes, flavor_id: values.flavorOfWorkerNodes.selectedRowKeys[0],
master_lb_enabled: values.enableLoadBalancer, master_lb_enabled: values.enableLoadBalancer,
floating_ip_enabled: values.floating_ip_enabled === 'networkOnly' ? false : true, floating_ip_enabled: values.floating_ip_enabled !== 'networkOnly',
}; };
if (!values.enableNetwork) { if (!values.enableNetwork && values.network) {
data.fixed_network = values.network; const { selectedRowKeys = [] } = values.network;
data.fixed_network = selectedRowKeys[0];
} }
return this.store.create(data); return this.store.create(data);
} };
} }
export default inject("rootStore")(observer(StepCreate)) export default inject('rootStore')(observer(StepCreate));

View File

@ -19,8 +19,8 @@ import ClustersDetail from '../containers/Clusters/Detail';
import ClusterTemplates from '../containers/ClusterTemplates'; import ClusterTemplates from '../containers/ClusterTemplates';
import ClusterTemplateDetail from '../containers/ClusterTemplates/Detail'; import ClusterTemplateDetail from '../containers/ClusterTemplates/Detail';
import ClustersCreate from '../containers/Clusters/actions/StepCreate'; import ClustersCreate from '../containers/Clusters/actions/StepCreate';
import ClustersTemplateCreate from '../containers/ClusterTemplates/actions/StepCreate' import ClustersTemplateCreate from '../containers/ClusterTemplates/actions/StepCreate';
import StepUpdateClusterTemplate from '../containers/ClusterTemplates/actions/EditStep' import StepUpdateClusterTemplate from '../containers/ClusterTemplates/actions/EditStep';
const PATH = '/container-infra'; const PATH = '/container-infra';
export default [ export default [
@ -29,20 +29,36 @@ export default [
component: BaseLayout, component: BaseLayout,
routes: [ routes: [
{ path: `${PATH}/clusters`, component: Clusters, exact: true }, { path: `${PATH}/clusters`, component: Clusters, exact: true },
{ path: `${PATH}/clusters/detail/:id`, component: ClustersDetail, exact: true }, {
{ path: `${PATH}/cluster-template`, component: ClusterTemplates, exact: true }, path: `${PATH}/clusters/detail/:id`,
{ path: `${PATH}/cluster-template/detail/:id`, component: ClusterTemplateDetail, exact: true }, component: ClustersDetail,
exact: true,
},
{
path: `${PATH}/cluster-template`,
component: ClusterTemplates,
exact: true,
},
{
path: `${PATH}/cluster-template/detail/:id`,
component: ClusterTemplateDetail,
exact: true,
},
{ {
path: `${PATH}/clusters/create`, path: `${PATH}/clusters/create`,
component: ClustersCreate, component: ClustersCreate,
exact: true, exact: true,
}, },
{ {
path: `${PATH}/clusters-template/create`, path: `${PATH}/cluster-template/create`,
component: ClustersTemplateCreate, component: ClustersTemplateCreate,
exact: true, exact: true,
}, },
{ path: `${PATH}/cluster-template/update/:id`, component: StepUpdateClusterTemplate, exact: true }, {
path: `${PATH}/cluster-template/update/:id`,
component: StepUpdateClusterTemplate,
exact: true,
},
{ path: '*', component: E404 }, { path: '*', component: E404 },
], ],
}, },

View File

@ -14,7 +14,6 @@ import { SecurityGroupStore } from 'stores/neutron/security-group';
import { VirtualAdapterStore } from 'stores/neutron/virtual-adapter'; import { VirtualAdapterStore } from 'stores/neutron/virtual-adapter';
import Base from 'components/Form'; import Base from 'components/Form';
import { inject, observer } from 'mobx-react'; import { inject, observer } from 'mobx-react';
import globalNetworkStore from 'src/stores/neutron/network';
import { portColumns, portFilters } from 'src/resources/neutron/port'; import { portColumns, portFilters } from 'src/resources/neutron/port';
import { import {
securityGroupColumns, securityGroupColumns,
@ -23,7 +22,6 @@ import {
export class StepNetworks extends Base { export class StepNetworks extends Base {
init() { init() {
this.getNetworkStore();
this.portStore = new VirtualAdapterStore(); this.portStore = new VirtualAdapterStore();
this.securityGroupStore = new SecurityGroupStore(); this.securityGroupStore = new SecurityGroupStore();
} }
@ -36,17 +34,6 @@ export class StepNetworks extends Base {
return t('Networks'); return t('Networks');
} }
async getNetworkStore() {
await globalNetworkStore.fetchList({ project_id: this.currentProjectId });
}
get networking() {
return (globalNetworkStore.list.data || []).map((it) => ({
label: it.name,
value: it.id,
}));
}
get formItems() { get formItems() {
return [ return [
{ {

View File

@ -149,7 +149,7 @@ export class StepDetails extends Base {
{ {
name: 'size', name: 'size',
label: t('Size (GiB)'), label: t('Size (GiB)'),
type: 'input-number', type: 'input-int',
min: 1, min: 1,
max: 50, max: 50,
placeholder: t('Size'), placeholder: t('Size'),

View File

@ -14,14 +14,8 @@
import { inject, observer } from 'mobx-react'; import { inject, observer } from 'mobx-react';
import Base from 'components/Form'; import Base from 'components/Form';
import globalNetworkStore from 'stores/neutron/network';
export class StepNetworking extends Base { export class StepNetworking extends Base {
init() {
this.getNetworkStore();
this.selectedNetwork = [];
}
get title() { get title() {
return t('Networking *'); return t('Networking *');
} }
@ -30,23 +24,8 @@ export class StepNetworking extends Base {
return 'Networking'; return 'Networking';
} }
get networking() {
return (globalNetworkStore.list.data || []).map((it) => ({
label: it.name,
value: it.id,
}));
}
allowed = () => Promise.resolve(); allowed = () => Promise.resolve();
async getNetworkStore() {
await globalNetworkStore.fetchList();
}
onChangeNetworkGroup = (checkedValues) => {
this.selectedNetwork = checkedValues;
};
get defaultValue() { get defaultValue() {
const values = { const values = {
project: this.currentProjectName, project: this.currentProjectName,
@ -66,9 +45,9 @@ export class StepNetworking extends Base {
}, },
{ {
name: 'network', name: 'network',
label: t('Options'), label: t('Network'),
type: 'network-select-table', type: 'network-select-table',
options: this.networking, required: true,
}, },
]; ];
} }

View File

@ -121,6 +121,7 @@ export class Certificate extends Base {
: '-'; : '-';
}, },
isHideable: true, isHideable: true,
stringify: (value = []) => value.map((it) => it.name).join(',') || '-',
}, },
{ {
title: t('Status'), title: t('Status'),