142 lines
5.4 KiB
Groovy
142 lines
5.4 KiB
Groovy
package com.meesho.utilities
|
|
|
|
def run(String memory_request, String cpu_request, String priority_v2) {
|
|
echo 'Code to select node pool based on environment'
|
|
switch (env.cicd_environment) {
|
|
case 'prd':
|
|
echo 'Code to select node pool based on memory and cpu request in prd'
|
|
def mem_req_part = memory_request
|
|
def cpu_req_part = cpu_request
|
|
def priority = priority_v2
|
|
echo "mem_req_part is ${mem_req_part}"
|
|
echo "cpu_req_part is ${cpu_req_part}"
|
|
if ( mem_req_part.contains('M') ) {
|
|
mem_req = mem_req_part.replaceAll('Mi', '')
|
|
mem_req = mem_req.replaceAll('M', '')
|
|
try {
|
|
mem_req = mem_req.toDouble()
|
|
}
|
|
catch (NumberFormatException e) {
|
|
mem_req = mem_req.toDouble()
|
|
//mem_req = mem_req.toInteger()
|
|
}
|
|
}
|
|
else if ( mem_req_part.contains('G') ) {
|
|
mem_req = mem_req_part.replaceAll('Gi', '')
|
|
mem_req = mem_req.replaceAll('G', '')
|
|
try {
|
|
mem_req = mem_req.toDouble() * 1024
|
|
}
|
|
catch (NumberFormatException e) {
|
|
mem_req = mem_req.toDouble() * 1024
|
|
//mem_req = mem_req.toInteger()
|
|
}
|
|
}
|
|
echo "memory_request is ${memory_request} ${mem_req}"
|
|
|
|
if ( cpu_req_part.contains('m') ) {
|
|
cpu_req = cpu_req_part.replaceAll('m', '')
|
|
try {
|
|
cpu_req = cpu_req.toDouble()
|
|
}
|
|
catch (NumberFormatException e) {
|
|
cpu_req = cpu_req.toDouble()
|
|
//cpu_req = cpu_req.toInteger()
|
|
}
|
|
}
|
|
else {
|
|
try {
|
|
cpu_req = cpu_req_part.toDouble() * 1000
|
|
}
|
|
catch (NumberFormatException e) {
|
|
cpu_req = cpu_req_part.toDouble() * 1000
|
|
//cpu_req = cpu_req.toInteger()
|
|
}
|
|
}
|
|
echo "cpu_request is ${cpu_request} ${cpu_req}"
|
|
|
|
def ratio = (mem_req / cpu_req).toDouble()
|
|
if ( cpu_req > mem_req ) {
|
|
ratio = 2
|
|
}
|
|
//ratio = ratio.toInteger()
|
|
echo "Ratio - ${ratio}"
|
|
if(priority.equalsIgnoreCase('cp1')||priority.equalsIgnoreCase('cp2')||priority.equalsIgnoreCase('cp3')||priority.equalsIgnoreCase('up1')||priority.equalsIgnoreCase('up2')||priority.equalsIgnoreCase('up3')||priority.equalsIgnoreCase('sp1')||priority.equalsIgnoreCase('sp2')||priority.equalsIgnoreCase('sp3')){
|
|
low_priority="lite"
|
|
if ( ratio >= 2.5 ) {
|
|
ratiovalue = "tetra"
|
|
}
|
|
else {
|
|
ratiovalue = "duo"
|
|
}
|
|
if ( cpu_req >=2200 ) {
|
|
nodename = "sumo"
|
|
}
|
|
else{
|
|
nodename= "mega"
|
|
}
|
|
nodeSelectorvalue = "${nodename}${ratiovalue}${low_priority}"
|
|
println nodeSelectorvalue
|
|
break
|
|
}
|
|
else{
|
|
if ( ratio > 5.5 ) {
|
|
ratiovalue = 'octa'
|
|
}
|
|
else if ( ratio >= 2.5 ) {
|
|
ratiovalue = 'tetra'
|
|
}
|
|
else {
|
|
ratiovalue = 'duo'
|
|
}
|
|
|
|
if ( cpu_req >= 2200) {
|
|
nodevalue = 'sumo'
|
|
}
|
|
else if ( cpu_req < 2200 && cpu_req >= 1000) {
|
|
nodevalue = 'mega'
|
|
}
|
|
else {
|
|
nodevalue = 'compact'
|
|
}
|
|
|
|
switch ( env.BU?.toLowerCase() ) {
|
|
case 'supply':
|
|
if (nodevalue == 'sumo' && (ratiovalue == 'hexa' || ratiovalue == 'octa')){
|
|
ratiovalue = 'tetra'
|
|
}
|
|
else if (nodevalue == 'mega' && (ratiovalue == 'quad' || ratiovalue == 'octa')){
|
|
ratiovalue = 'tetra'
|
|
}
|
|
else if (nodevalue == 'compact' && ratiovalue == 'trio'){
|
|
ratiovalue = 'tetra'
|
|
}
|
|
break
|
|
case 'demand':
|
|
if (nodevalue == 'mega' && ratiovalue == 'quad'){
|
|
ratiovalue = 'tetra'
|
|
}
|
|
else if (nodevalue == 'compact' && (ratiovalue == 'octa' || ratiovalue == 'trio')){
|
|
ratiovalue = 'tetra'
|
|
}
|
|
break
|
|
}
|
|
|
|
nodeSelectorvalue = "${nodevalue}${ratiovalue}"
|
|
break
|
|
|
|
}
|
|
case 'int':
|
|
echo 'Shared node pool for int/pre-prod'
|
|
nodeSelectorvalue = "preprod-cost-optimized"
|
|
break
|
|
case ['dev', 'ftr', 'stg']:
|
|
echo 'Shared node pool for dev and ftr'
|
|
nodeSelectorvalue = "${env.BU}-shared"
|
|
break
|
|
default:
|
|
log.error('Unable to fetch environment')
|
|
}
|
|
return nodeSelectorvalue
|
|
}
|