Update parameters updating

tripleo.parameters.update mistral action now validates parameters
using heat. A returned object is the same as with
tripleo.parameters.get_flatten. This patch updates action and
simplifies reducer accordingly

Note that updating parameters now takes significantly longer
so we'll need to add pending state and probably change the way we
handle nodes assignment form in subsequent patches

Depends-On: I9aa18c4152ff9bf896729ace0d9481af50fd7802
Change-Id: Ic4054061d937ce94eb27825a0078c8a3e7717c36
This commit is contained in:
Jiri Tomasek 2017-12-05 16:39:03 +01:00
parent 668cd45f2f
commit c0b4b72534
4 changed files with 39 additions and 40 deletions

View File

@ -0,0 +1,4 @@
---
features:
- |
Updating parameters now validates parameters using Heat

View File

@ -16,10 +16,7 @@
import { List, Map } from 'immutable';
import {
ParametersDefaultState,
Parameter
} from '../../js/immutableRecords/parameters';
import { ParametersDefaultState } from '../../js/immutableRecords/parameters';
import ParametersConstants from '../../js/constants/ParametersConstants';
import parametersReducer from '../../js/reducers/parametersReducer';
@ -29,7 +26,7 @@ const parametersActionPayload = {
},
parameters: {
parameter1: {
default: '3PuRFRBdhHDD49Td4jHJYmD3n',
default: '1',
type: 'String',
noEcho: 'true',
description: 'The password for the glance service and db account',
@ -126,9 +123,7 @@ describe('parametersReducer', () => {
it('sets parameters', () => {
expect(state.parameters.size).toEqual(1);
expect(state.parameters.getIn(['parameter1', 'default'])).toEqual(
'3PuRFRBdhHDD49Td4jHJYmD3n'
);
expect(state.parameters.getIn(['parameter1', 'default'])).toEqual('1');
expect(Map.isMap(state.parameters)).toBe(true);
});
@ -201,7 +196,7 @@ describe('parametersReducer', () => {
let state;
const action = {
type: ParametersConstants.UPDATE_PARAMETERS_SUCCESS,
payload: { foo: 'bar' }
payload: parametersActionPayload
};
beforeEach(() => {
@ -209,11 +204,7 @@ describe('parametersReducer', () => {
ParametersDefaultState({
isFetching: true,
form: Map({ some: 'value' }),
parameters: Map({
foo: new Parameter({
name: 'foo'
})
})
parameters: Map(parametersActionPayload.parameters)
}),
action
);
@ -233,7 +224,7 @@ describe('parametersReducer', () => {
});
it('updates parameters in state with new values', () => {
expect(state.parameters.get('foo').default).toEqual('bar');
expect(state.parameters.get('parameter1').default).toEqual('1');
});
});
});

View File

@ -123,7 +123,15 @@ export default {
})
)
.then(response => {
dispatch(this.updateParametersSuccess(data));
const { resources, parameters } = response.heat_resource_tree;
const mistralParameters = response.environment_parameters;
dispatch(
this.updateParametersSuccess({
resources,
parameters,
mistralParameters
})
);
dispatch(
NotificationActions.notify({
title: formatMessage(messages.parametersUpdatedNotficationTitle),
@ -161,7 +169,15 @@ export default {
})
)
.then(response => {
dispatch(this.updateParametersSuccess(data));
const { resources, parameters } = response.heat_resource_tree;
const mistralParameters = response.environment_parameters;
dispatch(
this.updateParametersSuccess({
resources,
parameters,
mistralParameters
})
);
dispatch(stopSubmit('nodesAssignment'));
})
.catch(error => {
@ -188,7 +204,15 @@ export default {
})
)
.then(response => {
dispatch(this.updateParametersSuccess(data));
const { resources, parameters } = response.heat_resource_tree;
const mistralParameters = response.environment_parameters;
dispatch(
this.updateParametersSuccess({
resources,
parameters,
mistralParameters
})
);
dispatch(stopSubmit('parametersForm'));
if (redirect) {
redirect();

View File

@ -34,7 +34,8 @@ export default function parametersReducer(state = initialState, action) {
.set('isFetching', true)
.set('form', Map({ formErrors: List(), formFieldErrors: Map() }));
case ParametersConstants.FETCH_PARAMETERS_SUCCESS: {
case ParametersConstants.FETCH_PARAMETERS_SUCCESS:
case ParametersConstants.UPDATE_PARAMETERS_SUCCESS: {
const { resources, parameters, mistralParameters } = action.payload;
return state
.set('loaded', true)
@ -72,27 +73,6 @@ export default function parametersReducer(state = initialState, action) {
case ParametersConstants.UPDATE_PARAMETERS_PENDING:
return state.set('isFetching', true);
case ParametersConstants.UPDATE_PARAMETERS_SUCCESS: {
const updatedParameters = action.payload;
return state
.set('isFetching', false)
.set(
'form',
Map({
formErrors: List(),
formFieldErrors: Map()
})
)
.update('parameters', parameters => {
return parameters.map(
parameter =>
Object.keys(updatedParameters).includes(parameter.name)
? parameter.set('default', updatedParameters[parameter.name])
: parameter
);
});
}
case ParametersConstants.UPDATE_PARAMETERS_FAILED:
return state.set('isFetching', false).set(
'form',