update per review comments and changing to 7.3.1 config
This commit is contained in:
Родитель
d02b136445
Коммит
d474610276
22
README.md
22
README.md
|
@ -154,18 +154,19 @@ Please contact azure support for help with this configuration.
|
|||
You can run install.sh within the folder and it will install python virtual environment at
|
||||
plugin path like below:
|
||||
$HF_TOP/$HF_VERSION/providerplugins/azurecc/scripts/venv
|
||||
If you also need to generate symphony configuration then you can run install.sh with argument generate_config. This will set all the configurations assuming you have only azurecc provider and enable it.
|
||||
If you also need to generate symphony configuration then you can run install.sh with argument generate_config and other required arguments. This will set all the configurations assuming you have only azurecc provider and enable it.Example:
|
||||
./install.sh generate_config --cluster <cluster_name> --username <username> --password <password> --web_server <webserver>
|
||||
|
||||
|
||||
## Guide to using scripts
|
||||
|
||||
These scripts can be found under $HF_TOP/$HF_VERSION/providerplugins/azurecc/scripts
|
||||
These scripts can be found under $HF_TOP/$HF_VERSION/providerplugins/azurecc/scripts.
|
||||
1. generateWeightedTemplates.sh
|
||||
This script is used to generated weighted template. You need to run this script as root.
|
||||
./generateWeightedTemplates.sh
|
||||
This will create a template based on current cyclecloud template selections and print it.
|
||||
If there are errors please check in /tmp/template_generate.out
|
||||
You must then store template in $HF_TOP/$HF_VERSION/hostfactory/providers/conf/azurecc_templates.json file.
|
||||
You must then store template in $HF_TOP/$HF_VERSION/hostfactory/providers/conf/azurecc_templates.json file. After storing the file the change will take effect only after you stop and start HostFactory.
|
||||
2. testDryRunWeightedTemplates.sh
|
||||
These are test scripts which has 2 options:
|
||||
a. validate_templates - this will check the template in default path where azurecc_templates.json is stored
|
||||
|
@ -182,31 +183,36 @@ Please contact azure support for help with this configuration.
|
|||
## Testing capacity issues
|
||||
|
||||
You can trigger a capacity issue using following python script.
|
||||
|
||||
Run LastFailureTime.py under hostfactory/host_provider/test/ with follwing arguments:
|
||||
1. Number of seconds before current time
|
||||
2. Account name
|
||||
3. region
|
||||
4. machine name
|
||||
python LastFailureTime.py 1 AccountName westus2 Standard_D8_v5
|
||||
Update the offset compared to UTC time to match the time cycle_server is in, like below matches Central US Standard time, that is 5 hrs behind UTC:
|
||||
def format_time(timestamp):
|
||||
return datetime.datetime.strftime(timestamp, "%Y-%m-%d %H:%M:%S.%f-05:00")
|
||||
python LastFailureTime.py 1 <AccountName> westus2 Standard_D8_v5
|
||||
|
||||
Output is like below:
|
||||
|
||||
AdType = "Cloud.Capacity"
|
||||
ExpirationTime = `2024-03-01 16:34:54.045927-06:00`
|
||||
AccountName = "AccountName"
|
||||
AccountName = "<AccountName>"
|
||||
StatusUpdatedTime = `2024-03-01 15:34:53.045927-06:00`
|
||||
Region = "westus2"
|
||||
HasCapacity = False
|
||||
Provider = "azure"
|
||||
Name = "region/AccountName/westus2/Standard_D8_v5"
|
||||
Name = "region/<AccountName>/westus2/Standard_D8_v5"
|
||||
MachineType = "Standard_D8_v5"
|
||||
|
||||
Copy the above output in /tmp/test.dat file and run below command to update the Cloud.Capacity record
|
||||
Above output is stored in /tmp/test.dat file and run below command to update the Cloud.Capacity record
|
||||
|
||||
curl -k -u ${CC_USER} -X POST -H "Content-Type:application/text" --data-binary "@/tmp/test.dat" localhost:8080/db/Cloud.Capacity?format=text
|
||||
|
||||
You can also verify this on CC GUI, HasCapacity is false
|
||||
![alt text](image.png)
|
||||
|
||||
Note: You should run this script from machine where Cyclecloud is installed.
|
||||
## Additional configs for symphony templates
|
||||
|
||||
Following 2 configuration have been added:
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
#!/bin/bash -e
|
||||
export HF_LOGDIR=/tmp/log
|
||||
TEMP_HF_LOGDIR=/tmp/log
|
||||
export HF_LOGDIR=$TEMP_HF_LOGDIR
|
||||
export HF_CONFDIR=$HF_TOP/conf
|
||||
export HF_WORKDIR=/tmp/work
|
||||
TEMP_HF_WORKDIR=/tmp/work
|
||||
export HF_WORKDIR=$TEMP_HF_WORKDIR
|
||||
mkdir -p $HF_LOGDIR
|
||||
mkdir -p $HF_WORKDIR
|
||||
cat <<EOF >/tmp/input.json
|
||||
cat <<EOF >/tmp/genTemplates.input.json
|
||||
{}
|
||||
EOF
|
||||
export PRO_LOG_DIR=${HF_LOGDIR}
|
||||
|
@ -17,7 +19,8 @@ venv_path=$HF_TOP/$HF_VERSION/providerplugins/azurecc/venv/bin
|
|||
scriptDir=`dirname $0`
|
||||
export PYTHONPATH=$PYTHONPATH:$scriptDir/src
|
||||
. $venv_path/activate
|
||||
$venv_path/python3 -m cyclecloud_provider generate_templates -f /tmp/input.json 2>> /tmp/template_generate.out
|
||||
rm -rf $HF_LOGDIR
|
||||
rm -rf $HF_WORKDIR
|
||||
exit 0
|
||||
$venv_path/python3 -m cyclecloud_provider generate_templates -f /tmp/genTemplates.input.json
|
||||
exit_status=$?
|
||||
rm -rf $TEMP_HF_LOGDIR
|
||||
rm -rf $TEMP_HF_WORKDIR
|
||||
exit $exit_status
|
|
@ -17,41 +17,26 @@ venv_path=$HF_TOP/$HF_VERSION/providerplugins/azurecc/venv/bin
|
|||
|
||||
if [ -e $venv_path ]; then
|
||||
# Check group membership
|
||||
touch /opt/cycle/jetpack/logs/jetpack.log 1>&2 2> /dev/null
|
||||
|
||||
groups $(whoami) | grep -q cyclecloud
|
||||
if [ $? != 0 ]; then
|
||||
. $venv_path/activate
|
||||
$venv_path/python3 -m cyclecloud_provider $@ 2>>$STDERR_FILE
|
||||
echo $(whoami) must be added to the cyclecloud group.
|
||||
exit 1
|
||||
else
|
||||
args=$@
|
||||
sg cyclecloud ". $venv_path/activate"
|
||||
sg cyclecloud "$venv_path/python3 -m cyclecloud_provider $args 2>>$STDERR_FILE"
|
||||
exit $?
|
||||
else
|
||||
groups $(whoami) | grep -q cyclecloud
|
||||
if [ $? != 0 ]; then
|
||||
echo $(whoami) must be added to the cyclecloud group.
|
||||
exit 1
|
||||
else
|
||||
args=$@
|
||||
sg cyclecloud ". $venv_path/activate"
|
||||
sg cyclecloud "$venv_path/python3 -m cyclecloud_provider $args 2>>$STDERR_FILE"
|
||||
exit $?
|
||||
fi
|
||||
fi
|
||||
elif [ -e $embedded_python ]; then
|
||||
# Check group membership
|
||||
touch /opt/cycle/jetpack/logs/jetpack.log 1>&2 2> /dev/null
|
||||
|
||||
if [ $? == 0 ]; then
|
||||
$embedded_python -m cyclecloud_provider $@ 2>>$STDERR_FILE
|
||||
groups $(whoami) | grep -q cyclecloud
|
||||
if [ $? != 0 ]; then
|
||||
echo $(whoami) must be added to the cyclecloud group.
|
||||
exit 1
|
||||
else
|
||||
args=$@
|
||||
sg cyclecloud "/opt/cycle/jetpack/system/embedded/bin/python -m cyclecloud_provider $args 2>>$STDERR_FILE"
|
||||
exit $?
|
||||
else
|
||||
groups $(whoami) | grep -q cyclecloud
|
||||
if [ $? != 0 ]; then
|
||||
echo $(whoami) must be added to the cyclecloud group.
|
||||
exit 1
|
||||
else
|
||||
args=$@
|
||||
sg cyclecloud "/opt/cycle/jetpack/system/embedded/bin/python -m cyclecloud_provider $args 2>>$STDERR_FILE"
|
||||
exit $?
|
||||
fi
|
||||
fi
|
||||
else
|
||||
# you'll need requests==2.5.1 installed.
|
||||
|
|
|
@ -41,7 +41,9 @@ class Cluster:
|
|||
|
||||
def get_buckets(self):
|
||||
buckets = self.node_mgr.get_buckets()
|
||||
self.logger.debug("Buckets %s", buckets)
|
||||
self.logger.debug("Buckets: count=%d", len(buckets))
|
||||
for b in buckets:
|
||||
self.logger.debug(f"{b.nodearray}/{b.vm_size} available={b.available_count} based on {b.limits} bucket_id={b.bucket_id}")
|
||||
return buckets
|
||||
|
||||
def add_nodes_scalelib(self, request, template_id, use_weighted_templates=False, vmTypes={}, dry_run=False):
|
||||
|
@ -50,7 +52,7 @@ class Cluster:
|
|||
if use_weighted_templates:
|
||||
self.logger.debug("Using weighted templates")
|
||||
self.node_mgr.add_default_resource(selection={}, resource_name="template_id", default_value="node.nodearray")
|
||||
self.logger.debug("vmTypes %s", vmTypes.items())
|
||||
self.logger.debug("Current weightings: %s", ", ".join([f"{x}={y}" for x,y in vmTypes.items()]))
|
||||
for vm_size, weight in vmTypes.items():
|
||||
self.node_mgr.add_default_resource(selection={"node.vm_size": vm_size},
|
||||
resource_name="weight",
|
||||
|
@ -74,7 +76,7 @@ class Cluster:
|
|||
print("Allocation result:")
|
||||
print (key, len(value))
|
||||
return True
|
||||
if not dry_run and result:
|
||||
if result:
|
||||
request_id_start = f"{request['requestId']}-start"
|
||||
request_id_create = f"{request['requestId']}-create"
|
||||
return self.node_mgr.bootup(request_id_start=request_id_start, request_id_create=request_id_create)
|
||||
|
|
|
@ -67,7 +67,7 @@ class CycleCloudProvider:
|
|||
# BUGFIX: exiting non-zero code will make symphony retry.
|
||||
def templates(self):
|
||||
try:
|
||||
pro_conf_dir=os.getenv('PRO_CONF_DIR', os.getcwd())
|
||||
pro_conf_dir = os.getenv('PRO_CONF_DIR', os.getcwd())
|
||||
conf_path = os.path.join(pro_conf_dir, "conf", "azureccprov_templates.json")
|
||||
with open(conf_path, 'r') as json_file:
|
||||
templates_json = json.load(json_file)
|
||||
|
@ -75,7 +75,7 @@ class CycleCloudProvider:
|
|||
return self.json_writer(templates_json, debug_output=False)
|
||||
except:
|
||||
logger.warning("Exiting Non-zero so that symphony will retry")
|
||||
logger.exception("Could not get templates_json")
|
||||
logger.exception(f"Could not get azureccprov_templates.json at {conf_path}")
|
||||
sys.exit(1)
|
||||
|
||||
def generate_sample_template(self):
|
||||
|
@ -84,13 +84,13 @@ class CycleCloudProvider:
|
|||
for bucket in buckets:
|
||||
autoscale_enabled = bucket.software_configuration.get("autoscaling", {}).get("enabled", False)
|
||||
if not autoscale_enabled:
|
||||
print("Autoscaling is disabled in CC for nodearray %s" % bucket.nodearray)
|
||||
print("Autoscaling is disabled in CC for nodearray %s" % bucket.nodearray, file=sys.stderr)
|
||||
continue
|
||||
if template_dict.get(bucket.nodearray) is None:
|
||||
template_dict[bucket.nodearray] = {}
|
||||
template_dict[bucket.nodearray]["templateId"] = bucket.nodearray
|
||||
template_dict[bucket.nodearray]["attributes"] = {}
|
||||
# Assuming slot size with ncpus=1 and nram=4096
|
||||
# Assuming slot size with ncpus = 1 and nram = 4096
|
||||
template_dict[bucket.nodearray]["attributes"]["type"] = ["String", "X86_64"]
|
||||
template_dict[bucket.nodearray]["attributes"]["nram"] = ["Numeric", "4096"]
|
||||
template_dict[bucket.nodearray]["attributes"]["ncpus"] = ["Numeric", "1"]
|
||||
|
@ -139,12 +139,12 @@ class CycleCloudProvider:
|
|||
use_weighted_templates = False
|
||||
vmTypes = {}
|
||||
if self.config.get("symphony.enable_weighted_templates", True):
|
||||
pro_conf_dir=os.getenv('PRO_CONF_DIR', os.getcwd())
|
||||
pro_conf_dir = os.getenv('PRO_CONF_DIR', os.getcwd())
|
||||
conf_path = os.path.join(pro_conf_dir, "conf", "azureccprov_templates.json")
|
||||
with open(conf_path, 'r') as json_file:
|
||||
templates_json = json.load(json_file)
|
||||
vmTypes = self.weighted_template.parse_weighted_template(input_json, templates_json["templates"])
|
||||
logger.debug("vmTypes %s", vmTypes)
|
||||
logger.debug("Current weightings: %s", ", ".join([f"{x}={y}" for x,y in vmTypes.items()]))
|
||||
use_weighted_templates = True
|
||||
request_set = { 'count': input_json["template"]["machineCount"],
|
||||
'definition':{'templateId':input_json["template"]["templateId"]}}
|
||||
|
@ -934,17 +934,18 @@ class CycleCloudProvider:
|
|||
def validate_template(self):
|
||||
cluster_status = self.cluster.status()
|
||||
nodearrays = cluster_status["nodearrays"]
|
||||
pro_conf_dir=os.getenv('PRO_CONF_DIR', os.getcwd())
|
||||
pro_conf_dir = os.getenv('PRO_CONF_DIR', os.getcwd())
|
||||
conf_path = os.path.join(pro_conf_dir, "conf", "azureccprov_templates.json")
|
||||
with open(conf_path, 'r') as json_file:
|
||||
templates_json = json.load(json_file)
|
||||
if "templates" not in templates_json:
|
||||
print("List templates not present in azureccprov_templates.json")
|
||||
print("List templates not present in azureccprov_templates.json", file=sys.stderr)
|
||||
return False
|
||||
templates_json = templates_json["templates"]
|
||||
if len(templates_json) == 0:
|
||||
print("Length of list templates is 0")
|
||||
print("Length of list templates is 0", file=sys.stderr)
|
||||
return False
|
||||
template_name_found = False
|
||||
for template in templates_json:
|
||||
for nodearray_root in nodearrays:
|
||||
template_name_found = False
|
||||
|
@ -952,21 +953,21 @@ class CycleCloudProvider:
|
|||
template_name_found = True
|
||||
bucket_machineType = [bucket.get("definition")["machineType"].strip() for bucket in nodearray_root.get("buckets")]
|
||||
if "vmTypes" not in template:
|
||||
print("Template validation failed")
|
||||
print("vmTypes not present in template %s" % template["templateId"])
|
||||
print("Template validation failed", file=sys.stderr)
|
||||
print("vmTypes not present in template %s" % template["templateId"], file=sys.stderr)
|
||||
return False
|
||||
vmTypes = [key.strip() for key in template["vmTypes"].keys()]
|
||||
bucket_machineType = set(bucket_machineType)
|
||||
vmTypes = set(vmTypes)
|
||||
diff = bucket_machineType.symmetric_difference(vmTypes)
|
||||
if len(diff) > 0:
|
||||
print("Template validation failed")
|
||||
print(f"Difference in vmTypes and buckets {diff} for template {template['templateId']}")
|
||||
print("Template validation failed", file=sys.stderr)
|
||||
print(f"Difference in vmTypes and buckets {diff} for template {template['templateId']}", file=sys.stderr)
|
||||
return False
|
||||
break
|
||||
if not template_name_found:
|
||||
print("Template validation failed")
|
||||
print("Template %s does not exist in nodearray" % template["templateId"])
|
||||
print("Template validation failed", file=sys.stderr)
|
||||
print("Template %s does not exist in nodearray" % template["templateId"], file=sys.stderr)
|
||||
return False
|
||||
print("Template validation passed")
|
||||
return True
|
||||
|
@ -986,6 +987,7 @@ def true_gmt_clock(): # pragma: no cover
|
|||
|
||||
|
||||
def main(argv=sys.argv, json_writer=simple_json_writer): # pragma: no cover
|
||||
operation_id = int(time.time())
|
||||
try:
|
||||
|
||||
global logger
|
||||
|
@ -1011,7 +1013,7 @@ def main(argv=sys.argv, json_writer=simple_json_writer): # pragma: no cover
|
|||
|
||||
input_json = util.load_json(input_json_path)
|
||||
|
||||
operation_id = int(time.time())
|
||||
|
||||
logger.info("BEGIN %s %s - %s %s", operation_id, cmd, ignore, input_json_path)
|
||||
logger.debug("Input: %s", json.dumps(input_json))
|
||||
|
||||
|
|
|
@ -134,7 +134,7 @@ class JsonStore:
|
|||
return True
|
||||
iter = 0
|
||||
while iter < 18:
|
||||
iter+=1
|
||||
iter += 1
|
||||
try:
|
||||
self.lockfp = open(self.lockpath, 'w')
|
||||
if os.name == 'nt':
|
||||
|
|
|
@ -7,7 +7,7 @@ status_updated_time = now - datetime.timedelta(seconds=seconds)
|
|||
expiration_time = now + datetime.timedelta(hours=1)
|
||||
|
||||
def format_time(timestamp):
|
||||
return datetime.datetime.strftime(timestamp, "%Y-%m-%d %H:%M:%S.%f-06:00")
|
||||
return datetime.datetime.strftime(timestamp, "%Y-%m-%d %H:%M:%S.%f-05:00")
|
||||
|
||||
account_name = sys.argv[2]
|
||||
region_name = sys.argv[3]
|
||||
|
@ -22,3 +22,15 @@ HasCapacity = {seconds <= 0}
|
|||
Provider = "azure"
|
||||
Name = "region/{account_name}/{region_name}/{machine_name}"
|
||||
MachineType = "{machine_name}" ''')
|
||||
|
||||
file = open('/tmp/test.dat', 'w')
|
||||
file.write(f'''AdType = "Cloud.Capacity"
|
||||
ExpirationTime = `{format_time(expiration_time)}`
|
||||
AccountName = "{account_name}"
|
||||
StatusUpdatedTime = `{format_time(status_updated_time)}`
|
||||
Region = "{region_name}"
|
||||
HasCapacity = {seconds <= 0}
|
||||
Provider = "azure"
|
||||
Name = "region/{account_name}/{region_name}/{machine_name}"
|
||||
MachineType = "{machine_name}"''')
|
||||
file.close()
|
||||
|
|
|
@ -1,29 +1,29 @@
|
|||
#!/bin/bash
|
||||
if [[ ! -d $EGO_TOP ]] ; then
|
||||
EGO_TOP="/opt/ibm/spectrumcomputing"
|
||||
export EGO_TOP="/opt/ibm/spectrumcomputing"
|
||||
mkdir -p $EGO_TOP
|
||||
echo $EGO_TOP
|
||||
fi
|
||||
# In Symphony 7.2 and earlier: HF_TOP=$EGO_TOP/eservice/hostfactory
|
||||
if [[ ! -d $HF_TOP ]] ; then
|
||||
HF_TOP="$EGO_TOP/hostfactory"
|
||||
export HF_TOP="$EGO_TOP/hostfactory"
|
||||
mkdir -p $HF_TOP
|
||||
fi
|
||||
|
||||
if [[ -z $HF_CONFDIR ]] ; then
|
||||
HF_CONFDIR="$EGO_TOP/hostfactory/conf"
|
||||
export HF_CONFDIR="$EGO_TOP/hostfactory/conf"
|
||||
fi
|
||||
|
||||
if [[ -z $HF_WORKDIR ]] ; then
|
||||
HF_WORKDIR="$EGO_TOP/hostfactory/work"
|
||||
export HF_WORKDIR="$EGO_TOP/hostfactory/work"
|
||||
fi
|
||||
|
||||
if [[ -z $HF_LOGDIR ]] ; then
|
||||
HF_LOGDIR="$EGO_TOP/hostfactory/log"
|
||||
export HF_LOGDIR="$EGO_TOP/hostfactory/log"
|
||||
fi
|
||||
|
||||
if [[ -z $HF_VERSION ]] ; then
|
||||
HF_VERSION="1.2"
|
||||
export HF_VERSION="1.1"
|
||||
fi
|
||||
|
||||
pluginSrcPath=$HF_TOP/$HF_VERSION/providerplugins/azurecc
|
||||
|
@ -59,12 +59,12 @@ function Generate-Provider-Config {
|
|||
\"log_level\": \"debug\",
|
||||
\"cyclecloud\": {
|
||||
\"cluster\": {
|
||||
\"name\": \"$(jetpack config cyclecloud.cluster.name)\"
|
||||
\"name\": \"$cluster\"
|
||||
},
|
||||
\"config\": {
|
||||
\"username\": \"$(jetpack config cyclecloud.config.username)\",
|
||||
\"password\": \"$(jetpack config cyclecloud.config.password)\",
|
||||
\"web_server\": \"$(jetpack config cyclecloud.config.web_server)\"
|
||||
\"username\": \"$username\",
|
||||
\"password\": \"$password\",
|
||||
\"web_server\": \"$web_server\"
|
||||
}
|
||||
}
|
||||
}"
|
||||
|
@ -74,28 +74,6 @@ function Generate-Provider-Config {
|
|||
fi
|
||||
echo "$azureccprov_config_json" > "$azureccProviderConfPath/azureccprov_config.json"
|
||||
|
||||
azureccprov_template_json='{"message" : "Get available templates success.",
|
||||
"templates" : [
|
||||
{
|
||||
"templateId" : "executestandardf2sv2",
|
||||
"maxNumber" : 10,
|
||||
"attributes" : {
|
||||
"nram" : [ "Numeric", "1024" ],
|
||||
"ncpus" : [ "Numeric", "1" ],
|
||||
"ncores" : [ "Numeric", "1" ],
|
||||
"type" : [ "String", "X86_64" ],
|
||||
"nodearray" : [ "String", "execute" ],
|
||||
"machinetypefull" : ["String", "Standard_F2s_v2"]
|
||||
}
|
||||
} ]
|
||||
}'
|
||||
if [ ! -e $azureccProviderConfPath ]
|
||||
then
|
||||
mkdir -p $azureccProviderConfPath
|
||||
fi
|
||||
echo "$azureccprov_template_json" > "$azureccProviderConfPath/azureccprov_templates.json"
|
||||
#as this will be updated by HF we need to change user to egoadmin
|
||||
chown egoadmin:egoadmin $azureccProviderConfPath/azureccprov_templates.json
|
||||
|
||||
}
|
||||
|
||||
|
@ -159,14 +137,20 @@ function Update-Requestors-Config
|
|||
}"
|
||||
echo "$hostRequestorsJson" > "$requestorConfPath/hostRequestors.json"
|
||||
|
||||
}
|
||||
|
||||
function UpdateSymAReturnPolicy
|
||||
{
|
||||
jq '.host_return_policy = "immediate"' "$requestorConfPath/symAinst/symAinstreq_config.json" > temp.json && mv temp.json "$requestorConfPath/symAinst/symAinstreq_config.json"
|
||||
|
||||
}
|
||||
function Install-Python-Packages
|
||||
{
|
||||
echo "Installing python packages..."
|
||||
PKG_NAME=$( jetpack config symphony.pkg_plugin )
|
||||
cd /tmp
|
||||
pluginSrcPath=$HF_TOP/$HF_VERSION/providerplugins/azurecc
|
||||
mkdir -p $pluginSrcPath
|
||||
mkdir -p $pluginSrcPath/scripts
|
||||
cp -r /tmp/hostfactory/host_provider/* $pluginSrcPath/scripts
|
||||
VENV=$pluginSrcPath/venv
|
||||
# remove jetpack python from PATH so default python3 is used.
|
||||
export PATH=$(echo $PATH | sed -e 's/\/opt\/cycle\/jetpack\/system\/embedded\/bin://g' | sed -e 's/:\/opt\/cycle\/jetpack\/system\/embedded\/bin//g')
|
||||
|
@ -182,7 +166,6 @@ function Install-Python-Packages
|
|||
python3 -m virtualenv $VENV
|
||||
source $VENV/bin/activate
|
||||
pip install --upgrade packages/*
|
||||
|
||||
if [ -f $PKG_NAME ]; then
|
||||
rm -f $PKG_NAME
|
||||
rm -rf packages
|
||||
|
@ -190,16 +173,51 @@ function Install-Python-Packages
|
|||
fi
|
||||
echo "Python plugin virtualenv created at $VENV"
|
||||
}
|
||||
#check for command line argument for generate_config
|
||||
if [ $# -eq 1 ]; then
|
||||
|
||||
function Generate-Template
|
||||
{
|
||||
cd $pluginSrcPath/scripts
|
||||
echo "In scripts dir at $pluginSrcPath/scripts"
|
||||
output=$(./generateWeightedTemplates.sh)
|
||||
echo $output
|
||||
echo $output > $azureccProviderConfPath/azureccprov_templates.json
|
||||
# as this will be updated by HF we need to change user to egoadmin
|
||||
chown egoadmin:egoadmin $azureccProviderConfPath/azureccprov_templates.json
|
||||
}
|
||||
# check for command line argument for generate_config
|
||||
if [ $# -gt 1 ]; then
|
||||
if [ $1 == "generate_config" ]; then
|
||||
echo "Parsing parameters for generating config files"
|
||||
if [ $2 == "--cluster" ]; then
|
||||
cluster=$3
|
||||
else
|
||||
echo "Cluster name is required"
|
||||
fi
|
||||
if [ $4 == "--username" ]; then
|
||||
username=$5
|
||||
else
|
||||
echo "Username is required"
|
||||
fi
|
||||
if [ $6 == "--password" ]; then
|
||||
password=$7
|
||||
else
|
||||
echo "Password is required"
|
||||
fi
|
||||
if [ $8 == "--web_server" ]; then
|
||||
web_server=$9
|
||||
else
|
||||
echo "Web server is required"
|
||||
fi
|
||||
Generate-Provider-Config
|
||||
Generate-Provider-Plugins-Config
|
||||
Update-Requestors-Config
|
||||
UpdateSymAReturnPolicy
|
||||
Install-Python-Packages
|
||||
Generate-Template
|
||||
else
|
||||
echo "Argument $1 is invalid"
|
||||
fi
|
||||
|
||||
else
|
||||
Install-Python-Packages
|
||||
fi
|
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 46 KiB |
10
project.ini
10
project.ini
|
@ -3,11 +3,11 @@ version = 3.0.0
|
|||
name = symphony
|
||||
type = scheduler
|
||||
|
||||
[blobs symeval_7.3.2.0]
|
||||
Files = symphony/sym.entitlement.keys.eval, symphony/symeval-7.3.2.0_x86_64.bin, symphony/symeval-7.3.2.0.exe, symphony/cyclecloud-symphony-pkg-3.0.0.zip
|
||||
#[blobs symeval_7.3.2.0]
|
||||
#Files = symphony/sym.entitlement.keys.eval, symphony/symeval-7.3.2.0_x86_64.bin, symphony/symeval-7.3.2.0.exe, symphony/cyclecloud-symphony-pkg-3.0.0.zip
|
||||
|
||||
# [blobs sym_7.3.1.0]
|
||||
# Files = symphony/sym_adv_entitlement.dat, symphony/sym-7.3.1.0_x86_64.bin, symphony/cyclecloud-symphony-pkg-2.0.0.zip
|
||||
[blobs sym_7.3.1.0]
|
||||
Files = symphony/sym_adv_entitlement.dat, symphony/sym-7.3.1.0_x86_64.bin, symphony/cyclecloud-symphony-pkg-3.0.0.zip
|
||||
|
||||
# [blobs sym_7.3.0.0]
|
||||
# Files = symphony/sym_adv_entitlement.dat, symphony/sym-7.3.0.0_x86_64.bin
|
||||
|
@ -22,4 +22,4 @@ Files = symphony/sym.entitlement.keys.eval, symphony/symeval-7.3.2.0_x86_64.bin,
|
|||
run_list = recipe[symphony::default]
|
||||
|
||||
[spec master]
|
||||
run_list = recipe[symphony::default], recipe[symphony::autostart], recipe[symphony::autostop], recipe[symphony::hostfactory]
|
||||
run_list = recipe[symphony::default], recipe[symphony::hostfactory]
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
default['symphony']['version'] = "7.3.2.0"
|
||||
default['symphony']['eval'] = true
|
||||
default['symphony']['version'] = "7.3.1.0"
|
||||
default['symphony']['eval'] = false
|
||||
default['symphony']['pkg']['linux'] = "sym-#{node['symphony']['version']}_x86_64.bin"
|
||||
default['symphony']['pkg']['windows'] = "sym-#{node['symphony']['version']}.exe"
|
||||
default['symphony']['pkg_plugin'] = "cyclecloud-symphony-pkg-3.0.0.zip"
|
||||
|
@ -54,7 +54,7 @@ else
|
|||
default['symphony']['hostfactory']['templates_dir'] = 'hostfactory/7.2'
|
||||
end
|
||||
default['symphony']['hostfactory']['confdir'] = "#{node['symphony']['hostfactory']['top']}/conf"
|
||||
default['symphony']['hostfactory']['version'] = "1.2"
|
||||
default['symphony']['hostfactory']['version'] = "1.1"
|
||||
|
||||
# IP or Hostname for REST API URLs
|
||||
default['symphony']['hostfactory']['rest_address'] = '127.0.0.1'
|
||||
|
|
|
@ -139,7 +139,7 @@ bash 'Installing HostFactory Package...' do
|
|||
code <<-EOH
|
||||
cd /tmp/hostfactory
|
||||
chmod +x install.sh
|
||||
./install.sh generate_config
|
||||
./install.sh generate_config --cluster #{node['cyclecloud']['cluster']['name']} --username #{node['cyclecloud']['config']['username']} --password #{node['cyclecloud']['config']['password']} --web_server #{node['cyclecloud']['config']['web_server']}
|
||||
EOH
|
||||
user "root"
|
||||
group "root"
|
||||
|
|
|
@ -29,7 +29,11 @@ fi
|
|||
set -e
|
||||
|
||||
|
||||
su - -c "source /etc/profile.d/symphony.sh && yes | egoconfig setpassword -x Admin && egoconfig setentitlement ${SYM_ENTITLEMENT_FILE}" egoadmin
|
||||
# for 7.3.2
|
||||
#su - -c "source /etc/profile.d/symphony.sh && yes | egoconfig setpassword -x Admin && egoconfig setentitlement ${SYM_ENTITLEMENT_FILE}" egoadmin
|
||||
|
||||
#7.3.1
|
||||
su - -c "source /etc/profile.d/symphony.sh && yes | egoconfig setentitlement ${SYM_ENTITLEMENT_FILE}" egoadmin
|
||||
|
||||
# Enable automatic startup after reboot (TODO: might want to move restart to chef so volumes are mounted)
|
||||
egosetrc.sh
|
||||
|
|
|
@ -7,7 +7,7 @@ SOAM_PASSWORD=$( jetpack config symphony.soam.password )
|
|||
|
||||
|
||||
USE_HOSTFACTORY=$( jetpack config symphony.host_factory.enabled )
|
||||
if [ "${USE_HOSTFACTORY,,}" != "true"]; then
|
||||
if [ "${USE_HOSTFACTORY,,}" != "true" ]; then
|
||||
echo "Skipping Host Factory configuration: symphony.host_factory.enabled = ${USE_HOSTFACTORY,,}"
|
||||
exit 0
|
||||
fi
|
||||
|
|
Загрузка…
Ссылка в новой задаче