diff --git a/src/fireedge/src/client/constants/datastore.js b/src/fireedge/src/client/constants/datastore.js index dc34da5179..228fd7d221 100644 --- a/src/fireedge/src/client/constants/datastore.js +++ b/src/fireedge/src/client/constants/datastore.js @@ -16,6 +16,10 @@ import * as STATES from 'client/constants/states' import COLOR from 'client/constants/color' +/** + * @type {{name: string, shortName: string}} + * Datastore type information + */ export const DATASTORE_TYPES = [ { name: 'IMAGE', @@ -31,6 +35,7 @@ export const DATASTORE_TYPES = [ } ] +/** @type {STATES.StateInfo[]} Datastore states */ export const DATASTORE_STATES = [ { name: STATES.READY, diff --git a/src/fireedge/src/client/constants/host.js b/src/fireedge/src/client/constants/host.js index 86fbb5d9bb..308b1f8d7c 100644 --- a/src/fireedge/src/client/constants/host.js +++ b/src/fireedge/src/client/constants/host.js @@ -16,6 +16,7 @@ import * as STATES from 'client/constants/states' import COLOR from 'client/constants/color' +/** @type {STATES.StateInfo[]} Host states */ export const HOST_STATES = [ { name: STATES.INIT, diff --git a/src/fireedge/src/client/constants/image.js b/src/fireedge/src/client/constants/image.js new file mode 100644 index 0000000000..dc0c68980e --- /dev/null +++ b/src/fireedge/src/client/constants/image.js @@ -0,0 +1,92 @@ +/* ------------------------------------------------------------------------- * + * Copyright 2002-2021, OpenNebula Project, OpenNebula Systems * + * * + * 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 * as STATES from 'client/constants/states' +import COLOR from 'client/constants/color' + +/** + * @enum {( + * 'OS'| + * 'CD ROM'| + * 'DATABLOCK'| + * 'KERNEL'| + * 'RAMDISK'| + * 'CONTEXT' + * )} Image type + */ +export const IMAGE_TYPES = [ + 'OS', + 'CD ROM', + 'DATABLOCK', + 'KERNEL', + 'RAMDISK', + 'CONTEXT' +] + +/** @enum {('FILE'|'CD ROM'|'BLOCK'|'RBD')} Disk type */ +export const DISK_TYPES = [ + 'FILE', + 'CD ROM', + 'BLOCK', + 'RBD' +] + +/** @type {STATES.StateInfo[]} Image states */ +export const IMAGE_STATES = [ + { // 0 + name: STATES.INIT, + color: COLOR.debug.main + }, + { // 1 + name: STATES.READY, + color: COLOR.success.main + }, + { // 2 + name: STATES.USED, + color: COLOR.success.main + }, + { // 3 + name: STATES.DISABLED, + color: COLOR.debug.light + }, + { // 4 + name: STATES.LOCKED, + color: COLOR.warning.main + }, + { // 5 + name: STATES.ERROR, + color: COLOR.error.main + }, + { // 6 + name: STATES.CLONE, + color: COLOR.info.light + }, + { // 7 + name: STATES.DELETE, + color: COLOR.error.main + }, + { // 8 + name: STATES.USED_PERS, + color: COLOR.error.light + }, + { // 9 + name: STATES.LOCKED_USED, + color: COLOR.warning.light + }, + { // 10 + name: STATES.LOCKED_USED_PERS, + color: COLOR.error.light + } +] diff --git a/src/fireedge/src/client/constants/index.js b/src/fireedge/src/client/constants/index.js index 2d33390f9d..43ea4a42bc 100644 --- a/src/fireedge/src/client/constants/index.js +++ b/src/fireedge/src/client/constants/index.js @@ -85,4 +85,8 @@ export * from 'client/constants/flow' export * from 'client/constants/provision' export * from 'client/constants/vm' export * from 'client/constants/host' +export * from 'client/constants/image' +export * from 'client/constants/marketplace' export * from 'client/constants/datastore' +export * from 'client/constants/securityGroup' +export * from 'client/constants/zone' diff --git a/src/fireedge/src/client/constants/marketplace.js b/src/fireedge/src/client/constants/marketplace.js new file mode 100644 index 0000000000..a7e2eeb4ce --- /dev/null +++ b/src/fireedge/src/client/constants/marketplace.js @@ -0,0 +1,68 @@ +/* ------------------------------------------------------------------------- * + * Copyright 2002-2021, OpenNebula Project, OpenNebula Systems * + * * + * 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 * as STATES from 'client/constants/states' +import COLOR from 'client/constants/color' + +/** @type {STATES.StateInfo[]} Marketplace states */ +export const MARKETPLACE_STATES = [ + { // 0 + name: STATES.ENABLED, + color: COLOR.success.main + }, + { // 1 + name: STATES.DISABLED, + color: COLOR.debug.main + } +] + +/** + * @enum {( + * 'UNKNOWN'| + * 'IMAGE'| + * 'VM TEMPLATE'| + * 'SERVICE TEMPLATE' + * )} Marketplace app type + */ +export const MARKETPLACE_APP_TYPES = [ + 'UNKNOWN', + 'IMAGE', + 'VM TEMPLATE', + 'SERVICE TEMPLATE' +] + +/** @type {STATES.StateInfo[]} Marketplace app states */ +export const MARKETPLACE_APP_STATES = [ + { // 0 + name: STATES.INIT, + color: COLOR.info.main + }, + { // 1 + name: STATES.READY, + color: COLOR.success.main + }, + { // 2 + name: STATES.LOCKED, + color: COLOR.debug.main + }, + { // 3 + name: STATES.ERROR, + color: COLOR.error.main + }, + { // 4 + name: STATES.DISABLED, + color: COLOR.debug.light + } +] diff --git a/src/fireedge/src/client/constants/securityGroup.js b/src/fireedge/src/client/constants/securityGroup.js new file mode 100644 index 0000000000..9b0170bf4d --- /dev/null +++ b/src/fireedge/src/client/constants/securityGroup.js @@ -0,0 +1,88 @@ +/* ------------------------------------------------------------------------- * + * Copyright 2002-2021, OpenNebula Project, OpenNebula Systems * + * * + * 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 { T } from 'client/constants' + +/** + * ICMP Codes for each ICMP type as in: + * http://www.iana.org/assignments/icmp-parameters/ + * + * @enum {string} Security group ICMP type + */ +export const ICMP_STRING = { + '': 'All', + 0: '0: Echo Reply', + 3: '3: Destination Unreachable', + 4: '4: Source Quench', // Deprecated + 5: '5: Redirect', + 6: '6: Alternate Host Address', // Deprecated + 8: '8: Echo', + 9: '9: Router Advertisement', + 10: '10: Router Selection', + 11: '11: Time Exceeded', + 12: '12: Parameter Problem', + 13: '13: Timestamp', + 14: '14: Timestamp Reply', + 15: '15: Information Request', // Deprecated + 16: '16: Information Reply', // Deprecated + 17: '17: Address Mask Request', // Deprecated + 18: '18: Address Mask Reply', // Deprecated + 30: '30: Traceroute', // Deprecated + 31: '31: Datagram Conversion Error', // Deprecated + 32: '32: Mobile Host Redirect', // Deprecated + 33: '33: IPv6 Where-Are-You', // Deprecated + 34: '34: IPv6 I-Am-Here', // Deprecated + 35: '35: Mobile Registration Request', // Deprecated + 36: '36: Mobile Registration Reply', // Deprecated + 37: '37: Domain Name Request', // Deprecated + 38: '38: Domain Name Reply', // Deprecated + 39: '39: SKIP', // Deprecated + 40: '40: Photuris', + 41: '41: ICMP messages utilized by experimental mobility protocols such as Seamoby', + 253: '253: RFC3692-style Experiment 1', + 254: '254: RFC3692-style Experiment 2' +} + +/** + * ICMPv6 Codes for each ICMPv6 type as in: + * http://www.iana.org/assignments/icmpv6-parameters/ + * + * @enum {string} Security group ICMP v6 type + */ +export const ICMP_V6_STRING = { + '': 'All', + 1: '1: Destination Unreachable', + 2: '2/0: Packet too big', + 3: '3: Time exceeded', + 4: '4: Parameter problem', + 128: '128/0: Echo request', + 129: '129/0: Echo reply' +} + +/** @enum {string} Security group protocol */ +export const PROTOCOL_STRING = { + TCP: T.TCP, + UDP: T.UDP, + ICMP: T.ICMP, + ICMPV6: T.ICMPV6, + IPSEC: T.IPSEC, + ALL: T.All +} + +/** @enum {string} Security group rule type */ +export const RULE_TYPE_STRING = { + OUTBOUND: T.Outbound, + INBOUND: T.Inbound +} diff --git a/src/fireedge/src/client/constants/vm.js b/src/fireedge/src/client/constants/vm.js index cfc876859b..a49f1e4010 100644 --- a/src/fireedge/src/client/constants/vm.js +++ b/src/fireedge/src/client/constants/vm.js @@ -80,6 +80,7 @@ export const VM_STATES = [ } ] +/** @type {STATES.StateInfo[]} Virtual machine lcm states */ export const VM_LCM_STATES = [ { // 0 name: STATES.LCM_INIT, @@ -428,6 +429,7 @@ export const VM_LCM_STATES = [ } ] +/** @enum {string} Virtual machine actions */ export const VM_ACTIONS = { CREATE_DIALOG: 'create_dialog', DEPLOY: 'deploy', @@ -502,3 +504,45 @@ export const VM_ACTIONS = { // CONFIGURATION UPDATE_CONF: 'update_configuration' } + +/** + * @enum {( + * 'IP'| + * 'IP6'| + * 'IP6_GLOBAL'| + * 'IP6_ULA'| + * 'VROUTER_IP'| + * 'VROUTER_IP6_GLOBAL'| + * 'VROUTER_IP6_ULA' + * )} Possible attribute names for nic alias ip + */ +export const NIC_ALIAS_IP_ATTRS = [ + 'IP', + 'IP6', + 'IP6_GLOBAL', + 'IP6_ULA', + 'VROUTER_IP', + 'VROUTER_IP6_GLOBAL', + 'VROUTER_IP6_ULA' +] + +/** + * @enum {( + * 'GUEST_IP'| + * 'GUEST_IP_ADDRESSES'| + * 'AWS_IP_ADDRESS'| + * 'AWS_PUBLIC_IP_ADDRESS'| + * 'AWS_PRIVATE_IP_ADDRESS'| + * 'AZ_IPADDRESS'| + * 'SL_PRIMARYIPADDRESS' + * )} Possible attribute names for external ip + */ +export const EXTERNAL_IP_ATTRS = [ + 'GUEST_IP', + 'GUEST_IP_ADDRESSES', + 'AWS_IP_ADDRESS', + 'AWS_PUBLIC_IP_ADDRESS', + 'AWS_PRIVATE_IP_ADDRESS', + 'AZ_IPADDRESS', + 'SL_PRIMARYIPADDRESS' +] diff --git a/src/fireedge/src/client/constants/zone.js b/src/fireedge/src/client/constants/zone.js new file mode 100644 index 0000000000..a86ebcbe42 --- /dev/null +++ b/src/fireedge/src/client/constants/zone.js @@ -0,0 +1,29 @@ +/* ------------------------------------------------------------------------- * + * Copyright 2002-2021, OpenNebula Project, OpenNebula Systems * + * * + * 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 * as STATES from 'client/constants/states' +import COLOR from 'client/constants/color' + +/** @type {STATES.StateInfo[]} Zone states */ +export const ZONE_STATES = [ + { // 0 + name: STATES.ENABLED, + color: COLOR.success.main + }, + { // 1 + name: STATES.DISABLED, + color: COLOR.debug.main + } +] diff --git a/src/fireedge/src/client/models/Datastore.js b/src/fireedge/src/client/models/Datastore.js index cf222813f6..63eb30e31c 100644 --- a/src/fireedge/src/client/models/Datastore.js +++ b/src/fireedge/src/client/models/Datastore.js @@ -13,41 +13,37 @@ * See the License for the specific language governing permissions and * * limitations under the License. * * ------------------------------------------------------------------------- */ - import { prettyBytes } from 'client/utils' import { DATASTORE_STATES, DATASTORE_TYPES, StateInfo } from 'client/constants' /** - * This gets the Datastore type object. + * Returns the datastore type name. * - * @param {object} datastore - Datastore. - * @param {number} datastore.TYPE - Datastore type. - * @returns {{ - * name: string, - * shortName: string - * }} - Datastore type object. + * @param {object} datastore - Datastore + * @param {number} datastore.TYPE - Datastore type + * @returns {DATASTORE_TYPES} - Datastore type object */ export const getType = ({ TYPE } = {}) => DATASTORE_TYPES[TYPE] /** - * This gets the Datastore state object. + * Returns information about datastore state. * - * @param {object} datastore - Datastore. - * @param {number} datastore.STATE - Datastore state ID. - * @returns {StateInfo} - Datastore state object. + * @param {object} datastore - Datastore + * @param {number} datastore.STATE - Datastore state ID + * @returns {StateInfo} - Datastore state object */ export const getState = ({ STATE = 0 } = {}) => DATASTORE_STATES[STATE] /** - * This gets the Datasore use percentage and the corresponding label. + * Returns information about datastore capacity. * - * @param {object} props - Props object. - * @param {number} props.TOTAL_MB - Datastore total space in MB. - * @param {number} props.USED_MB - Datastore used space in MB. + * @param {object} props - Props object + * @param {number} props.TOTAL_MB - Datastore total space in MB + * @param {number} props.USED_MB - Datastore used space in MB * @returns {{ * percentOfUsed: number, * percentLabel: string - * }} - Datastore use percentage and label. + * }} - Datastore used percentage and label. */ export const getCapacityInfo = ({ TOTAL_MB, USED_MB } = {}) => { const percentOfUsed = +USED_MB * 100 / +TOTAL_MB || 0 diff --git a/src/fireedge/src/client/models/Helper.js b/src/fireedge/src/client/models/Helper.js index 7e54a2c411..4c2de96a65 100644 --- a/src/fireedge/src/client/models/Helper.js +++ b/src/fireedge/src/client/models/Helper.js @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * * limitations under the License. * * ------------------------------------------------------------------------- */ - +import { T } from 'client/constants' import { DateTime } from 'luxon' /** - * This converts the boolean value into a string. + * Converts the boolean value into a readable format. * * @param {boolean} bool - Boolean value. * @returns {'Yes'|'No'} - If true return 'Yes', in other cases, return 'No'. @@ -25,7 +25,7 @@ import { DateTime } from 'luxon' export const booleanToString = bool => bool ? 'Yes' : 'No' /** - * This converts the string value into a boolean. + * Converts the string value into a boolean. * * @param {string} str - String value. * @returns {boolean} - If str is "yes" or 1 then returns true, @@ -35,16 +35,17 @@ export const stringToBoolean = str => String(str).toLowerCase() === 'yes' || +str === 1 /** - * This converts the time values to string. + * Converts the time values into "mm/dd/yyyy, hh:mm:ss" format. * * @param {number|string} time - Time to convert. * @returns {string} - Time string. + * @example 02521251251 => "4/23/1981, 11:04:41 AM" */ export const timeToString = time => +time ? new Date(+time * 1000).toLocaleString() : '-' /** - * This function converts the given time into DateTime. + * Converts the given time into DateTime luxon type. * * @param {number|string} time - Time to convert * @returns {DateTime} - Datetime object. @@ -53,22 +54,21 @@ export const timeFromMilliseconds = time => DateTime.fromMillis(+time * 1000) /** - * This function converts the lock level to its string value. + * Converts the lock level to its string value. * * @param {number} level - Level code number. * @returns {string} - Lock level text. */ export const levelLockToString = level => ({ - 0: 'None', - 1: 'Use', - 2: 'Manage', - 3: 'Admin', - 4: 'All' + 0: T.None, + 1: T.Use, + 2: T.Manage, + 3: T.Admin, + 4: T.All }[level] || '-') /** - * This function gets the permission string given the - * owner, group and owner permissions strings. + * Transform the permission from OpenNebula template to octal format. * * @param {object} permissions - Permissions object. * @param {('YES'|'NO')} permissions.OWNER_U - Owner use permission. @@ -80,7 +80,7 @@ export const levelLockToString = level => ({ * @param {('YES'|'NO')} permissions.OTHER_U - Other use permission. * @param {('YES'|'NO')} permissions.OTHER_M - Other manage permission. * @param {('YES'|'NO')} permissions.OTHER_A - Other access permission. - * @returns {string} - Permissions string. + * @returns {string} - Permissions in octal format. */ export const permissionsToOctal = permissions => { const { @@ -90,13 +90,12 @@ export const permissionsToOctal = permissions => { } = permissions /** - * This function will return the permission numeric code. + * Returns the permission numeric code. * - * @param {string[]} props - Array with Use, Manage and Access - * permissions. - * @param {('YES'|'NO')} props.0 - Is use permission allowed? - * @param {('YES'|'NO')} props.1 - Is manage permission allowed? - * @param {('YES'|'NO')} props.2 - Is access permission allowed? + * @param {string[]} props - Array with Use, Manage and Access permissions. + * @param {('YES'|'NO')} props.0 - `true` if use permission is allowed + * @param {('YES'|'NO')} props.1 - `true` if manage permission is allowed + * @param {('YES'|'NO')} props.2 - `true` if access permission is allowed * @returns {number} Permission code number. */ const getCategoryValue = ([u, m, a]) => ( @@ -113,7 +112,7 @@ export const permissionsToOctal = permissions => { } /** - * This returns the resource available actions. + * Returns the resource available actions. * * @param {object} actions - Actions from view yaml * @param {string} [hypervisor] - Resource hypervisor diff --git a/src/fireedge/src/client/models/Host.js b/src/fireedge/src/client/models/Host.js index e39f82fb15..392eb4659c 100644 --- a/src/fireedge/src/client/models/Host.js +++ b/src/fireedge/src/client/models/Host.js @@ -13,30 +13,29 @@ * See the License for the specific language governing permissions and * * limitations under the License. * * ------------------------------------------------------------------------- */ - import { prettyBytes } from 'client/utils' import { HOST_STATES, StateInfo } from 'client/constants' /** - * This function gets the host state. + * Returns information about the host state. * - * @param {object} host - Host. - * @param {number} host.STATE - Host state. - * @returns {StateInfo} - Host state object. + * @param {object} host - Host + * @param {number} host.STATE - Host state + * @returns {StateInfo} Host state object */ -export const getState = ({ STATE } = {}) => HOST_STATES[STATE] +export const getState = ({ STATE = 0 } = {}) => HOST_STATES[+STATE] /** - * This function get the allocate information. + * Returns the allocate information. * - * @param {object} host - Host. - * @param {object} host.HOST_SHARE - Host share object. + * @param {object} host - Host + * @param {object} host.HOST_SHARE - Host share object * @returns {{ * percentCpuUsed: number, * percentCpuLabel: string, * percentMemUsed: number, * percentMemLabel: string - * }} - Allocated information object. + * }} Allocated information object */ export const getAllocatedInfo = ({ HOST_SHARE = {} } = {}) => { const { CPU_USAGE, TOTAL_CPU, MEM_USAGE, TOTAL_MEM } = HOST_SHARE diff --git a/src/fireedge/src/client/models/Image.js b/src/fireedge/src/client/models/Image.js index 93a68b3d02..fa123f79ab 100644 --- a/src/fireedge/src/client/models/Image.js +++ b/src/fireedge/src/client/models/Image.js @@ -13,96 +13,31 @@ * See the License for the specific language governing permissions and * * limitations under the License. * * ------------------------------------------------------------------------- */ - -import * as STATES from 'client/constants/states' -import COLOR from 'client/constants/color' - -const IMAGE_TYPES = [ - 'OS', - 'CD ROM', - 'DATABLOCK', - 'KERNEL', - 'RAMDISK', - 'CONTEXT' -] - -const IMAGE_STATES = [ - { // 0 - name: STATES.INIT, - color: COLOR.debug.main - }, - { // 1 - name: STATES.READY, - color: COLOR.success.main - }, - { // 2 - name: STATES.USED, - color: COLOR.success.main - }, - { // 3 - name: STATES.DISABLED, - color: COLOR.debug.light - }, - { // 4 - name: STATES.LOCKED, - color: COLOR.warning.main - }, - { // 5 - name: STATES.ERROR, - color: COLOR.error.main - }, - { // 6 - name: STATES.CLONE, - color: COLOR.info.light - }, - { // 7 - name: STATES.DELETE, - color: COLOR.error.main - }, - { // 8 - name: STATES.USED_PERS, - color: COLOR.error.light - }, - { // 9 - name: STATES.LOCKED_USED, - color: COLOR.warning.light - }, - { // 10 - name: STATES.LOCKED_USED_PERS, - color: COLOR.error.light - } -] - -const DISK_TYPES = [ - 'FILE', - 'CD ROM', - 'BLOCK', - 'RBD' -] +import { IMAGE_TYPES, DISK_TYPES, IMAGE_STATES, StateInfo } from 'client/constants' /** - * This function gets the image type. + * Returns the image type. * - * @param {object} image - Image. - * @param {number|string} image.TYPE - Type numeric code. - * @returns {string} - Image type. + * @param {object} image - Image + * @param {number|string} image.TYPE - Type numeric code + * @returns {IMAGE_TYPES} - Image type */ export const getType = ({ TYPE } = {}) => IMAGE_TYPES[+TYPE] /** - * This function gets the disk type. + * Returns the image state. * - * @param {object} image - Image. - * @param {number|string} image.DISK_TYPE - Disk type numeric code. - * @returns {string} - Disk type. - */ -export const getDiskType = ({ DISK_TYPE } = {}) => DISK_TYPES[+DISK_TYPE] - -/** - * This function gets the image state. - * - * @param {object} image - Image. - * @param {number|string} image.STATE - State code. - * @returns {STATES.StateInfo} - Image state information. + * @param {object} image - Image + * @param {number|string} image.STATE - State code + * @returns {StateInfo} - Image state information */ export const getState = ({ STATE } = {}) => IMAGE_STATES[+STATE] + +/** + * Returns the disk type. + * + * @param {object} image - Image + * @param {number|string} image.DISK_TYPE - Disk type numeric code + * @returns {DISK_TYPES} - Disk type + */ +export const getDiskType = ({ DISK_TYPE } = {}) => DISK_TYPES[+DISK_TYPE] diff --git a/src/fireedge/src/client/models/Marketplace.js b/src/fireedge/src/client/models/Marketplace.js index 1ee2b6aad1..92737356c7 100644 --- a/src/fireedge/src/client/models/Marketplace.js +++ b/src/fireedge/src/client/models/Marketplace.js @@ -13,41 +13,28 @@ * See the License for the specific language governing permissions and * * limitations under the License. * * ------------------------------------------------------------------------- */ - import { prettyBytes } from 'client/utils' -import * as STATES from 'client/constants/states' -import COLOR from 'client/constants/color' - -const MARKETPLACE_STATES = [ - { // 0 - name: STATES.ENABLED, - color: COLOR.success.main - }, - { // 1 - name: STATES.DISABLED, - color: COLOR.debug.main - } -] +import { MARKETPLACE_STATES, StateInfo } from 'client/constants' /** - * This function gets the marketplace state. + * Returns the marketplace state. * - * @param {object} marketplace - Marketplace. - * @param {number|string} marketplace.STATE - Marketplace state numeric code. - * @returns {STATES.StateInfo} - Marketplace state information. + * @param {object} marketplace - Marketplace + * @param {number|string} marketplace.STATE - Marketplace state numeric code + * @returns {StateInfo} Marketplace state information */ export const getState = ({ STATE } = {}) => MARKETPLACE_STATES[+STATE] /** - * This function gets the marketplace capacity information. + * Returns the marketplace capacity information. * - * @param {object} props - Props object. - * @param {number|string} props.TOTAL_MB - Marketplace total MB available. - * @param {number|string} props.USED_MB - Marketplace used MB. + * @param {object} marketplace - Marketplace + * @param {number|string} marketplace.TOTAL_MB - Total capacity MB available + * @param {number|string} marketplace.USED_MB - Capacity used MB * @returns {{ * percentOfUsed: number, * percentLabel: string - * }} - Marketplace capacity information. + * }} Marketplace capacity information */ export const getCapacityInfo = ({ TOTAL_MB, USED_MB } = {}) => { const percentOfUsed = +USED_MB * 100 / +TOTAL_MB || 0 diff --git a/src/fireedge/src/client/models/MarketplaceApp.js b/src/fireedge/src/client/models/MarketplaceApp.js index f209b1f786..face078540 100644 --- a/src/fireedge/src/client/models/MarketplaceApp.js +++ b/src/fireedge/src/client/models/MarketplaceApp.js @@ -13,52 +13,22 @@ * See the License for the specific language governing permissions and * * limitations under the License. * * ------------------------------------------------------------------------- */ - -import * as STATES from 'client/constants/states' -import COLOR from 'client/constants/color' - -const MARKETPLACE_APP_TYPES = [ - 'UNKNOWN', - 'IMAGE', - 'VM TEMPLATE', - 'SERVICE TEMPLATE' -] - -const MARKETPLACE_APP_STATES = [ - { // 0 - name: STATES.INIT, - color: COLOR.info.main - }, - { // 1 - name: STATES.READY, - color: COLOR.success.main - }, - { // 2 - name: STATES.LOCKED, - color: COLOR.debug.main - }, - { // 3 - name: STATES.ERROR, - color: COLOR.error.main - }, - { // 4 - name: STATES.DISABLED, - color: COLOR.debug.light - } -] +import { MARKETPLACE_APP_STATES, MARKETPLACE_APP_TYPES, StateInfo } from 'client/constants' /** - * @param {object} marketplaceApp - Marketplace app. - * @param {number|string} marketplaceApp.TYPE - Marketplace app type numeric code. - * @returns {string} - Marketplace app type. + * Returns the name of marketplace app type. + * + * @param {object} marketplaceApp - Marketplace app + * @param {number|string} marketplaceApp.TYPE - Type + * @returns {MARKETPLACE_APP_TYPES} Marketplace app type name */ export const getType = ({ TYPE = 0 } = {}) => MARKETPLACE_APP_TYPES[+TYPE] /** - * This function gets the marketplace app state information. + * Returns the marketplace app state information. * - * @param {object} marketplaceApp - Marketplace app. - * @param {number|string} marketplaceApp.STATE - Marketplace app state numeric code. - * @returns {STATES.StateInfo} - Marketplace App state information. + * @param {object} marketplaceApp - Marketplace app + * @param {number|string} marketplaceApp.STATE - State + * @returns {StateInfo} Marketplace app state information */ export const getState = ({ STATE = 0 } = {}) => MARKETPLACE_APP_STATES[+STATE] diff --git a/src/fireedge/src/client/models/ProviderTemplate.js b/src/fireedge/src/client/models/ProviderTemplate.js index 43a5c9686e..d2f24acdfc 100644 --- a/src/fireedge/src/client/models/ProviderTemplate.js +++ b/src/fireedge/src/client/models/ProviderTemplate.js @@ -13,11 +13,27 @@ * See the License for the specific language governing permissions and * * limitations under the License. * * ------------------------------------------------------------------------- */ +/** + * @typedef {object} ProviderTemplate + * @property {string} name - Name + * @property {string} [description] - Description + * @property {string} provider - Provider type + * @property {object} plain - Information in plain format + * @property {string} [plain.image] - Image to card + * @property {string} plain.provision_type - Provision type + * @property {string|string[]} plain.location_key - Location key/s + * @property {object} connection - Connections + * @property {Array} inputs - Inputs to provision form + */ -/* eslint-disable jsdoc/require-jsdoc */ - -export const isValidProviderTemplate = ({ name, provider, plain = {}, connection }) => { - const { provision_type: provisionType, location_key: locationKey } = plain +/** + * Check if the provider template is valid format. + * + * @param {ProviderTemplate} template - Provider template + * @returns {boolean} Returns `true` if template is valid + */ +export const isValidProviderTemplate = ({ name, provider, plain, connection }) => { + const { provision_type: provisionType, location_key: locationKey } = plain ?? {} const keys = typeof locationKey === 'string' ? locationKey.split(',') : locationKey @@ -33,17 +49,23 @@ export const isValidProviderTemplate = ({ name, provider, plain = {}, connection } /** - * This function gets the provider locations string. + * Returns the locked connection from the provider template. * - * @param {object} props - Props object. - * @param {string|string[]} props.location_key - Location key. - * @returns {string[]} - Provider's location keys. + * @param {ProviderTemplate} template - Provider template object + * @returns {string[]} Location keys */ -export const getLocationKeys = ({ location_key: locationKey }) => +export const getLocationKeys = ({ plain: { location_key: locationKey } = {} }) => typeof locationKey === 'string' ? locationKey.split(',') : locationKey +/** + * Returns the not editable connections from provider template. + * Are defined at `plain.location_key`. + * + * @param {ProviderTemplate} template - Provider template + * @returns {object} Not editable connections + */ export const getConnectionFixed = ({ connection = {}, ...template }) => { - const keys = getLocationKeys(template?.plain) + const keys = getLocationKeys(template) return Object.entries(connection).reduce((res, [name, value]) => ({ ...res, @@ -51,8 +73,14 @@ export const getConnectionFixed = ({ connection = {}, ...template }) => { }), {}) } -export const getConnectionEditable = ({ connection = {}, ...template }) => { - const keys = getLocationKeys(template?.plain) +/** + * Returns the editable connections from provider template. + * + * @param {ProviderTemplate} template - Provider template + * @returns {object} Editable connections + */ +export const getConnectionEditable = ({ connection = {}, ...template } = {}) => { + const keys = getLocationKeys(template) return Object.entries(connection).reduce((res, [name, value]) => ({ ...res, diff --git a/src/fireedge/src/client/models/ProvisionTemplate.js b/src/fireedge/src/client/models/ProvisionTemplate.js index 46b2eb40c1..5e3c1ae088 100644 --- a/src/fireedge/src/client/models/ProvisionTemplate.js +++ b/src/fireedge/src/client/models/ProvisionTemplate.js @@ -13,17 +13,30 @@ * See the License for the specific language governing permissions and * * limitations under the License. * * ------------------------------------------------------------------------- */ +/** + * @typedef {object} ProvisionTemplate + * @property {string} name - Name + * @property {string} image - Image to card + * @property {string} provider - Provider type + * @property {string} provision_type - Provision type + * @property {object} defaults - Common configuration attributes + * @property {object} [defaults.provision] - Provision information + * @property {string} [defaults.provision.provider_name] - Provider name + * @property {{ + * provision: { provider_name: string } + * }[]} [hosts] - Provision hosts + * @property {object} cluster - Provision cluster + * @property {object[]} datastores - Provision datastores + * @property {object[]} networks - Provision networks + * @property {object[]} vnetTemplate - Provision network templates + * @property {Array} inputs - Inputs to provision form + */ /** - * This function indicates if the provision template is valid. + * Check if the provision template is valid format. * - * @param {object} props - Props object. - * @param {object} props.defaults - Provision defaults object. - * @param {object} props.hosts - Provision host object. - * @param {string} props.name - Provider name. - * @param {string} props.provider - Provider code name. - * @param {string} props.provision_type - Provision type name. - * @returns {boolean} - Valid provision template. + * @param {ProvisionTemplate} template - Provision template + * @returns {boolean} Returns `true` if template is valid */ export const isValidProvisionTemplate = ({ defaults, @@ -32,7 +45,9 @@ export const isValidProvisionTemplate = ({ provider, provision_type: provisionType }) => { - const providerName = defaults?.provision?.provider_name ?? hosts?.[0]?.provision.provider_name + const providerName = + defaults?.provision?.provider_name ?? + hosts?.[0]?.provision.provider_name return !( providerName === undefined || diff --git a/src/fireedge/src/client/models/SecurityGroup.js b/src/fireedge/src/client/models/SecurityGroup.js index 989b87e8ab..a0dedc4ed3 100644 --- a/src/fireedge/src/client/models/SecurityGroup.js +++ b/src/fireedge/src/client/models/SecurityGroup.js @@ -13,95 +13,27 @@ * See the License for the specific language governing permissions and * * limitations under the License. * * ------------------------------------------------------------------------- */ -import { T } from 'client/constants' +import { T, PROTOCOL_STRING, RULE_TYPE_STRING, ICMP_STRING, ICMP_V6_STRING } from 'client/constants' /** - * ICMP Codes for each ICMP type as in: - * http://www.iana.org/assignments/icmp-parameters/ - * - * @enum {string} Security group ICMP type + * @typedef {object} SecurityGroupRule + * @property {number|string} SECURITY_GROUP_ID - ID + * @property {string} SECURITY_GROUP_NAME - Name + * @property {string} PROTOCOL - Protocol + * @property {string} RULE_TYPE - Rule type + * @property {number|string} ICMP_TYPE - ICMP type + * @property {number|string} [ICMPv6_TYPE] - ICMP v6 type + * @property {number|string} [RANGE] - Range + * @property {number|string} [NETWORK_ID] - Network id + * @property {number|string} [SIZE] - Network size + * @property {string} [IP] - Network IP + * @property {string} [MAC] - Network MAC */ -const ICMP_STRING = { - '': 'All', - 0: '0: Echo Reply', - 3: '3: Destination Unreachable', - 4: '4: Source Quench', // Deprecated - 5: '5: Redirect', - 6: '6: Alternate Host Address', // Deprecated - 8: '8: Echo', - 9: '9: Router Advertisement', - 10: '10: Router Selection', - 11: '11: Time Exceeded', - 12: '12: Parameter Problem', - 13: '13: Timestamp', - 14: '14: Timestamp Reply', - 15: '15: Information Request', // Deprecated - 16: '16: Information Reply', // Deprecated - 17: '17: Address Mask Request', // Deprecated - 18: '18: Address Mask Reply', // Deprecated - 30: '30: Traceroute', // Deprecated - 31: '31: Datagram Conversion Error', // Deprecated - 32: '32: Mobile Host Redirect', // Deprecated - 33: '33: IPv6 Where-Are-You', // Deprecated - 34: '34: IPv6 I-Am-Here', // Deprecated - 35: '35: Mobile Registration Request', // Deprecated - 36: '36: Mobile Registration Reply', // Deprecated - 37: '37: Domain Name Request', // Deprecated - 38: '38: Domain Name Reply', // Deprecated - 39: '39: SKIP', // Deprecated - 40: '40: Photuris', - 41: '41: ICMP messages utilized by experimental mobility protocols such as Seamoby', - 253: '253: RFC3692-style Experiment 1', - 254: '254: RFC3692-style Experiment 2' -} - -/** - * ICMPv6 Codes for each ICMPv6 type as in: - * http://www.iana.org/assignments/icmpv6-parameters/ - * - * @enum {string} Security group ICMP v6 type - */ -const ICMP_V6_STRING = { - '': 'All', - 1: '1: Destination Unreachable', - 2: '2/0: Packet too big', - 3: '3: Time exceeded', - 4: '4: Parameter problem', - 128: '128/0: Echo request', - 129: '129/0: Echo reply' -} - -/** @enum {string} Security group protocol */ -const PROTOCOL_STRING = { - TCP: T.TCP, - UDP: T.UDP, - ICMP: T.ICMP, - ICMPV6: T.ICMPV6, - IPSEC: T.IPSEC, - ALL: T.All -} - -/** @enum {string} Security group rule type */ -const RULE_TYPE_STRING = { - OUTBOUND: T.Outbound, - INBOUND: T.Inbound -} /** * Converts a security group attributes into a readable format. * - * @param {object} securityGroup - Security group - * @param {number|string} securityGroup.SECURITY_GROUP_ID - Id - * @param {string} securityGroup.SECURITY_GROUP_NAME - Name - * @param {string} securityGroup.PROTOCOL - Protocol - * @param {string} securityGroup.RULE_TYPE - Rule type - * @param {number|string} securityGroup.ICMP_TYPE - ICMP type - * @param {number|string} securityGroup.ICMPv6_TYPE - ICMP v6 type - * @param {number|string} securityGroup.RANGE - Range - * @param {number|string} securityGroup.NETWORK_ID - Network id - * @param {number|string} securityGroup.SIZE - Network size - * @param {string} securityGroup.IP - Network IP - * @param {string} securityGroup.MAC - Network MAC + * @param {SecurityGroupRule} securityGroup - Security group * @returns {{ * SECURITY_GROUP_ID: number|string, * SECURITY_GROUP_NAME: string, @@ -124,10 +56,7 @@ export const prettySecurityGroup = ({ ICMP_TYPE: icmpType, ICMPv6_TYPE: icmpv6Type, RANGE: range, - NETWORK_ID, - SIZE, - IP, - MAC + ...rest }) => ({ ID, NAME, @@ -136,10 +65,7 @@ export const prettySecurityGroup = ({ ICMP_TYPE: ICMP_STRING[+icmpType] ?? '', ICMPv6_TYPE: ICMP_V6_STRING[+icmpv6Type] ?? '', RANGE: range || T.All, - NETWORK_ID, - SIZE, - IP, - MAC + ...rest }) /** diff --git a/src/fireedge/src/client/models/VirtualMachine.js b/src/fireedge/src/client/models/VirtualMachine.js index 88082382d4..d7a37f10f2 100644 --- a/src/fireedge/src/client/models/VirtualMachine.js +++ b/src/fireedge/src/client/models/VirtualMachine.js @@ -13,30 +13,9 @@ * See the License for the specific language governing permissions and * * limitations under the License. * * ------------------------------------------------------------------------- */ - -import { STATES, VM_STATES, VM_LCM_STATES, StateInfo } from 'client/constants' +import { STATES, VM_STATES, VM_LCM_STATES, NIC_ALIAS_IP_ATTRS, StateInfo } from 'client/constants' import { getSecurityGroupsFromResource, prettySecurityGroup } from 'client/models/SecurityGroup' -/* const EXTERNAL_IP_ATTRS = [ - 'GUEST_IP', - 'GUEST_IP_ADDRESSES', - 'AWS_IP_ADDRESS', - 'AWS_PUBLIC_IP_ADDRESS', - 'AWS_PRIVATE_IP_ADDRESS', - 'AZ_IPADDRESS', - 'SL_PRIMARYIPADDRESS' -] */ - -const NIC_ALIAS_IP_ATTRS = [ - 'IP', - 'IP6', - 'IP6_GLOBAL', - 'IP6_ULA', - 'VROUTER_IP', - 'VROUTER_IP6_GLOBAL', - 'VROUTER_IP6_ULA' -] - /** * This function removes, from the given list, * the Virtual machines in state DONE. diff --git a/src/fireedge/src/client/models/VirtualNetwork.js b/src/fireedge/src/client/models/VirtualNetwork.js index e47a5e090f..847cebe8c8 100644 --- a/src/fireedge/src/client/models/VirtualNetwork.js +++ b/src/fireedge/src/client/models/VirtualNetwork.js @@ -13,13 +13,12 @@ * See the License for the specific language governing permissions and * * limitations under the License. * * ------------------------------------------------------------------------- */ - /** - * This function get the total number of leases in the Address Range. + * Returns the total number of leases in the virtual network. * - * @param {object} virtualNetwork - Virtual network. - * @param {object} virtualNetwork.AR_POOL - Virtual network Address Range Pool. - * @returns {number} - Total leases. + * @param {object} virtualNetwork - Virtual network + * @param {object} virtualNetwork.AR_POOL - Address range pool + * @returns {number} Total leases */ export const getTotalLeases = ({ AR_POOL } = {}) => { const addressRanges = [AR_POOL?.AR ?? []].flat() @@ -28,14 +27,14 @@ export const getTotalLeases = ({ AR_POOL } = {}) => { } /** - * This function gets the virtual network leases information. + * Returns the virtual network leases information. * - * @param {object} virtualNetwork - Virtual network. - * @param {object} virtualNetwork.USED_LEASES - Used network leases. + * @param {object} virtualNetwork - Virtual network + * @param {object} virtualNetwork.USED_LEASES - Used network leases * @returns {{ * percentOfUsed: number, * percentLabel: string - * }} - Leases information. + * }} Leases information */ export const getLeasesInfo = ({ USED_LEASES, ...virtualNetwork } = {}) => { const totalLeases = getTotalLeases(virtualNetwork) diff --git a/src/fireedge/src/client/models/Zone.js b/src/fireedge/src/client/models/Zone.js index 6674ab2c0e..ed2efdb94c 100644 --- a/src/fireedge/src/client/models/Zone.js +++ b/src/fireedge/src/client/models/Zone.js @@ -13,26 +13,13 @@ * See the License for the specific language governing permissions and * * limitations under the License. * * ------------------------------------------------------------------------- */ - -import * as STATES from 'client/constants/states' -import COLOR from 'client/constants/color' - -const ZONE_STATES = [ - { // 0 - name: STATES.ENABLED, - color: COLOR.success.main - }, - { // 1 - name: STATES.DISABLED, - color: COLOR.debug.main - } -] +import { ZONE_STATES, StateInfo } from 'client/constants' /** - * This function gets the zone state. + * Returns state information about the zone. * - * @param {object} zone - Zone. - * @param {number|string} zone.STATE - Zone state numeric code. - * @returns {STATES.StateInfo} - Zone state information. + * @param {object} zone - Zone + * @param {number|string} zone.STATE - State + * @returns {StateInfo} State information */ export const getState = ({ STATE = 0 } = {}) => ZONE_STATES[+STATE]