From e873eb178c1e7489e57cfd87d10f9d9cf1358427 Mon Sep 17 00:00:00 2001 From: Jiri Tomasek Date: Fri, 5 May 2017 14:31:13 +0200 Subject: [PATCH] Fix nodes registration * Don't include uuid in nodes registration * Add IPMI port to driver fields Closes-Bug: 1689507 Closes-Bug: 1688543 Change-Id: I35df26175aa3fe44970420d8e1f0936fc1005337 (cherry picked from commit 2b7419299896eba7aa1238c74c5f4ad09835a9cd) --- .../nodes-register-port-080747965014e1b3.yaml | 6 ++ .../nodes/driver_fields/DriverFields.js | 75 +++++++++++++------ .../driver_fields/PXEAndDRACDriverFields.js | 15 +++- .../PXEAndIPMIToolDriverFields.js | 15 +++- .../driver_fields/PXEAndSSHDriverFields.js | 15 +++- src/js/immutableRecords/nodes.js | 4 +- 6 files changed, 93 insertions(+), 37 deletions(-) create mode 100644 releasenotes/notes/nodes-register-port-080747965014e1b3.yaml diff --git a/releasenotes/notes/nodes-register-port-080747965014e1b3.yaml b/releasenotes/notes/nodes-register-port-080747965014e1b3.yaml new file mode 100644 index 00000000..56d51ac6 --- /dev/null +++ b/releasenotes/notes/nodes-register-port-080747965014e1b3.yaml @@ -0,0 +1,6 @@ +fixes: + - | + Fixes `bug 1689507 `__ + IPMI port is now possible to specify when registering Nodes. + Fixes `bug 1688543 `__ + Node UUID is not generated by UI when registering nodes any more. diff --git a/src/js/components/nodes/driver_fields/DriverFields.js b/src/js/components/nodes/driver_fields/DriverFields.js index 1dd8c0c7..d29de9b7 100644 --- a/src/js/components/nodes/driver_fields/DriverFields.js +++ b/src/js/components/nodes/driver_fields/DriverFields.js @@ -9,6 +9,10 @@ const messages = defineMessages({ ipOrFqdnValidatorMessage: { id: 'DriverFields.ipOrFqdnValidatorMessage', defaultMessage: 'Please enter a valid IPv4 Address or a valid FQDN.' + }, + portValidationMessage: { + id: 'DriverFields.portValidationMessage', + defaultMessage: 'Please enter valid Port number (0 - 65535)' } }); @@ -16,38 +20,60 @@ class DriverFields extends React.Component { constructor(props) { super(props); - let ip_regex = '^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9]' + - '[0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'; + let ip_regex = + '^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9]' + + '[0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'; let fqdn_regex = '^(?!:\/\/)([a-zA-Z0-9]+\.)?[a-zA-Z0-9][a-zA-Z0-9-]+\.[a-zA-Z]{2,6}?$'; - this.ipOrFqdnValidator = {matchRegexp: new RegExp(ip_regex + '|' + fqdn_regex)}; + this.portRegex = + '^([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}' + '|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$$'; + + this.ipOrFqdnValidator = { + matchRegexp: new RegExp(ip_regex + '|' + fqdn_regex) + }; this.ipOrFqdnValidatorMessage = this.props.intl.formatMessage( - messages.ipOrFqdnValidatorMessage); + messages.ipOrFqdnValidatorMessage + ); } render() { return (
- - - + + + +
); } @@ -56,6 +82,7 @@ DriverFields.propTypes = { addr_title: React.PropTypes.string.isRequired, intl: React.PropTypes.object, node: ImmutablePropTypes.record.isRequired, + port_title: React.PropTypes.string.isRequired, pwd_title: React.PropTypes.string.isRequired, user_title: React.PropTypes.string.isRequired }; diff --git a/src/js/components/nodes/driver_fields/PXEAndDRACDriverFields.js b/src/js/components/nodes/driver_fields/PXEAndDRACDriverFields.js index b6b29854..18016df2 100644 --- a/src/js/components/nodes/driver_fields/PXEAndDRACDriverFields.js +++ b/src/js/components/nodes/driver_fields/PXEAndDRACDriverFields.js @@ -8,6 +8,10 @@ const messages = defineMessages({ id: 'PXEAndDRACDriverFields.addr_title', defaultMessage: 'DRAC Host' }, + port_title: { + id: 'PXEAndDRACDriverFields.port_title', + defaultMessage: 'DRAC Port' + }, user_title: { id: 'PXEAndDRACDriverFields.user_title', defaultMessage: 'DRAC Username' @@ -21,10 +25,13 @@ const messages = defineMessages({ class PXEAndDRACDriverFields extends React.Component { render() { return ( - + ); } } diff --git a/src/js/components/nodes/driver_fields/PXEAndIPMIToolDriverFields.js b/src/js/components/nodes/driver_fields/PXEAndIPMIToolDriverFields.js index d84c3873..cb33f531 100644 --- a/src/js/components/nodes/driver_fields/PXEAndIPMIToolDriverFields.js +++ b/src/js/components/nodes/driver_fields/PXEAndIPMIToolDriverFields.js @@ -8,6 +8,10 @@ const messages = defineMessages({ id: 'PXEAndIPMIToolDriverFields.addr_title', defaultMessage: 'IPMI IP Address or FQDN' }, + port_title: { + id: 'PXEAndIPMIToolDriverFields.port_title', + defaultMessage: 'IPMI Port' + }, user_title: { id: 'PXEAndIPMIToolDriverFields.user_title', defaultMessage: 'IPMI Username' @@ -21,10 +25,13 @@ const messages = defineMessages({ class PXEAndIPMIToolDriverFields extends React.Component { render() { return ( - + ); } } diff --git a/src/js/components/nodes/driver_fields/PXEAndSSHDriverFields.js b/src/js/components/nodes/driver_fields/PXEAndSSHDriverFields.js index 9b0bb25c..2bec0710 100644 --- a/src/js/components/nodes/driver_fields/PXEAndSSHDriverFields.js +++ b/src/js/components/nodes/driver_fields/PXEAndSSHDriverFields.js @@ -8,6 +8,10 @@ const messages = defineMessages({ id: 'PXEAndSSHDriverFields.addr_title', defaultMessage: 'SSH IP Address or FQDN' }, + port_title: { + id: 'PXEAndSSHDriverFields.port_title', + defaultMessage: 'SSH Port' + }, user_title: { id: 'PXEAndSSHDriverFields.user_title', defaultMessage: 'SSH User' @@ -21,10 +25,13 @@ const messages = defineMessages({ class PXEAndSSHDriverFields extends React.Component { render() { return ( - + ); } } diff --git a/src/js/immutableRecords/nodes.js b/src/js/immutableRecords/nodes.js index 7ae10a89..1b7a8bb6 100644 --- a/src/js/immutableRecords/nodes.js +++ b/src/js/immutableRecords/nodes.js @@ -8,6 +8,7 @@ export const NodeToRegister = Record({ pm_user: undefined, pm_addr: undefined, pm_password: undefined, + pm_port: undefined, arch: undefined, cpu: undefined, memory: undefined, @@ -16,13 +17,14 @@ export const NodeToRegister = Record({ }); export const IronicNode = Record({ - uuid: undefined, + // uuid: undefined, TODO(jtomasek): re-add this once registration supports passing uuid name: undefined, mac: List(), pm_type: 'pxe_ssh', pm_user: undefined, pm_addr: undefined, pm_password: undefined, + pm_port: undefined, arch: undefined, cpu: undefined, memory: undefined,