Decouple Guest-server/agent from stx-metal
This decouples the build and packaging of guest-server, guest-agent from mtce, by splitting guest component into stx-nfv repo. This leaves existing C++ code, scripts, and resource files untouched, so there is no functional change. Code refactoring is beyond the scope of this update. Makefiles were modified to include devel headers directories /usr/include/mtce-common and /usr/include/mtce-daemon. This ensures there is no contamination with other system headers. The cgts-mtce-common package is renamed and split into: - repo stx-metal: mtce-common, mtce-common-dev - repo stx-metal: mtce - repo stx-nfv: mtce-guest - repo stx-ha: updates package dependencies to mtce-pmon for service-mgmt, sm, and sm-api mtce-common: - contains common and daemon shared source utility code mtce-common-dev: - based on mtce-common, contains devel package required to build mtce-guest and mtce - contains common library archives and headers mtce: - contains components: alarm, fsmon, fsync, heartbeat, hostw, hwmon, maintenance, mtclog, pmon, public, rmon mtce-guest: - contains guest component guest-server, guest-agent Story: 2002829 Task: 22748 Change-Id: I9c7a9b846fd69fd566b31aa3f12a043c08f19f1f Signed-off-by: Jim Gauld <james.gauld@windriver.com>
This commit is contained in:
222
mtce-common/src/common/hostUtil.cpp
Normal file
222
mtce-common/src/common/hostUtil.cpp
Normal file
@@ -0,0 +1,222 @@
|
||||
/*
|
||||
* Copyright (c) 2013, 2016 Wind River Systems, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Wind River CGCS Platform - Host Server Utility Module
|
||||
*/
|
||||
|
||||
#include "hostUtil.h"
|
||||
#include "nodeBase.h"
|
||||
static char local_hostname[MAX_HOST_NAME_SIZE+1] = {0};
|
||||
|
||||
const char* hostUtil_get_hostname()
|
||||
{
|
||||
if(*local_hostname == '\0')
|
||||
{
|
||||
gethostname(local_hostname, MAX_HOST_NAME_SIZE);
|
||||
}
|
||||
return local_hostname;
|
||||
}
|
||||
|
||||
string hostUtil_getServiceIp ( mtc_service_enum service )
|
||||
{
|
||||
string ip = "0.0.0.0" ;
|
||||
|
||||
daemon_config_type * cfg_ptr = daemon_get_cfg_ptr();
|
||||
|
||||
switch (service)
|
||||
{
|
||||
case SERVICE_SYSINV:
|
||||
{
|
||||
ip = cfg_ptr->sysinv_api_bind_ip ;
|
||||
break ;
|
||||
}
|
||||
case SERVICE_TOKEN:
|
||||
{
|
||||
if ( cfg_ptr->keystone_auth_host)
|
||||
{
|
||||
ip = cfg_ptr->keystone_auth_host;
|
||||
}
|
||||
else
|
||||
{
|
||||
ip = "localhost";
|
||||
}
|
||||
break ;
|
||||
}
|
||||
case SERVICE_SMGR:
|
||||
ip = hostUtil_get_hostname();
|
||||
break;
|
||||
case SERVICE_VIM:
|
||||
{
|
||||
ip = "localhost" ;
|
||||
break ;
|
||||
}
|
||||
default:
|
||||
{
|
||||
slog ("Unsupported service (%d)\n", service );
|
||||
break ;
|
||||
}
|
||||
}
|
||||
return (ip);
|
||||
}
|
||||
|
||||
string hostUtil_getPrefixPath ( )
|
||||
{
|
||||
string prefix_path = "";
|
||||
|
||||
daemon_config_type * cfg_ptr = daemon_get_cfg_ptr();
|
||||
|
||||
if ( cfg_ptr->keystone_prefix_path)
|
||||
{
|
||||
prefix_path = cfg_ptr->keystone_prefix_path;
|
||||
}
|
||||
|
||||
return (prefix_path);
|
||||
}
|
||||
|
||||
int hostUtil_getServicePort ( mtc_service_enum service )
|
||||
{
|
||||
daemon_config_type * cfg_ptr = daemon_get_cfg_ptr();
|
||||
|
||||
switch (service)
|
||||
{
|
||||
case SERVICE_SYSINV:
|
||||
return(cfg_ptr->sysinv_api_port);
|
||||
|
||||
case SERVICE_SMGR:
|
||||
return(cfg_ptr->ha_port);
|
||||
|
||||
case SERVICE_VIM:
|
||||
return(cfg_ptr->vim_cmd_port);
|
||||
|
||||
case SERVICE_TOKEN:
|
||||
return(cfg_ptr->keystone_port);
|
||||
|
||||
default:
|
||||
{
|
||||
slog ("Unsupported service (%d)\n", service );
|
||||
break ;
|
||||
}
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
||||
bool hostUtil_is_valid_ip_addr ( string ip )
|
||||
{
|
||||
if ( !ip.empty() )
|
||||
if ( ip.compare(NONE) )
|
||||
return (true);
|
||||
return (false);
|
||||
}
|
||||
|
||||
bool hostUtil_is_valid_mac_addr ( string mac )
|
||||
{
|
||||
if ( !mac.empty() )
|
||||
if ( mac.length() == COL_CHARS_IN_MAC_ADDR )
|
||||
return (true);
|
||||
return (false);
|
||||
}
|
||||
|
||||
bool hostUtil_is_valid_bm_type ( string bm_type )
|
||||
{
|
||||
dlog3 ("BM_Type:%s\n", bm_type.c_str());
|
||||
if ( !bm_type.empty() )
|
||||
{
|
||||
if (( bm_type == "bmc" ) ||
|
||||
( bm_type == "ilo" ) ||
|
||||
( bm_type == "ilo3" ) ||
|
||||
( bm_type == "ilo4" ) ||
|
||||
( bm_type == "quanta" ))
|
||||
{
|
||||
return (true);
|
||||
}
|
||||
}
|
||||
return ( false );
|
||||
}
|
||||
|
||||
bool hostUtil_is_valid_uuid ( string uuid )
|
||||
{
|
||||
if (( !uuid.empty() ) && ( uuid.length() == UUID_LEN ) )
|
||||
return (true);
|
||||
return (false);
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* Name : hostUtil_tmpfile
|
||||
*
|
||||
* Description : Create a temporary file with a randomized suffix.
|
||||
* Write the specified 'data' to it and return its
|
||||
* open file descriptor.
|
||||
*
|
||||
* The file is unlinked so that it is automatically deleted by the kernel
|
||||
* when the file descriptor is closed or the program exits.
|
||||
*
|
||||
* TODO: fix or figure out why the unlink removes the file right away even
|
||||
* with the file open.
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
int hostUtil_mktmpfile ( string hostname, string basename, string & filename, string data )
|
||||
{
|
||||
// buffer to hold the temporary file name
|
||||
char tempBuff[MAX_FILENAME_LEN];
|
||||
|
||||
int fd = -1;
|
||||
|
||||
memset(tempBuff,0,sizeof(tempBuff));
|
||||
|
||||
if ( basename.empty() || data.empty() )
|
||||
{
|
||||
slog ("%s called with one or more bad parameters (%d:%d)\n",
|
||||
hostname.c_str(), basename.empty(), data.empty());
|
||||
return (0);
|
||||
}
|
||||
|
||||
/* add what mkstemp will make unique */
|
||||
basename.append("XXXXXX");
|
||||
|
||||
// Copy the relevant information in the buffers
|
||||
snprintf ( &tempBuff[0], MAX_FILENAME_LEN, "%s", basename.data());
|
||||
|
||||
// Create the temporary file, this function will
|
||||
// replace the 'X's with random letters
|
||||
fd = mkstemp(tempBuff);
|
||||
|
||||
// Call unlink so that whenever the file is closed or the program exits
|
||||
// the temporary file is deleted.
|
||||
//
|
||||
// Note: Unlinking removes the file immediately.
|
||||
// Commenting out. Caller must remove file.
|
||||
//
|
||||
// unlink(tempBuff);
|
||||
|
||||
if(fd<1)
|
||||
{
|
||||
elog ("%s failed to create temp file (%d:%m)\n", hostname.c_str(), errno );
|
||||
return 0 ;
|
||||
}
|
||||
else
|
||||
{
|
||||
filename = tempBuff ;
|
||||
dlog2 ("%s temporary file [%s] created\n", hostname.c_str(), tempBuff );
|
||||
}
|
||||
|
||||
// Write the data to the temporary file
|
||||
if ( write ( fd, data.data(), data.size()) < 0 )
|
||||
{
|
||||
elog ("%s failed to write data to '%s' (%d:%m)\n",
|
||||
hostname.c_str(), filename.c_str(), errno );
|
||||
return 0 ;
|
||||
}
|
||||
else
|
||||
{
|
||||
dlog2 ("%s wrote %s to %s\n", hostname.c_str(), data.c_str(), filename.c_str());
|
||||
}
|
||||
return (fd);
|
||||
}
|
||||
Reference in New Issue
Block a user