Merge "fix: Fix certificate and magnum"
This commit is contained in:
commit
7741b99e1f
@ -12,113 +12,95 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import Base from "components/Form";
|
||||
import { inject, observer } from "mobx-react";
|
||||
import globalNetworkStore from "src/stores/neutron/network";
|
||||
import Base from 'components/Form';
|
||||
import { inject, observer } from 'mobx-react';
|
||||
|
||||
export class StepNetworks extends Base {
|
||||
|
||||
init() {
|
||||
this.getNetworks();
|
||||
}
|
||||
|
||||
get title() {
|
||||
return t("Cluster Network")
|
||||
return t('Cluster Network');
|
||||
}
|
||||
|
||||
get name() {
|
||||
return t("Cluster Network")
|
||||
return t('Cluster Network');
|
||||
}
|
||||
|
||||
allowed = () => Promise.resolve();
|
||||
|
||||
get defaultValue() {
|
||||
return {
|
||||
enableNetwork: true
|
||||
enableNetwork: true,
|
||||
};
|
||||
}
|
||||
|
||||
get nameForStateUpdate() {
|
||||
return ['enableNetwork']
|
||||
}
|
||||
|
||||
async getNetworks() {
|
||||
globalNetworkStore.fetchList();
|
||||
}
|
||||
|
||||
get getNetworkList() {
|
||||
return (globalNetworkStore.list.data || []).map((it) => ({
|
||||
value: it.id,
|
||||
label: it.name,
|
||||
}));
|
||||
return ['enableNetwork'];
|
||||
}
|
||||
|
||||
get formItems() {
|
||||
|
||||
const { enableNetwork } = this.state;
|
||||
|
||||
return [
|
||||
{
|
||||
name: "enableLoadBalancer",
|
||||
label: t("Enable Load Balancer"),
|
||||
type: "check",
|
||||
content: t("Enabled Load Balancer for Master Nodes"),
|
||||
name: 'enableLoadBalancer',
|
||||
label: t('Enable Load Balancer'),
|
||||
type: 'check',
|
||||
content: t('Enabled Load Balancer for Master Nodes'),
|
||||
},
|
||||
{
|
||||
name: "enableNetwork",
|
||||
label: t("Enabled Network"),
|
||||
type: "check",
|
||||
content: t("Create New Network"),
|
||||
name: 'enableNetwork',
|
||||
label: t('Enabled Network'),
|
||||
type: 'check',
|
||||
content: t('Create New Network'),
|
||||
},
|
||||
{
|
||||
name: "network",
|
||||
label: t("Use an Existing Network"),
|
||||
name: 'network',
|
||||
label: t('Use an Existing Network'),
|
||||
type: 'network-select-table',
|
||||
hidden: enableNetwork
|
||||
hidden: enableNetwork,
|
||||
},
|
||||
{
|
||||
type: "divider"
|
||||
type: 'divider',
|
||||
},
|
||||
{
|
||||
name: "floating_ip_enabled",
|
||||
label: t("Cluster API"),
|
||||
type: "select",
|
||||
name: 'floating_ip_enabled',
|
||||
label: t('Cluster API'),
|
||||
type: 'select',
|
||||
options: [
|
||||
{
|
||||
label: t("Accessible on private network only"),
|
||||
value: "networkOnly"
|
||||
label: t('Accessible on private network only'),
|
||||
value: 'networkOnly',
|
||||
},
|
||||
{
|
||||
label: t("Accessible on the public internet"),
|
||||
value: "publicInternet"
|
||||
}
|
||||
label: t('Accessible on the public internet'),
|
||||
value: 'publicInternet',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: "divider"
|
||||
type: 'divider',
|
||||
},
|
||||
{
|
||||
name: "ingress_controller",
|
||||
label: t("Ingress Controller"),
|
||||
type: "select",
|
||||
name: 'ingress_controller',
|
||||
label: t('Ingress Controller'),
|
||||
type: 'select',
|
||||
options: [
|
||||
{
|
||||
label: t("octavia"),
|
||||
value: "octavia"
|
||||
label: t('octavia'),
|
||||
value: 'octavia',
|
||||
},
|
||||
{
|
||||
label: t("nginx"),
|
||||
value: "nginx"
|
||||
label: t('nginx'),
|
||||
value: 'nginx',
|
||||
},
|
||||
{
|
||||
label: t("traefik"),
|
||||
value: "traefik"
|
||||
}
|
||||
label: t('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));
|
||||
|
@ -13,17 +13,17 @@
|
||||
// limitations under the License.
|
||||
|
||||
import React from 'react';
|
||||
import { inject, observer } from "mobx-react";
|
||||
import Base from "components/Form";
|
||||
import { inject, observer } from 'mobx-react';
|
||||
import Base from 'components/Form';
|
||||
import FlavorSelectTable from 'src/pages/compute/containers/Instance/components/FlavorSelectTable';
|
||||
|
||||
export class StepSize extends Base {
|
||||
get title() {
|
||||
return t("Cluster Size")
|
||||
return t('Cluster Size');
|
||||
}
|
||||
|
||||
get name() {
|
||||
return t("Cluster Size")
|
||||
return t('Cluster Size');
|
||||
}
|
||||
|
||||
allowed = () => Promise.resolve();
|
||||
@ -41,38 +41,38 @@ export class StepSize extends Base {
|
||||
get formItems() {
|
||||
return [
|
||||
{
|
||||
name: "numberOfMasterNodes",
|
||||
label: t("Number of Master Nodes"),
|
||||
type: "input-number",
|
||||
name: 'numberOfMasterNodes',
|
||||
label: t('Number of Master Nodes'),
|
||||
type: 'input-int',
|
||||
min: 1,
|
||||
required: true
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
name: "flavorOfMasterNodes",
|
||||
label: t("Flavor of Master Nodes"),
|
||||
name: 'flavorOfMasterNodes',
|
||||
label: t('Flavor of Master Nodes'),
|
||||
type: 'select-table',
|
||||
component: this.getFlavorComponent(),
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
type: "divider"
|
||||
type: 'divider',
|
||||
},
|
||||
{
|
||||
name: "numberOfWorkerNodes",
|
||||
label: t("Number of Worker Nodes"),
|
||||
type: "input-number",
|
||||
name: 'numberOfWorkerNodes',
|
||||
label: t('Number of Worker Nodes'),
|
||||
type: 'input-int',
|
||||
min: 1,
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
name: "flavorOfWorkerNodes",
|
||||
label: t("Flavor of Worker Nodes"),
|
||||
name: 'flavorOfWorkerNodes',
|
||||
label: t('Flavor of Worker Nodes'),
|
||||
type: 'select-table',
|
||||
component: this.getFlavorComponent(),
|
||||
required: true
|
||||
}
|
||||
]
|
||||
required: true,
|
||||
},
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
export default inject('rootStore')(observer(StepSize));
|
||||
export default inject('rootStore')(observer(StepSize));
|
||||
|
@ -10,38 +10,38 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// 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 StepNetworks from './StepNetworks';
|
||||
import StepManagement from './StepManagement';
|
||||
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 {
|
||||
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() {
|
||||
return Promise.resolve(true);
|
||||
}
|
||||
|
||||
get name() {
|
||||
return t("Create Instance");
|
||||
return t('Create Instance');
|
||||
}
|
||||
|
||||
get listUrl() {
|
||||
return this.getRoutePath("containerInfraClusters");
|
||||
return this.getRoutePath('containerInfraClusters');
|
||||
}
|
||||
|
||||
get hasConfirmStep() {
|
||||
@ -51,31 +51,31 @@ export class StepCreate extends StepAction {
|
||||
get steps() {
|
||||
return [
|
||||
{
|
||||
title: t("Details *"),
|
||||
component: StepDetails
|
||||
title: t('Details *'),
|
||||
component: StepDetails,
|
||||
},
|
||||
{
|
||||
title: t("Size: *"),
|
||||
component: StepSize
|
||||
title: t('Size: *'),
|
||||
component: StepSize,
|
||||
},
|
||||
{
|
||||
title: t("Networks"),
|
||||
component: StepNetworks
|
||||
title: t('Networks'),
|
||||
component: StepNetworks,
|
||||
},
|
||||
{
|
||||
title: t("Management"),
|
||||
component: StepManagement
|
||||
title: t('Management'),
|
||||
component: StepManagement,
|
||||
},
|
||||
{
|
||||
title: t("Advanced"),
|
||||
component: StepAdvanced
|
||||
}
|
||||
]
|
||||
title: t('Advanced'),
|
||||
component: StepAdvanced,
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
onSubmit = (values) => {
|
||||
|
||||
const { additionalLabels, auto_healing_enabled, auto_scaling_enabled } = values;
|
||||
const { additionalLabels, auto_healing_enabled, auto_scaling_enabled } =
|
||||
values;
|
||||
const requestLabels = {};
|
||||
|
||||
if (additionalLabels) {
|
||||
@ -83,34 +83,36 @@ export class StepCreate extends StepAction {
|
||||
const labelKey = item.value.key.toLowerCase().trim();
|
||||
const labelValue = item.value.value.toLowerCase().trim();
|
||||
requestLabels[labelKey] = labelValue;
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
const data = {
|
||||
name: values.clusterName,
|
||||
labels: {
|
||||
...requestLabels,
|
||||
auto_healing_enabled: auto_healing_enabled,
|
||||
auto_scaling_enabled: auto_scaling_enabled,
|
||||
admission_control_list: 'NodeRestriction,NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,TaintNodesByCondition,Priority,DefaultTolerationSeconds,DefaultStorageClass,StorageObjectInUseProtection,PersistentVolumeClaimResize,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,RuntimeClass'
|
||||
auto_healing_enabled,
|
||||
auto_scaling_enabled,
|
||||
admission_control_list:
|
||||
'NodeRestriction,NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,TaintNodesByCondition,Priority,DefaultTolerationSeconds,DefaultStorageClass,StorageObjectInUseProtection,PersistentVolumeClaimResize,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,RuntimeClass',
|
||||
},
|
||||
cluster_template_id: values.clusterTemplateId,
|
||||
create_timeout: 60,
|
||||
master_count: values.numberOfMasterNodes,
|
||||
node_count: values.numberOfWorkerNodes,
|
||||
keypair: values.keypair,
|
||||
master_flavor_id: values.flavorOfMasterNodes,
|
||||
flavor_id: values.flavorOfWorkerNodes,
|
||||
master_flavor_id: values.flavorOfMasterNodes.selectedRowKeys[0],
|
||||
flavor_id: values.flavorOfWorkerNodes.selectedRowKeys[0],
|
||||
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) {
|
||||
data.fixed_network = values.network;
|
||||
if (!values.enableNetwork && values.network) {
|
||||
const { selectedRowKeys = [] } = values.network;
|
||||
data.fixed_network = selectedRowKeys[0];
|
||||
}
|
||||
|
||||
return this.store.create(data);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
export default inject("rootStore")(observer(StepCreate))
|
||||
export default inject('rootStore')(observer(StepCreate));
|
||||
|
@ -19,8 +19,8 @@ import ClustersDetail from '../containers/Clusters/Detail';
|
||||
import ClusterTemplates from '../containers/ClusterTemplates';
|
||||
import ClusterTemplateDetail from '../containers/ClusterTemplates/Detail';
|
||||
import ClustersCreate from '../containers/Clusters/actions/StepCreate';
|
||||
import ClustersTemplateCreate from '../containers/ClusterTemplates/actions/StepCreate'
|
||||
import StepUpdateClusterTemplate from '../containers/ClusterTemplates/actions/EditStep'
|
||||
import ClustersTemplateCreate from '../containers/ClusterTemplates/actions/StepCreate';
|
||||
import StepUpdateClusterTemplate from '../containers/ClusterTemplates/actions/EditStep';
|
||||
|
||||
const PATH = '/container-infra';
|
||||
export default [
|
||||
@ -29,20 +29,36 @@ export default [
|
||||
component: BaseLayout,
|
||||
routes: [
|
||||
{ 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}/cluster-template/detail/:id`, component: ClusterTemplateDetail, exact: true },
|
||||
{
|
||||
path: `${PATH}/clusters/detail/:id`,
|
||||
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`,
|
||||
component: ClustersCreate,
|
||||
exact: true,
|
||||
},
|
||||
{
|
||||
path: `${PATH}/clusters-template/create`,
|
||||
path: `${PATH}/cluster-template/create`,
|
||||
component: ClustersTemplateCreate,
|
||||
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 },
|
||||
],
|
||||
},
|
||||
|
@ -14,7 +14,6 @@ import { SecurityGroupStore } from 'stores/neutron/security-group';
|
||||
import { VirtualAdapterStore } from 'stores/neutron/virtual-adapter';
|
||||
import Base from 'components/Form';
|
||||
import { inject, observer } from 'mobx-react';
|
||||
import globalNetworkStore from 'src/stores/neutron/network';
|
||||
import { portColumns, portFilters } from 'src/resources/neutron/port';
|
||||
import {
|
||||
securityGroupColumns,
|
||||
@ -23,7 +22,6 @@ import {
|
||||
|
||||
export class StepNetworks extends Base {
|
||||
init() {
|
||||
this.getNetworkStore();
|
||||
this.portStore = new VirtualAdapterStore();
|
||||
this.securityGroupStore = new SecurityGroupStore();
|
||||
}
|
||||
@ -36,17 +34,6 @@ export class StepNetworks extends Base {
|
||||
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() {
|
||||
return [
|
||||
{
|
||||
|
@ -149,7 +149,7 @@ export class StepDetails extends Base {
|
||||
{
|
||||
name: 'size',
|
||||
label: t('Size (GiB)'),
|
||||
type: 'input-number',
|
||||
type: 'input-int',
|
||||
min: 1,
|
||||
max: 50,
|
||||
placeholder: t('Size'),
|
||||
|
@ -14,14 +14,8 @@
|
||||
|
||||
import { inject, observer } from 'mobx-react';
|
||||
import Base from 'components/Form';
|
||||
import globalNetworkStore from 'stores/neutron/network';
|
||||
|
||||
export class StepNetworking extends Base {
|
||||
init() {
|
||||
this.getNetworkStore();
|
||||
this.selectedNetwork = [];
|
||||
}
|
||||
|
||||
get title() {
|
||||
return t('Networking *');
|
||||
}
|
||||
@ -30,23 +24,8 @@ export class StepNetworking extends Base {
|
||||
return 'Networking';
|
||||
}
|
||||
|
||||
get networking() {
|
||||
return (globalNetworkStore.list.data || []).map((it) => ({
|
||||
label: it.name,
|
||||
value: it.id,
|
||||
}));
|
||||
}
|
||||
|
||||
allowed = () => Promise.resolve();
|
||||
|
||||
async getNetworkStore() {
|
||||
await globalNetworkStore.fetchList();
|
||||
}
|
||||
|
||||
onChangeNetworkGroup = (checkedValues) => {
|
||||
this.selectedNetwork = checkedValues;
|
||||
};
|
||||
|
||||
get defaultValue() {
|
||||
const values = {
|
||||
project: this.currentProjectName,
|
||||
@ -66,9 +45,9 @@ export class StepNetworking extends Base {
|
||||
},
|
||||
{
|
||||
name: 'network',
|
||||
label: t('Options'),
|
||||
label: t('Network'),
|
||||
type: 'network-select-table',
|
||||
options: this.networking,
|
||||
required: true,
|
||||
},
|
||||
];
|
||||
}
|
||||
|
@ -121,6 +121,7 @@ export class Certificate extends Base {
|
||||
: '-';
|
||||
},
|
||||
isHideable: true,
|
||||
stringify: (value = []) => value.map((it) => it.name).join(',') || '-',
|
||||
},
|
||||
{
|
||||
title: t('Status'),
|
||||
|
Loading…
Reference in New Issue
Block a user