diff --git a/releasenotes/notes/Support-Flavor-Add-CPU-Memory-Search-f6b17125d7f82df7.yaml b/releasenotes/notes/Support-Flavor-Add-CPU-Memory-Search-f6b17125d7f82df7.yaml new file mode 100644 index 00000000..5b058ad6 --- /dev/null +++ b/releasenotes/notes/Support-Flavor-Add-CPU-Memory-Search-f6b17125d7f82df7.yaml @@ -0,0 +1,20 @@ +--- +features: + - | + Support Flavor add CPU and memory search filters: + + * In the Console, Compute - Flavors page, support cpu and memory fuzzy search. + + * In the Administrator, Compute - Flavors page, support cpu and memory fuzzy search. + + * In the Console, Compute - Instances - Create Instance/Create Ironic, support cpu and + memory fuzzy search in the Specification setting in the first step. + + * In the Console, Compute - Instances - Resize, support cpu and memory fuzzy + search in the Specification setting. + + * In the Console, Database - Database Instances - Create Database Instance, support cpu + and memory fuzzy search in the Database Flavor setting in the first step. + + * In the Console, Capsules - Clusters - Create Cluster Template/Edit Cluster Template, + support cpu and memory fuzzy search in the Flavor / Master Flavor setting in the Spec step. diff --git a/src/pages/compute/containers/Flavor/Arm/index.jsx b/src/pages/compute/containers/Flavor/Arm/index.jsx index f78db597..4ee76a87 100644 --- a/src/pages/compute/containers/Flavor/Arm/index.jsx +++ b/src/pages/compute/containers/Flavor/Arm/index.jsx @@ -21,8 +21,8 @@ import { getBaseColumns, extraColumns, armCategoryList, + getFlavorSearchFilters, } from 'resources/nova/flavor'; -import { getOptions } from 'utils/index'; import actionConfigs from './actions'; export class Flavor extends Base { @@ -54,17 +54,7 @@ export class Flavor extends Base { }); get searchFilters() { - return [ - { - label: t('Name'), - name: 'name', - }, - { - label: t('Category'), - name: 'category', - options: getOptions(armCategoryList), - }, - ]; + return getFlavorSearchFilters(armCategoryList); } } diff --git a/src/pages/compute/containers/Flavor/BareMetal/index.jsx b/src/pages/compute/containers/Flavor/BareMetal/index.jsx index 8a149e2c..c5bbcf62 100644 --- a/src/pages/compute/containers/Flavor/BareMetal/index.jsx +++ b/src/pages/compute/containers/Flavor/BareMetal/index.jsx @@ -20,6 +20,7 @@ import { flavorArchitectures, getBaseColumns, extraColumns, + getFlavorSearchFilters, } from 'resources/nova/flavor'; import actionConfigs from './actions'; @@ -60,12 +61,7 @@ export class Flavor extends Base { }); get searchFilters() { - return [ - { - label: t('Name'), - name: 'name', - }, - ]; + return getFlavorSearchFilters(); } } diff --git a/src/pages/compute/containers/Flavor/Heterogeneous/index.jsx b/src/pages/compute/containers/Flavor/Heterogeneous/index.jsx index 8230b7a5..45bd5f4a 100644 --- a/src/pages/compute/containers/Flavor/Heterogeneous/index.jsx +++ b/src/pages/compute/containers/Flavor/Heterogeneous/index.jsx @@ -22,8 +22,8 @@ import { extraColumns, heterogeneousCategoryList, gpuColumns, + getFlavorSearchFilters, } from 'resources/nova/flavor'; -import { getOptions } from 'utils/index'; import actionConfigs from './actions'; export class Flavor extends Base { @@ -55,18 +55,7 @@ export class Flavor extends Base { }); get searchFilters() { - return [ - { - label: t('Name'), - name: 'name', - }, - { - label: t('Category'), - name: 'category', - options: getOptions(heterogeneousCategoryList), - include: false, - }, - ]; + return getFlavorSearchFilters(heterogeneousCategoryList); } } diff --git a/src/pages/compute/containers/Flavor/Other/index.jsx b/src/pages/compute/containers/Flavor/Other/index.jsx index 99e85d13..e9765ad5 100644 --- a/src/pages/compute/containers/Flavor/Other/index.jsx +++ b/src/pages/compute/containers/Flavor/Other/index.jsx @@ -16,7 +16,11 @@ import { observer, inject } from 'mobx-react'; import Base from 'containers/List'; import { FlavorStore } from 'stores/nova/flavor'; import { emptyActionConfig } from 'utils/constants'; -import { getBaseColumns, extraColumns } from 'resources/nova/flavor'; +import { + getBaseColumns, + extraColumns, + getFlavorSearchFilters, +} from 'resources/nova/flavor'; import actionConfigs from './actions'; export class Flavor extends Base { @@ -52,12 +56,7 @@ export class Flavor extends Base { } get searchFilters() { - return [ - { - label: t('Name'), - name: 'name', - }, - ]; + return getFlavorSearchFilters(); } } diff --git a/src/pages/compute/containers/Flavor/X86/index.jsx b/src/pages/compute/containers/Flavor/X86/index.jsx index e3467805..4b234d74 100644 --- a/src/pages/compute/containers/Flavor/X86/index.jsx +++ b/src/pages/compute/containers/Flavor/X86/index.jsx @@ -21,8 +21,8 @@ import { getBaseColumns, extraColumns, x86CategoryList, + getFlavorSearchFilters, } from 'resources/nova/flavor'; -import { getOptions } from 'utils/index'; import actionConfigs from './actions'; export class Flavor extends Base { @@ -54,17 +54,7 @@ export class Flavor extends Base { }); get searchFilters() { - return [ - { - label: t('Name'), - name: 'name', - }, - { - label: t('Category'), - name: 'category', - options: getOptions(x86CategoryList), - }, - ]; + return getFlavorSearchFilters(x86CategoryList); } } diff --git a/src/pages/compute/containers/Instance/components/FlavorSelectTable.jsx b/src/pages/compute/containers/Instance/components/FlavorSelectTable.jsx index 69f2eb39..67cf3a7c 100644 --- a/src/pages/compute/containers/Instance/components/FlavorSelectTable.jsx +++ b/src/pages/compute/containers/Instance/components/FlavorSelectTable.jsx @@ -29,6 +29,7 @@ import { isBareMetalFlavor, isBareMetal, getFlavorArchInfo, + getFlavorSearchFilters, } from 'resources/nova/flavor'; import styles from './index.less'; @@ -326,12 +327,7 @@ export class FlavorSelectTable extends Component { data: this.flavors, tableHeader: this.renderTableHeader(), isLoading, - filterParams: [ - { - label: t('Name'), - name: 'name', - }, - ], + filterParams: getFlavorSearchFilters(), value, onChange: this.onChange, disabledFunc, diff --git a/src/resources/nova/flavor.js b/src/resources/nova/flavor.js index c347df78..fe11230c 100644 --- a/src/resources/nova/flavor.js +++ b/src/resources/nova/flavor.js @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -import { formatSize } from 'utils'; +import { formatSize, getOptions } from 'utils'; export const cpuPolicyList = { dedicated: t('Dedicated'), @@ -286,3 +286,35 @@ export const getFlavorArchInfo = (flavor) => { flavorCategoryList[category] || category }`; }; + +export const getFlavorSearchFilters = (category) => { + const filters = [ + { + label: t('Name'), + name: 'name', + }, + { + label: t('CPU'), + name: 'vcpus', + filterFunc: (vcpus, value) => { + return (`${vcpus}` || '').includes(value); + }, + }, + { + label: t('Memory'), + name: 'ram', + filterFunc: (ram, value) => { + return (formatSize(ram, 2) || '').includes(value); + }, + }, + ]; + if (category) { + filters.push({ + label: t('Category'), + name: 'category', + options: getOptions(armCategoryList), + }); + } + + return filters; +};