Skip to content

Commit

Permalink
Bugfix for the security step
Browse files Browse the repository at this point in the history
  • Loading branch information
sakshibobade21 committed Jan 8, 2024
1 parent 67cbec4 commit e2a8eaa
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 36 deletions.
8 changes: 4 additions & 4 deletions src/actions/InstallationHandler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -115,21 +115,21 @@ class Installation {
}

public async initSecurity(connectionArgs: IIpcConnectionArgs,
installationArgs: {installationDir: string}, zoweConfig: any): Promise<any>{
installationArgs: {installationDir: string}, zoweConfig: any): Promise<IResponse>{
console.log('writing current yaml to disk');
const filePath = path.join(app.getPath('temp'), 'zowe.yaml')
await fs.writeFile(filePath, stringify(zoweConfig), (err: any) => {
if (err) {
console.warn("Can't save configuration to zowe.yaml");
return ProgressStore.set('initSecurity.writeYaml', false);
ProgressStore.set('initSecurity.writeYaml', false);
return {status: false, details: `Can't save configuration to zowe.yaml`};
}
});
ProgressStore.set('initSecurity.writeYaml', true);
console.log("uploading yaml...");
const uploadYaml = await this.uploadYaml(connectionArgs, installationArgs.installationDir);
if(!uploadYaml.status){
return ProgressStore.set('initSecurity.uploadYaml', false);

return {status: false, details: `Error uploading yaml configuration: ${uploadYaml.details}`};
}
ProgressStore.set('initSecurity.uploadYaml', uploadYaml.status);
const script = `cd ${installationArgs.installationDir}/runtime/bin;\n./zwe init security -c ${installationArgs.installationDir}/zowe.yaml`;
Expand Down
1 change: 0 additions & 1 deletion src/renderer/components/common/Stepper.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import { useAppSelector, useAppDispatch } from '../../hooks';
import { selectNextStepEnabled } from '../configuration-wizard/wizardSlice';
import { alertEmitter } from '../Header';
import EditorDialog from "./EditorDialog";
import Security from '../stages/Security';
import { useTheme, createTheme } from '@mui/material/styles';


Expand Down
64 changes: 34 additions & 30 deletions src/renderer/components/stages/Security.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ const Security = () => {
const yaml = useAppSelector(selectYaml);
const setupSchema = schema ? schema.properties.zowe.properties.setup.properties.security : "";
const [setupYaml, setSetupYaml] = useState(yaml?.zowe.setup.security);
const [init, setInit] = useState(false);
const [isInit, setIsInit] = useState(false);
const [initialize, setInitialize] = useState(false);
const [editorVisible, setEditorVisible] = useState(false);
const [isFormValid, setIsFormValid] = useState(false);
const [formError, setFormError] = useState('');
Expand Down Expand Up @@ -66,32 +67,48 @@ const Security = () => {
validate = ajv.compile(securitySchema);
}

useEffect(() => {
dispatch(setNextStepEnabled(false));
if(Object.keys(initConfig) && Object.keys(initConfig).length != 0) {
setSetupYaml(initConfig);
}
setInitialize(true);
setIsInit(true);
}, []);

useEffect(() => {
timer = setInterval(() => {
window.electron.ipcRenderer.getInitSecurityProgress().then((res: any) => {
setInitProgress(res);
})
}, 3000);
const nextPosition = document.getElementById('init-progress');
const nextPosition = document.getElementById('isInit-progress');
nextPosition.scrollIntoView({behavior: 'smooth'});
}, [showProgress]);

useEffect(() => {
dispatch(setNextStepEnabled(false));
if(Object.keys(initConfig) && Object.keys(initConfig).length != 0) {
setSetupYaml(initConfig);
}
setInit(true);
}, []);

const toggleEditorVisibility = (type: any) => {
setContentType(type);
setEditorVisible(!editorVisible);
};

const handleFormChange = (data: any, isYamlUpdated?: boolean) => {
let newData = init ? (Object.keys(initConfig).length > 0 ? initConfig: data) : (data ? data : initConfig);
setInit(false);
const process = (event: any) => {
event.preventDefault();
toggleProgress(true);
window.electron.ipcRenderer.initSecurityButtonOnClick(connectionArgs, installationArgs, getZoweConfig()).then((res: IResponse) => {
dispatch(setNextStepEnabled(res.status));
clearInterval(timer);
}).catch(() => {
clearInterval(timer);
console.warn('zwe isInit security failed');
});
}

const handleFormChange = (data: any, isYamlUpdated?: boolean, customParam?: boolean) => {
if(!initialize) {
return;
}
let newData = isInit ? (Object.keys(initConfig).length > 0 ? initConfig: data) : (data ? data : initConfig);
setIsInit(false);

if (newData) {
newData = isYamlUpdated ? data.security : newData;
Expand All @@ -117,19 +134,6 @@ const Security = () => {
dispatch(setNextStepEnabled(proceed));
}

const process = (event: any) => {
event.preventDefault();
toggleProgress(true);
window.electron.ipcRenderer.initSecurityButtonOnClick(connectionArgs, installationArgs, getZoweConfig()).then((res: IResponse) => {
dispatch(setNextStepEnabled(res.status));
clearInterval(timer);
}).catch(() => {
clearInterval(timer);
console.warn('zwe init security failed');
});

}

return (
<div>
<Box sx={{ position:'absolute', bottom: '1px', display: 'flex', flexDirection: 'row', p: 1, justifyContent: 'flex-start', [theme.breakpoints.down('lg')]: {flexDirection: 'column',alignItems: 'flex-start'}}}>
Expand All @@ -141,14 +145,14 @@ const Security = () => {
<EditorDialog contentType={contentType} isEditorVisible={editorVisible} toggleEditorVisibility={toggleEditorVisibility} onChange={handleFormChange}/>
<Box sx={{ width: '60vw' }}>
{!isFormValid && <div style={{color: 'red', fontSize: 'small', marginBottom: '20px'}}>{formError}</div>}
<JsonForm schema={setupSchema} onChange={handleFormChange} formData={setupYaml}/>
<JsonForm schema={setupSchema} onChange={(data: any, isYamlUpdated: boolean) => handleFormChange(data, isYamlUpdated, true)} formData={setupYaml}/>
<Button sx={{boxShadow: 'none', mr: '12px'}} type="submit" variant="text" onClick={e => process(e)}>Initialize Security Config</Button>
<Box sx={{height: showProgress ? 'calc(100vh - 220px)' : 'auto'}} id="init-progress">
<Box sx={{height: showProgress ? 'calc(100vh - 220px)' : 'auto'}} id="isInit-progress">
{!showProgress ? null :
<React.Fragment>
<ProgressCard label={`Write configuration file locally to temp directory`} id="init-security-progress-card" status={initProgress.writeYaml}/>
<ProgressCard label={`Write configuration file locally to temp directory`} id="isInit-security-progress-card" status={initProgress.writeYaml}/>
<ProgressCard label={`Upload configuration file to ${installationArgs.installationDir}`} id="download-progress-card" status={initProgress.uploadYaml}/>
<ProgressCard label={`Run zwe init security`} id="success-progress-card" status={initProgress.success}/>
<ProgressCard label={`Run zwe isInit security`} id="success-progress-card" status={initProgress.success}/>
</React.Fragment>
}
</Box>
Expand Down
2 changes: 1 addition & 1 deletion src/renderer/preload.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ contextBridge.exposeInMainWorld('electron', {
},
on(channel: string, func: any) {
// REVIEW: Used to have channel validation with ipcRenderer.send, do we need something similar for ipcRenderer.invoke?
const validChannels = ['install-mvs'];
const validChannels = ['install-mvs', 'init-security'];
if (validChannels.includes(channel)) {
ipcRenderer.on(channel, (event, ...args) => func(...args));
}
Expand Down

0 comments on commit e2a8eaa

Please sign in to comment.