Commit b9d0d49d authored by Claes Sjofors's avatar Claes Sjofors

Sev node built from 'Build Node'

parent ac582029
......@@ -288,10 +288,12 @@ reload_cnvobjects()
reload_continue "Pass convert objects in loaded database"
for cdb in $databases; do
echo "-- Convert volume $cdb"
wb_cmd -q -v $cdb @$pwr_exe/upgrade_pb.pwr_com
done
# Only directory volume
# for cdb in $databases; do
# echo "-- Convert volume $cdb"
# wb_cmd -q -v $cdb @$pwr_exe/upgrade_pb.pwr_com
# done
wb_cmd -q @$pwr_exe/upgrade_pb.pwr_com
reload_status=$reload__success
}
......@@ -638,6 +640,7 @@ usage()
cnvdump Convert dumpfiles.
renamedb Rename old databases.
loaddb Load databases.
cnvobjects Convert objects.
compile Compile all plcprograms in the database
createload Create new loadfiles.
buildnodes Build all nodes in the project.
......@@ -679,7 +682,7 @@ for db in $tmp; do
fi
done
passes="savedirectory classvolumes cnvdump renamedb loaddb compile createload buildnodes createpackage"
passes="savedirectory classvolumes cnvdump renamedb loaddb cnvobjects compile createload buildnodes createpackage"
#echo "Pass: $passes"
echo ""
echo -n "Enter start pass [savedirectory] > "
......
......@@ -33,104 +33,51 @@
# the source code of Proview (the version used to produce the
# combined work), being distributed under the terms of the GNU
# General Public License plus this exception.
!
!
! Script for upgrading Profinet modules during upgrading from V5.4 to V5.5,
!
! Sets the Slot attribute.
!
function int is_numeric( string s)
string s1;
int ret = 0;
int len;
#
#
# Script for upgrading SevNodeConfig during upgrading from V5.5 to V5.6,
#
s1 = extract( 1, 1, s);
if ( s1 == "0" || s1 == "1" || s1 == "2" || s1 == "3" || s1 == "4" || s1 == "5" || s1 == "6" || s1 == "7" || s1 == "8" || s1 == "9")
ret = 1;
endif
len = strlen(s);
if ( len > 1)
s1 = extract( 2, 1, s);
if ( s1 == "0" || s1 == "1" || s1 == "2" || s1 == "3" || s1 == "4" || s1 == "5" || s1 == "6" || s1 == "7" || s1 == "8" || s1 == "9")
ret = 1;
endif
endif
return ret;
endfunction
# Add a RootVolumeConfig and RootVolumeLoad object and
# set the LoadFiles bit in Distribute.Components.
#
function int set_slot( string mclass)
string name;
string sname;
string snum;
int num;
main()
string sevnode;
string volume;
string attr;
string parent;
string child;
string class;
string sysobj;
int components;
verify(0);
name = GetClassList( mclass);
while ( name != "")
sevnode = GetClassList( "SevNodeConfig");
while ( sevnode != "")
attr = sevnode + ".Volume";
volume = GetAttribute( attr);
sname = CutObjectName( name, 1);
snum = extract( 2, 5, sname);
CreateObject( volume, "RootVolumeLoad", sevnode, 1);
num = is_numeric( snum);
if ( num == 1)
num = snum;
sysobj = GetClassList( "$System");
CreateObject( volume, "RootVolumeConfig", sysobj, 3);
attr = name + ".Slot";
SetAttribute( attr, num);
printf( "%s %d\n", name, num);
else
# Count siblings
parent = GetParent( name);
child = GetChild( parent);
num = 1;
while ( child != "")
if ( child == name)
attr = name + ".Slot";
SetAttribute( attr, num);
printf( "%s %d\n", name, num);
break;
endif
child = GetChild( sevnode);
while ( child != "")
class = GetObjectClass( child);
if ( class == "Distribute")
attr = child + ".Components";
components = GetAttribute( attr);
components = components | 2;
SetAttribute( attr, components);
break;
endif
child = GetNextSibling( child);
endwhile
child = GetNextSibling( child);
num++;
endwhile
endif
name = GetNextObject( name);
sevnode = GetNextObject( sevnode);
endwhile
return 1;
endfunction
main()
set_slot( "PnModule");
set_slot( "BaseFcPPO3PnModule");
set_slot( "ABB_ACS880_PnModule");
set_slot( "Siemens_Di4_PnModule");
set_slot( "Siemens_Di2_PnModule");
set_slot( "Siemens_Do4_PnModule");
set_slot( "Siemens_Do2_PnModule");
set_slot( "Siemens_Di32_PnModule");
set_slot( "Siemens_D16_PnModule");
set_slot( "Siemens_Dx16_PnModule");
set_slot( "Siemens_Di8_PnModule");
set_slot( "Siemens_Do32_PnModule");
set_slot( "Siemens_Do16_PnModule");
set_slot( "Siemens_Do8_PnModule");
set_slot( "Siemens_Ai8_PnModule");
set_slot( "Siemens_Ai4_PnModule");
set_slot( "Siemens_Ai2_PnModule");
set_slot( "Siemens_Ao8_PnModule");
set_slot( "Siemens_Ao4_PnModule");
set_slot( "Sinamics_Tgm1_PnModule");
endmain
save /quiet
endmain
\ No newline at end of file
......@@ -37,7 +37,7 @@
!
SObject pwrb:Class
!/**
! @Version 1.0
! @Version 1.1
! @Group ProjectConfiguration
! @Summary Configures a proview storage environment node.
! The SevNodeConfig object configures a proview storage environment node.
......@@ -49,8 +49,8 @@ SObject pwrb:Class
! The SevNodeConfig object is created in the project volume as a child to
! a BusConfig-object in the node-hierachy.
!
! A root volumes has to be registred for the node. The volume is only used to give
! the node a unique identity, and no database is created for the volume.
! A root volumes has to be registred and configured for the node. The volume
! should contain a SevServer object in the node hierarchy.
!
! @b See also
! @classlink NodeConfig pwrb_nodeconfig.html
......@@ -124,11 +124,12 @@ SObject pwrb:Class
EndBody
EndObject
!/**
! Name of the rootvolume of the node.
! Obsolete since V5.6.0.
!*/
Object Volume $Attribute 7
Body SysBody
Attr TypeRef = "pwrs:Type-$String80"
Attr Flags |= PWR_MASK_INVISIBLE
EndBody
EndObject
!/**
......
......@@ -313,7 +313,7 @@ void wb_build::all( int no_export, int no_classvolumes, int no_flowfiles)
m_sts = sumsts;
}
void wb_build::node( char *nodename, void *volumelist, int volumecnt)
void wb_build::node( char *nodename, int nodetype, void *volumelist, int volumecnt)
{
lfu_t_volumelist *vlist = (lfu_t_volumelist *)volumelist;
pwr_tTime vtime;
......@@ -430,7 +430,7 @@ void wb_build::node( char *nodename, void *volumelist, int volumecnt)
if ( opt.force || opt.manual || rebuild) {
m_sts = lfu_create_bootfile( nodename, (lfu_t_volumelist *)volumelist, volumecnt,
m_sts = lfu_create_bootfile( nodename, nodetype, (lfu_t_volumelist *)volumelist, volumecnt,
opt.debug);
if ( ODD(m_sts))
wb_log::log( wlog_eCategory_NodeBuild, nodename, 0);
......
......@@ -56,6 +56,10 @@ typedef enum {
bld_ePass_AfterNode
} bld_ePass;
typedef enum {
bld_eNodeType_Node,
bld_eNodeType_Sev
} bld_eNodeType;
class wb_build : public wb_status
{
......@@ -65,7 +69,7 @@ class wb_build : public wb_status
void classlist( pwr_tCid cid);
void all( int no_export = 0, int no_classvolumes = 0, int no_flowfiles = 0);
void node( char *nodename, void *volumelist, int volumecnt);
void node( char *nodename, int nodetype, void *volumelist, int volumecnt);
void volume();
void rootvolume( pwr_tVid vid);
void classvolume( pwr_tVid vid);
......@@ -92,4 +96,4 @@ class wb_build : public wb_status
pwr_tOid m_hierarchy;
};
#endif
\ No newline at end of file
#endif
......@@ -58,7 +58,7 @@ static pwr_tStatus PostCreate (
pwr_tMask comp;
comp = pwr_mDistrComponentMask_UserDatabase |
// pwr_mDistrComponentMask_LoadFiles |
pwr_mDistrComponentMask_LoadFiles |
// pwr_mDistrComponentMask_ApplFile |
// pwr_mDistrComponentMask_XttHelpFile |
// pwr_mDistrComponentMask_RHostFiles |
......@@ -149,4 +149,4 @@ pwr_dExport pwr_BindMethods(SevNodeConfig) = {
pwr_BindMethod(PostCreate),
pwr_BindMethod(SyntaxCheck),
pwr_NullMethod
};
\ No newline at end of file
};
......@@ -65,6 +65,7 @@
#include "wb_trv.h"
#include "wb_lfu.h"
#include "wb_log.h"
#include "wb_build.h"
#include "co_dbs.h"
#include "cow_msgwindow.h"
#include "co_cnf.h"
......@@ -275,6 +276,7 @@ pwr_tStatus lfu_create_loadfile(
*************************************************************************/
pwr_tStatus lfu_create_bootfile(
char *nodeconfigname,
int nodetype,
lfu_t_volumelist *volumelist,
int volumecount,
int debug)
......@@ -391,6 +393,12 @@ pwr_tStatus lfu_create_bootfile(
volumelist_ptr++;
utl_toupper( vollistname_upper, volumelist_ptr->p1);
}
if ( nodetype == bld_eNodeType_Sev) {
fprintf( file, "pwrs 0.0.0.1\n");
fprintf( file, "pwrb 0.0.0.2\n");
}
fclose( file);
break;
......@@ -660,7 +668,7 @@ pwr_tStatus lfu_SaveDirectoryVolume(
int found;
pwr_tObjid envobjid;
pwr_tObjid dbobjid;
pwr_tClassId cid, ccid;
pwr_tClassId cid, ccid, vcid;
pwr_tObjid volobjid;
int size;
pwr_tString80 *path_ptr;
......@@ -746,10 +754,10 @@ pwr_tStatus lfu_SaveDirectoryVolume(
ODD(sts);
sts = ldh_GetNextSibling( ldhses, envobjid, &envobjid)) {
sts = ldh_GetObjectClass( ldhses, envobjid, &cid);
sts = ldh_GetObjectClass( ldhses, envobjid, &vcid);
if ( EVEN(sts)) return sts;
if ( cid == pwr_cClass_WbEnvironment) {
if ( vcid == pwr_cClass_WbEnvironment) {
if ( k != 1)
continue;
......@@ -785,14 +793,14 @@ pwr_tStatus lfu_SaveDirectoryVolume(
// Get xxxVolumeLoad objects
sts = ldh_GetChild( ldhses, envobjid, &volobjid);
while ( ODD(sts)) {
sts = ldh_GetObjectClass( ldhses, volobjid, &cid);
sts = ldh_GetObjectClass( ldhses, volobjid, &vcid);
if ( EVEN(sts)) return sts;
if ( cid == pwr_cClass_RootVolumeLoad ||
cid == pwr_cClass_SubVolumeLoad ||
cid == pwr_cClass_ClassVolumeLoad ||
cid == pwr_cClass_DetachedClassVolumeLoad ||
cid == pwr_cClass_SharedVolumeLoad ) {
if ( vcid == pwr_cClass_RootVolumeLoad ||
vcid == pwr_cClass_SubVolumeLoad ||
vcid == pwr_cClass_ClassVolumeLoad ||
vcid == pwr_cClass_DetachedClassVolumeLoad ||
vcid == pwr_cClass_SharedVolumeLoad ) {
sts = ldh_ObjidToName( ldhses, volobjid, ldh_eName_Object,
volume_name, sizeof(volume_name), &size);
if ( EVEN(sts)) return sts;
......@@ -806,7 +814,7 @@ pwr_tStatus lfu_SaveDirectoryVolume(
if ( !strcmp( name, volname)) {
found = 1;
switch (cid) {
switch (vcid) {
case pwr_cClass_RootVolumeLoad :
strcpy( classname, "RootVolume");
break;
......@@ -843,17 +851,17 @@ pwr_tStatus lfu_SaveDirectoryVolume(
sts = ldh_GetNextSibling( ldhses, volobjid, &volobjid);
}
}
else if ( cid == pwr_cClass_RootVolumeConfig ||
cid == pwr_cClass_SubVolumeConfig ||
cid == pwr_cClass_ClassVolumeConfig ||
cid == pwr_cClass_DetachedClassVolumeConfig ||
cid == pwr_cClass_SharedVolumeConfig ||
cid == pwr_cClass_CloneVolumeConfig ||
cid == pwr_cClass_ExternVolumeConfig ) {
if ( ! (cid == pwr_cClass_ClassVolumeConfig || cid == pwr_cClass_DetachedClassVolumeConfig) &&
else if ( vcid == pwr_cClass_RootVolumeConfig ||
vcid == pwr_cClass_SubVolumeConfig ||
vcid == pwr_cClass_ClassVolumeConfig ||
vcid == pwr_cClass_DetachedClassVolumeConfig ||
vcid == pwr_cClass_SharedVolumeConfig ||
vcid == pwr_cClass_CloneVolumeConfig ||
vcid == pwr_cClass_ExternVolumeConfig ) {
if ( ! (vcid == pwr_cClass_ClassVolumeConfig || vcid == pwr_cClass_DetachedClassVolumeConfig) &&
k == 0)
continue;
if ( (cid == pwr_cClass_ClassVolumeConfig || cid == pwr_cClass_DetachedClassVolumeConfig) &&
if ( (vcid == pwr_cClass_ClassVolumeConfig || vcid == pwr_cClass_DetachedClassVolumeConfig) &&
k == 1)
continue;
......@@ -871,7 +879,7 @@ pwr_tStatus lfu_SaveDirectoryVolume(
found = 1;
bool out_of_range = false;
switch (cid) {
switch (vcid) {
case pwr_cClass_RootVolumeConfig :
strcpy( classname, "RootVolume");
if ( volumelist_ptr->volume_id < cdh_cUserVolMin ||
......@@ -924,7 +932,7 @@ pwr_tStatus lfu_SaveDirectoryVolume(
syntax_error = 1;
}
switch (cid) {
switch (vcid) {
case pwr_cClass_RootVolumeConfig :
case pwr_cClass_SubVolumeConfig :
case pwr_cClass_ClassVolumeConfig :
......@@ -937,10 +945,10 @@ pwr_tStatus lfu_SaveDirectoryVolume(
"Database", (char **) &dbenum, &size);
if ( EVEN(sts)) return sts;
if (( (cid == pwr_cClass_ClassVolumeConfig ||
cid == pwr_cClass_DetachedClassVolumeConfig) && *dbenum == 2) ||
( !(cid == pwr_cClass_ClassVolumeConfig ||
cid == pwr_cClass_DetachedClassVolumeConfig) && *dbenum == 1)) {
if (( (vcid == pwr_cClass_ClassVolumeConfig ||
vcid == pwr_cClass_DetachedClassVolumeConfig) && *dbenum == 2) ||
( !(vcid == pwr_cClass_ClassVolumeConfig ||
vcid == pwr_cClass_DetachedClassVolumeConfig) && *dbenum == 1)) {
sts = ldh_GetObjectPar( ldhses, envobjid, "RtBody",
"Server", (char **) &server, &size);
if ( EVEN(sts)) return sts;
......@@ -1022,7 +1030,7 @@ pwr_tStatus lfu_SaveDirectoryVolume(
syntax_error = 1;
}
else {
switch (cid) {
switch (vcid) {
case pwr_cClass_RootVolumeConfig :
case pwr_cClass_SubVolumeConfig :
case pwr_cClass_SharedVolumeConfig : {
......@@ -1030,18 +1038,18 @@ pwr_tStatus lfu_SaveDirectoryVolume(
int *dbenum_p = 0;
char *server_p = 0;
ldh_eVolRep volrep;
pwr_tCid vcid;
pwr_tCid volcid;
pwr_tString40 server = "";
switch ( cid) {
switch ( vcid) {
case pwr_cClass_RootVolumeConfig:
vcid = pwr_eClass_RootVolume;
volcid = pwr_eClass_RootVolume;
break;
case pwr_cClass_SubVolumeConfig:
vcid = pwr_eClass_SubVolume;
volcid = pwr_eClass_SubVolume;
break;
case pwr_cClass_SharedVolumeConfig:
vcid = pwr_eClass_SharedVolume;
volcid = pwr_eClass_SharedVolume;
break;
default: ;
}
......@@ -1073,7 +1081,7 @@ pwr_tStatus lfu_SaveDirectoryVolume(
data = (lfu_sCreaDb *) calloc( 1, sizeof(*data));
strcpy( data->name, volumelist_ptr->volume_name);
data->vid = volumelist_ptr->volume_id;
data->cid = vcid;
data->cid = volcid;
data->ldhses = ldhses;
data->volrep = volrep;
strcpy( data->server, "");
......@@ -1115,7 +1123,7 @@ pwr_tStatus lfu_SaveDirectoryVolume(
data = (lfu_sCreaDb *) calloc( 1, sizeof(*data));
strcpy( data->name, volumelist_ptr->volume_name);
data->vid = volumelist_ptr->volume_id;
data->cid = vcid;
data->cid = volcid;
data->ldhses = ldhses;
data->volrep = volrep;
strcpy( data->server, server);
......@@ -1176,7 +1184,7 @@ pwr_tStatus lfu_SaveDirectoryVolume(
data = (lfu_sCreaDb *) calloc( 1, sizeof(*data));
strcpy( data->name, volumelist_ptr->volume_name);
data->vid = volumelist_ptr->volume_id;
if ( cid == pwr_cClass_DetachedClassVolumeConfig)
if ( vcid == pwr_cClass_DetachedClassVolumeConfig)
data->cid = pwr_eClass_DetachedClassVolume;
else
data->cid = pwr_eClass_ClassVolume;
......@@ -1216,7 +1224,7 @@ pwr_tStatus lfu_SaveDirectoryVolume(
data = (lfu_sCreaDb *) calloc( 1, sizeof(*data));
strcpy( data->name, volumelist_ptr->volume_name);
data->vid = volumelist_ptr->volume_id;
if ( cid == pwr_cClass_DetachedClassVolumeConfig)
if ( vcid == pwr_cClass_DetachedClassVolumeConfig)
data->cid = pwr_eClass_DetachedClassVolume;
else
data->cid = pwr_eClass_ClassVolume;
......@@ -1253,7 +1261,7 @@ pwr_tStatus lfu_SaveDirectoryVolume(
break;
}
if ( cid == pwr_cClass_DetachedClassVolumeConfig)
if ( vcid == pwr_cClass_DetachedClassVolumeConfig)
fprintf( wblfile, "Volume %s pwr_eClass_DetachedClassVolume %s\nEndVolume\n",
volume_name, cdh_VolumeIdToString( 0, 0, volumelist_ptr->volume_id, 0, 0));
else
......@@ -1328,7 +1336,9 @@ pwr_tStatus lfu_SaveDirectoryVolume(
sts = ldh_GetObjectClass( ldhses, nodeobjid, &cid);
if ( EVEN(sts)) return sts;
if ( cid == pwr_cClass_NodeConfig) {
if ( cid == pwr_cClass_NodeConfig ||
cid == pwr_cClass_SevNodeConfig) {
sts = ldh_ObjidToName( ldhses, nodeobjid, ldh_eName_Object,
nodeconfig_name, sizeof(nodeconfig_name), &size);
if ( EVEN(sts)) return sts;
......@@ -1348,9 +1358,13 @@ pwr_tStatus lfu_SaveDirectoryVolume(
}
/* Check SecondaryNode.NodeName attribute */
sts = ldh_GetObjectPar( ldhses, nodeobjid, "RtBody",
"SecondaryNode.NodeName", &secondary_nodename_ptr, &size);
if (EVEN(sts)) return sts;
if ( cid == pwr_cClass_NodeConfig) {
sts = ldh_GetObjectPar( ldhses, nodeobjid, "RtBody",
"SecondaryNode.NodeName", &secondary_nodename_ptr, &size);
if (EVEN(sts)) return sts;
}
else
secondary_nodename_ptr = 0;
/* Check OperatingSystem attribute */
sts = ldh_GetObjectPar( ldhses, nodeobjid, "RtBody",
......@@ -1377,30 +1391,32 @@ pwr_tStatus lfu_SaveDirectoryVolume(
}
/* Check SimulateSingleProcess attribute */
sts = ldh_GetObjectPar( ldhses, nodeobjid, "RtBody",
"SimulateSingleProcess", (char **)&single_scan_ptr, &size);
if (EVEN(sts)) return sts;
if ( *single_scan_ptr != 0) {
if ( cid == pwr_cClass_NodeConfig) {
sts = ldh_GetObjectPar( ldhses, nodeobjid, "RtBody",
"SimulateSingleScanTime", (char **)&scantime_ptr, &size);
if ( EVEN(sts)) return sts;
"SimulateSingleProcess", (char **)&single_scan_ptr, &size);
if (EVEN(sts)) return sts;
if ( *single_scan_ptr != 0) {
sts = ldh_GetObjectPar( ldhses, nodeobjid, "RtBody",
"SimulateSingleScanTime", (char **)&scantime_ptr, &size);
if ( EVEN(sts)) return sts;
if ( *scantime_ptr == 0) {
char msg[200];
sprintf( msg, "Error in NodeConfig object '%s', SimulateSingleScanTime is missing", nodeconfig_name);
MsgWindow::message( 'E', msg, msgw_ePop_Default);
syntax_error = 1;
if ( *scantime_ptr == 0) {
char msg[200];
sprintf( msg, "Error in NodeConfig object '%s', SimulateSingleScanTime is missing", nodeconfig_name);
MsgWindow::message( 'E', msg, msgw_ePop_Default);
syntax_error = 1;
}
scantime = *scantime_ptr;
free( (char *) scantime_ptr);
}
scantime = *scantime_ptr;
free( (char *) scantime_ptr);
else
scantime = 0;
free( (char *) single_scan_ptr);
}
else
else
scantime = 0;
free( (char *) single_scan_ptr);
lfu_check_appl_file( ldhses, nodename_ptr, *bus_number_ptr);
// lfu_check_opt_file( ldhses, nodename_ptr, *bus_number_ptr, (pwr_mOpSys) os);
......@@ -1411,14 +1427,14 @@ pwr_tStatus lfu_SaveDirectoryVolume(
/* Find the volumes in this node */
sts = ldh_GetChild( ldhses, nodeobjid, &volobjid);
while ( ODD(sts)) {
sts = ldh_GetObjectClass( ldhses, volobjid, &cid);
sts = ldh_GetObjectClass( ldhses, volobjid, &vcid);
if ( EVEN(sts)) return sts;
if ( cid == pwr_cClass_RootVolumeLoad ||
cid == pwr_cClass_SubVolumeLoad ||
cid == pwr_cClass_ClassVolumeLoad ||
cid == pwr_cClass_DetachedClassVolumeLoad ||
cid == pwr_cClass_SharedVolumeLoad ) {
if ( vcid == pwr_cClass_RootVolumeLoad ||
vcid == pwr_cClass_SubVolumeLoad ||
vcid == pwr_cClass_ClassVolumeLoad ||
vcid == pwr_cClass_DetachedClassVolumeLoad ||
vcid == pwr_cClass_SharedVolumeLoad ) {
sts = ldh_ObjidToName( ldhses, volobjid, ldh_eName_Object,
volume_name, sizeof(volume_name), &size);
if ( EVEN(sts)) return sts;
......@@ -1451,17 +1467,18 @@ pwr_tStatus lfu_SaveDirectoryVolume(
}
if ( j == 0)
fprintf( file, "%s %s %s %s %d %d %f\n",
fprintf( file, "%s %s %s %s %d %d %f %d\n",
volume_name,
cdh_VolumeIdToString( 0, 0, volumelist_ptr->volume_id, 0, 0),
nodeconfig_name,
nodename_ptr,
*bus_number_ptr,
os,
scantime);
scantime,
cid == pwr_cClass_SevNodeConfig ? bld_eNodeType_Sev : bld_eNodeType_Node);
else if ( j == 1)
// Secondary node
fprintf( file, "%s %s %s(%s) %s %d %d %f\n",
fprintf( file, "%s %s %s(%s) %s %d %d %f %d\n",
volume_name,
cdh_VolumeIdToString( 0, 0, volumelist_ptr->volume_id, 0, 0),
secondary_nodename_ptr,
......@@ -1469,7 +1486,8 @@ pwr_tStatus lfu_SaveDirectoryVolume(
secondary_nodename_ptr,
*bus_number_ptr,
os,
scantime);
scantime,
bld_eNodeType_Node);
break;
}
volumelist_ptr++;
......@@ -1484,12 +1502,14 @@ pwr_tStatus lfu_SaveDirectoryVolume(
}
sts = ldh_GetNextSibling( ldhses, volobjid, &volobjid);
}
if ( strcmp( secondary_nodename_ptr, "") == 0)
if ( secondary_nodename_ptr == 0 ||
strcmp( secondary_nodename_ptr, "") == 0)
break;
}
if ( nodename_ptr != null_nodename)
free( nodename_ptr);
free( secondary_nodename_ptr);
if ( secondary_nodename_ptr)
free( secondary_nodename_ptr);
free( (char *) os_ptr);
}
sts = ldh_GetNextSibling( ldhses, nodeobjid, &nodeobjid);
......@@ -2071,71 +2091,6 @@ pwr_tStatus lfu_SaveDirectoryVolume(
}
fclose( fp);
}
if ( nodeo.cid() == pwr_cClass_SevNodeConfig) {
// Print a bootfile also
char timstr[40];
pwr_tObjName volstr;
pwr_tVolumeId vid;
sprintf( filename, pwr_cNameBoot,
load_cDirectory, cdh_Low(nodevect[idx].nodename),
bus_number);
dcli_translate_filename( filename, filename);
file = fopen( filename, "w");
if ( !file) {
printf( "** Error, Unable to open bootfile, %s", filename);
return LFU__NOFILE;
}
time_AtoAscii(NULL, time_eFormat_DateAndTime, timstr,sizeof(timstr));
fprintf( file, "%s\n", timstr);
sts = utl_get_systemobject( ldhses, &systemobjid, systemname,
systemgroup);
if ( EVEN(sts)) {
fprintf( file, "\n");
fprintf( file, "\n");
}
else {
fprintf( file, "%s\n", systemname);
fprintf( file, "%s\n", systemgroup);
}
/* Check that there is a rootvolume for this node */
found = 0;
for ( wb_object volo = nodeo.first(); volo; volo = volo.after()) {
if ( volo.cid() == pwr_cClass_RootVolumeLoad) {
strcpy( volstr, volo.name());
/* Check that the name is in the global volume list */
found = 0;
volumelist_ptr = volumelist;
for ( int j = 0; j < volumecount; j++) {
if ( cdh_NoCaseStrcmp( volstr, volumelist_ptr->volume_name) == 0) {
found = 1;
vid = volumelist_ptr->volume_id;
break;
}
volumelist_ptr++;
}
if ( !found) {
char msg[200];
sprintf( msg, "Error, Volume not configured in global volume list, %s\n", volstr);
MsgWindow::message( 'E', msg, msgw_ePop_Default);
}
}
}
if ( found) {
fprintf( file, "-\n");
fprintf( file, "%s %s\n", volstr, cdh_VolumeIdToString( 0, 0, vid, 0, 0));
fprintf( file, "pwrs 0.0.0.1\n");
fprintf( file, "pwrb 0.0.0.2\n");
}
fclose( file);
}
break;
}
default: ;
......@@ -3433,12 +3388,14 @@ int lfu_create_bootfiles (
{
int sts;
char node_array[30][80];
int nodetype[30];
int found;
int nr, i, j;
lfu_t_volumelist *volumelist;
lfu_t_volumelist *volumelist_ptr;
int volumecount;
pwr_tString40 nodeconfigname;
pwr_tString40 nodeconfigname;
int nodeconfigtype;
/* Load the bootlist */
sts = lfu_volumelist_load( pwr_cNameBootList,
......@@ -3470,6 +3427,7 @@ int lfu_create_bootfiles (
utl_toupper( nodeconfigname, volumelist_ptr->p1);
if ( !strcmp( nodeconfigname, node_array[i]))
{
nodetype[i] = atoi(volumelist_ptr->p6);
found = 1;
break;
}
......@@ -3483,7 +3441,7 @@ int lfu_create_bootfiles (
/* Create the bootfiles */
for ( i = 0; i < nr; i++)
{
sts = lfu_create_bootfile( node_array[i], volumelist, volumecount,
sts = lfu_create_bootfile( node_array[i], nodetype[i], volumelist, volumecount,
debug);
if ( EVEN(sts)) return sts;
......@@ -3500,7 +3458,8 @@ int lfu_create_bootfiles (
if ( strcmp( nodeconfigname, volumelist_ptr->p1))
{
strcpy( nodeconfigname, volumelist_ptr->p1);
sts = lfu_create_bootfile( nodeconfigname,
nodeconfigtype = atoi( volumelist_ptr->p6);
sts = lfu_create_bootfile( nodeconfigname, nodeconfigtype,
volumelist, volumecount, debug);
if ( EVEN(sts)) return sts;
}
......
......@@ -128,6 +128,7 @@ pwr_tStatus lfu_volumelist_load( const char *filename,
pwr_tStatus lfu_create_loadfile( ldh_tSesContext ldhses);
pwr_tStatus lfu_create_bootfile( char *nodeconfigname,
int nodetype,
lfu_t_volumelist *volumelist,
int volumecount,
int debug);
......@@ -194,4 +195,4 @@ pwr_tStatus lfu_GetBootList( vector<lfu_boot_info>& vect, int *nodes);
}
#endif
#endif
\ No newline at end of file
#endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment