skyline/src/pages/container-service/containers/Containers/actions/StepCreate/StepSpec/index.jsx
Reşit Demir d4ae10a03c Add Zun UI to Skyline-Console
Change-Id: I6e52db8547e8bfb1379320c8ff4d16952f3faac3
2022-05-24 16:20:59 +00:00

136 lines
3.4 KiB
JavaScript

// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// 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 globalAvailabilityZoneStore from "src/stores/nova/zone";
export class StepSpec extends Base {
init() {
this.getAvailabilityZones();
this.state.isMaxRetry = true;
}
get title() {
return t("Spec");
}
get name() {
return t("Spec");
}
async getAvailabilityZones() {
await globalAvailabilityZoneStore.fetchListWithoutDetail();
}
get getAvailabilityZoneList() {
return (globalAvailabilityZoneStore.list.data || []).filter((it) => it.zoneState.available)
.map((it) => ({
value: it.zoneName,
label: it.zoneName,
}));
}
onExitPolicyChange(value) {
this.setState({ isMaxRetry: value === "on-failure" ? false : true })
}
get formItems() {
return [
{
name: "hostname",
label: t("Hostname"),
type: "input",
placeholder: t("The host name of this container"),
},
{
name: "runtime",
label: t("Runtime"),
type: "input",
placeholder: t("The runtime to create container with"),
},
{
name: "cpu",
label: t("CPU"),
type: "input-number",
placeholder: t("The number of virtual cpu for this container"),
min: 1,
width: 300
},
{
name: "memory",
label: t("Memory"),
type: "input-number",
placeholder: t("The container memory size in MiB"),
min: 4,
width: 300
},
{
name: "disk",
label: t("Disk"),
type: "input-number",
placeholder: t("The disk size in GİB for per container"),
min: 1,
width: 300
},
{
name: "availableZone",
label: t("Availability Zone"),
type: "select",
options: this.getAvailabilityZoneList,
allowClear: true,
showSearch: true
},
{
name: "exitPolicy",
label: t("Exit Policy"),
type: "select",
options: [
{
label: t("No"),
value: "no"
},
{
label: t("On failure"),
value: "on-failure"
},
{
label: t("Always"),
value: "always"
},
{
label: t("Unless Stopped"),
value: "unless-stopped"
},
],
onChange: (val) => this.onExitPolicyChange(val),
allowClear: true,
showSearch: true
},
{
name: "maxRetry",
label: t("Max Retry"),
type: "input-number",
placeholder: t("Retry times for 'Restart on failure' policy"),
min: 1,
disabled: this.state.isMaxRetry
},
{
name: "enableAutoHeal",
label: t("Enable auto heal"),
type: "check"
}
]
}
}
export default inject('rootStore')(observer(StepSpec));