diff --git a/oam/cloud/IDBInstanceCmds.sh b/oam/cloud/IDBInstanceCmds.sh index 51c5acbff..7a12520da 100644 --- a/oam/cloud/IDBInstanceCmds.sh +++ b/oam/cloud/IDBInstanceCmds.sh @@ -8,7 +8,7 @@ prefix=/usr/local #check command if [ "$1" = "" ]; then - echo "Enter Command Name: {launchInstance|getInstance|getZone|getPrivateIP|getKey|getAMI|getType|terminateInstance|startInstance|assignElasticIP|deassignElasticIP|getProfile|stopInstance|getGroup} + echo "Enter Command Name: {launchInstance|getInstance|getZone|getPrivateIP|getKey|getAMI|getType|terminateInstance|startInstance|assignElasticIP|deassignElasticIP|getProfile|stopInstance|getGroup|getSubnet} }" exit 1 fi @@ -479,6 +479,21 @@ deassignElasticIP() { exit 0 } +getSubnet() { + #get local Instance ID + getInstancePrivate >/dev/null 2>&1 + #get Subnet + subnet=`cat $describeInstanceFile | grep -m 1 $instance | awk '{gsub(/^[ \t]+|[ \t]+$/,"");print $16}'` + if [ "$subnet" == "" ]; then + describeInstance + fi + subnet=`cat $describeInstanceFile | grep -m 1 $instance | awk '{gsub(/^[ \t]+|[ \t]+$/,"");print $16}'` + + echo $subnet + return +} + + case "$1" in getInstance) getInstance @@ -525,8 +540,11 @@ case "$1" in getGroup) getGroup ;; + getSubnet) + getSubnet + ;; *) - echo $"Usage: $0 {launchInstance|getInstance|getZone|getPrivateIP|getType|getKey|getAMI|getType|terminateInstance|startInstance|assignElasticIP|deassignElasticIP|getProfile|stopInstance|getGroup}" + echo $"Usage: $0 {launchInstance|getInstance|getZone|getPrivateIP|getType|getKey|getAMI|getType|terminateInstance|startInstance|assignElasticIP|deassignElasticIP|getProfile|stopInstance|getGroup|getSubnet}" exit 1 esac diff --git a/oam/oamcpp/liboamcpp.cpp b/oam/oamcpp/liboamcpp.cpp index fa9e7cdd4..592ecbf41 100644 --- a/oam/oamcpp/liboamcpp.cpp +++ b/oam/oamcpp/liboamcpp.cpp @@ -7631,6 +7631,38 @@ namespace oam } + /*************************************************************************** + * + * Function: getEC2LocalInstanceSubnet + * + * Purpose: Get Amazon EC2 local Instance Subnet + * + ****************************************************************************/ + + std::string Oam::getEC2LocalInstanceSubnet(std::string name) + { + // run script to get Instance Subnet + string cmd = InstallDir + "/bin/IDBInstanceCmds.sh Subnet > /tmp/getInstanceSubnet_" + name; + int status = system(cmd.c_str()); + if (WEXITSTATUS(status) != 0 ) + return "failed"; + + // get Instance Name + string instanceSubnet; + string file = "/tmp/getInstanceSubnet_" + name; + ifstream oldFile (file.c_str()); + char line[400]; + while (oldFile.getline(line, 400)) + { + instanceSubnet = line; + } + oldFile.close(); + + return instanceSubnet; + + } + + /*************************************************************************** * * Function: launchEC2Instance diff --git a/oam/oamcpp/liboamcpp.h b/oam/oamcpp/liboamcpp.h index 66d8207ce..9d6cd4805 100644 --- a/oam/oamcpp/liboamcpp.h +++ b/oam/oamcpp/liboamcpp.h @@ -2325,6 +2325,10 @@ namespace oam */ EXPORT std::string getEC2LocalInstanceType(std::string name = "dummy"); + /** @brief getEC2LocalInstanceSubnet + */ + EXPORT std::string getEC2LocalInstanceSubnet(std::string name = "dummy"); + /** @brief launchEC2Instance */ EXPORT std::string launchEC2Instance(const std::string name = "dummy", const std::string IPAddress = oam::UnassignedName, const std::string type = oam::UnassignedName, const std::string group = oam::UnassignedName); diff --git a/oamapps/calpontConsole/calpontConsole.cpp b/oamapps/calpontConsole/calpontConsole.cpp index f9743f673..467420c7f 100644 --- a/oamapps/calpontConsole/calpontConsole.cpp +++ b/oamapps/calpontConsole/calpontConsole.cpp @@ -4883,11 +4883,11 @@ int processCommand(string* arguments) string GlusterStorageType; string AmazonVPCNextPrivateIP; try { + oam.getSystemConfig("Cloud", cloud); + oam.getSystemConfig("AmazonVPCNextPrivateIP", AmazonVPCNextPrivateIP); oam.getSystemConfig("GlusterConfig", GlusterConfig); oam.getSystemConfig("GlusterCopies", GlusterCopies); - oam.getSystemConfig("Cloud", cloud); oam.getSystemConfig("GlusterStorageType", GlusterStorageType); - oam.getSystemConfig("AmazonVPCNextPrivateIP", AmazonVPCNextPrivateIP); } catch(...) {} diff --git a/oamapps/postConfigure/postConfigure.cpp b/oamapps/postConfigure/postConfigure.cpp index 69a4b855c..b3bae26e9 100644 --- a/oamapps/postConfigure/postConfigure.cpp +++ b/oamapps/postConfigure/postConfigure.cpp @@ -668,7 +668,14 @@ int main(int argc, char *argv[]) } catch(...) {} - } + + if ( amazonSubNet == oam::UnassignedName || amazonSubNet == "" ) + { + amazonSubNet = oam.getEC2LocalInstanceSubnet(); + if ( amazonSubNet == "failed" || amazonSubNet == "" ) + amazonSubNet == oam::UnassignedName; + } + } } } @@ -964,13 +971,16 @@ int main(int argc, char *argv[]) amazonVPC = true; cloud = "amazon-vpc"; - prompt = "Enter VPC SubNet ID (" + amazonSubNet + ") > "; - pcommand = callReadline(prompt.c_str()); - if (pcommand) { - if (strlen(pcommand) > 0) amazonSubNet = pcommand; - callFree(pcommand); + if ( amazonSubNet == oam::UnassignedName ) + { + prompt = "Enter VPC SubNet ID (" + amazonSubNet + ") > "; + pcommand = callReadline(prompt.c_str()); + if (pcommand) { + if (strlen(pcommand) > 0) amazonSubNet = pcommand; + callFree(pcommand); + } } - + //set subnetID try { sysConfig->setConfig(InstallSection, "AmazonSubNetID", amazonSubNet); @@ -3521,7 +3531,7 @@ int main(int argc, char *argv[]) cout << ". " + installDir + "/bin/calpontAlias" << endl << endl; cout << "Enter 'idbmysql' to access the InfiniDB MySQL console" << endl; - cout << "Enter 'cc' to access the InfiniDB OAM console" << endl << endl; + cout << "Enter 'cc' to access the InfiniDB System Management console" << endl << endl; } else {