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 2b74192998
)
This commit is contained in:
parent
7372bbfb86
commit
e873eb178c
|
@ -0,0 +1,6 @@
|
|||
fixes:
|
||||
- |
|
||||
Fixes `bug 1689507 <https://launchpad.net/bugs/1689507>`__
|
||||
IPMI port is now possible to specify when registering Nodes.
|
||||
Fixes `bug 1688543 <https://launchpad.net/bugs/1688543>`__
|
||||
Node UUID is not generated by UI when registering nodes any more.
|
|
@ -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 (
|
||||
<div>
|
||||
<HorizontalInput name="pm_addr"
|
||||
title={this.props.addr_title}
|
||||
inputColumnClasses="col-sm-7"
|
||||
labelColumnClasses="col-sm-5"
|
||||
value={this.props.node.pm_addr}
|
||||
validations={this.ipOrFqdnValidator}
|
||||
validationError={this.ipOrFqdnValidatorMessage}
|
||||
required />
|
||||
<HorizontalInput name="pm_user"
|
||||
title={this.props.user_title}
|
||||
inputColumnClasses="col-sm-7"
|
||||
labelColumnClasses="col-sm-5"
|
||||
value={this.props.node.pm_user}
|
||||
required />
|
||||
<HorizontalTextarea name="pm_password"
|
||||
title={this.props.pwd_title}
|
||||
inputColumnClasses="col-sm-7"
|
||||
labelColumnClasses="col-sm-5"
|
||||
value={this.props.node.pm_password}
|
||||
required />
|
||||
<HorizontalInput
|
||||
name="pm_addr"
|
||||
title={this.props.addr_title}
|
||||
inputColumnClasses="col-sm-7"
|
||||
labelColumnClasses="col-sm-5"
|
||||
value={this.props.node.pm_addr}
|
||||
validations={this.ipOrFqdnValidator}
|
||||
validationError={this.ipOrFqdnValidatorMessage}
|
||||
required
|
||||
/>
|
||||
<HorizontalInput
|
||||
name="pm_port"
|
||||
title={this.props.port_title}
|
||||
inputColumnClasses="col-sm-7"
|
||||
labelColumnClasses="col-sm-5"
|
||||
value={this.props.node.pm_port}
|
||||
validations={{ matchRegexp: new RegExp(this.portRegex) }}
|
||||
validationError={this.props.intl.formatMessage(messages.portValidationMessage)}
|
||||
/>
|
||||
<HorizontalInput
|
||||
name="pm_user"
|
||||
title={this.props.user_title}
|
||||
inputColumnClasses="col-sm-7"
|
||||
labelColumnClasses="col-sm-5"
|
||||
value={this.props.node.pm_user}
|
||||
required
|
||||
/>
|
||||
<HorizontalTextarea
|
||||
name="pm_password"
|
||||
title={this.props.pwd_title}
|
||||
inputColumnClasses="col-sm-7"
|
||||
labelColumnClasses="col-sm-5"
|
||||
value={this.props.node.pm_password}
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
@ -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
|
||||
};
|
||||
|
|
|
@ -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 (
|
||||
<DriverFields {...this.props}
|
||||
addr_title={this.props.intl.formatMessage(messages.addr_title)}
|
||||
user_title={this.props.intl.formatMessage(messages.user_title)}
|
||||
pwd_title={this.props.intl.formatMessage(messages.pwd_title)} />
|
||||
<DriverFields
|
||||
{...this.props}
|
||||
addr_title={this.props.intl.formatMessage(messages.addr_title)}
|
||||
user_title={this.props.intl.formatMessage(messages.user_title)}
|
||||
port_title={this.props.intl.formatMessage(messages.port_title)}
|
||||
pwd_title={this.props.intl.formatMessage(messages.pwd_title)}
|
||||
/>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 (
|
||||
<DriverFields {...this.props}
|
||||
addr_title={this.props.intl.formatMessage(messages.addr_title)}
|
||||
user_title={this.props.intl.formatMessage(messages.user_title)}
|
||||
pwd_title={this.props.intl.formatMessage(messages.pwd_title)} />
|
||||
<DriverFields
|
||||
{...this.props}
|
||||
addr_title={this.props.intl.formatMessage(messages.addr_title)}
|
||||
user_title={this.props.intl.formatMessage(messages.user_title)}
|
||||
port_title={this.props.intl.formatMessage(messages.port_title)}
|
||||
pwd_title={this.props.intl.formatMessage(messages.pwd_title)}
|
||||
/>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 (
|
||||
<DriverFields {...this.props}
|
||||
addr_title={this.props.intl.formatMessage(messages.addr_title)}
|
||||
user_title={this.props.intl.formatMessage(messages.user_title)}
|
||||
pwd_title={this.props.intl.formatMessage(messages.pwd_title)} />
|
||||
<DriverFields
|
||||
{...this.props}
|
||||
addr_title={this.props.intl.formatMessage(messages.addr_title)}
|
||||
user_title={this.props.intl.formatMessage(messages.user_title)}
|
||||
port_title={this.props.intl.formatMessage(messages.port_title)}
|
||||
pwd_title={this.props.intl.formatMessage(messages.pwd_title)}
|
||||
/>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue