adding yamo
parent
92244742af
commit
5458cf8183
|
|
@ -0,0 +1,4 @@
|
||||||
|
test_projects
|
||||||
|
Test
|
||||||
|
.env
|
||||||
|
__pycache__
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
// Use IntelliSense to learn about possible attributes.
|
||||||
|
// Hover to view descriptions of existing attributes.
|
||||||
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Python: Aktuelle Datei",
|
||||||
|
"type": "python",
|
||||||
|
"request": "launch",
|
||||||
|
"program": "${file}",
|
||||||
|
"console": "integratedTerminal",
|
||||||
|
"args": ["-p","projects"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Python: Aktuelle Datei NTTDATA",
|
||||||
|
"type": "python",
|
||||||
|
"request": "launch",
|
||||||
|
"program": "${file}",
|
||||||
|
"console": "integratedTerminal",
|
||||||
|
"args": ["-i","Test/nttdata","-p","CD_Test", "-r", "container-monitoring-rule", "-e","sadsad"]
|
||||||
|
}
|
||||||
|
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,63 @@
|
||||||
|
class Options:
|
||||||
|
|
||||||
|
__instance = None
|
||||||
|
__project = None
|
||||||
|
__pathToProjects=None
|
||||||
|
__env=None
|
||||||
|
__restCall=None
|
||||||
|
__loglevel="INFO"
|
||||||
|
|
||||||
|
@property
|
||||||
|
def project(self):
|
||||||
|
return self.__project
|
||||||
|
|
||||||
|
@property
|
||||||
|
def pathToProjects(self):
|
||||||
|
return self.__pathToProjects
|
||||||
|
|
||||||
|
@property
|
||||||
|
def env(self):
|
||||||
|
return self.__env
|
||||||
|
|
||||||
|
@property
|
||||||
|
def restCall(self):
|
||||||
|
return self.__restCall
|
||||||
|
|
||||||
|
@property
|
||||||
|
def loglevel(self):
|
||||||
|
return self.__loglevel
|
||||||
|
|
||||||
|
@project.setter
|
||||||
|
def project(self, project):
|
||||||
|
self.__project=project
|
||||||
|
|
||||||
|
@pathToProjects.setter
|
||||||
|
def pathToProjects(self, pathToProjects):
|
||||||
|
self.__pathToProjects=pathToProjects
|
||||||
|
|
||||||
|
@env.setter
|
||||||
|
def env(self, env):
|
||||||
|
self.__env=env
|
||||||
|
|
||||||
|
@restCall.setter
|
||||||
|
def restCall(self, restCall):
|
||||||
|
self.__restCall=restCall
|
||||||
|
|
||||||
|
@loglevel.setter
|
||||||
|
def loglevel(self, loglevel):
|
||||||
|
self.__loglevel=loglevel
|
||||||
|
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def getInstance():
|
||||||
|
""" Static access method. """
|
||||||
|
if Options.__instance == None:
|
||||||
|
Options()
|
||||||
|
return Options.__instance
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
""" Virtually private constructor. """
|
||||||
|
if Options.__instance != None:
|
||||||
|
raise Exception("This class is a singleton!")
|
||||||
|
else:
|
||||||
|
Options.__instance = self
|
||||||
|
|
@ -0,0 +1,62 @@
|
||||||
|
from rest.RestCall import RestCall
|
||||||
|
import time
|
||||||
|
|
||||||
|
from yaspin import yaspin
|
||||||
|
from Report.ReportMessage import ReportMessage, MsgStatus
|
||||||
|
import coloredlogs, logging
|
||||||
|
from Options import Options
|
||||||
|
|
||||||
|
class Project:
|
||||||
|
|
||||||
|
__messages__=[]
|
||||||
|
__hasErrors__=False
|
||||||
|
|
||||||
|
logger = logging.getLogger("yamo")
|
||||||
|
|
||||||
|
def getMessages(self):
|
||||||
|
return __messages__
|
||||||
|
|
||||||
|
def hasErrors(self):
|
||||||
|
return __hasErrors__
|
||||||
|
|
||||||
|
def execByRestName(self,restName):
|
||||||
|
self.logger.debug("Start executing restCall by name "+ restName)
|
||||||
|
restCall = [x for x in self.restCallList if x.name == restName]
|
||||||
|
if len(restCall) > 0:
|
||||||
|
self.exec(restCall[0])
|
||||||
|
else:
|
||||||
|
self.logger.warning("Could not find restcall "+ restName)
|
||||||
|
|
||||||
|
self.logger.debug("Finished executing restCall by name "+ restName)
|
||||||
|
|
||||||
|
def exec(self, restCall):
|
||||||
|
try:
|
||||||
|
#sp.text = sp.text+ " > "+restCall.name
|
||||||
|
#time.sleep(5)
|
||||||
|
|
||||||
|
restCall.exec()
|
||||||
|
#self.logger.info("Project: "+self.name+" Call: "+restCall.name+" [SUCCESS]")
|
||||||
|
|
||||||
|
self.__messages__.append(ReportMessage(MsgStatus.SUCCESS, self.name, restCall.name, None, str(e)))
|
||||||
|
except Exception as e:
|
||||||
|
self.__hasErrors__= True
|
||||||
|
#self.logger.error("Project ["+self.name+"] Call: ["+restCall.name+"] --> Failed")
|
||||||
|
#self.logger.error("Project: "+self.name+" Call: "+restCall.name+" [Failed]")
|
||||||
|
self.__messages__.append(ReportMessage(MsgStatus.FAILED, self.name, restCall.name, None, str(e))) #['errors'].append(str(e))
|
||||||
|
|
||||||
|
def execRestCalls(self):
|
||||||
|
if Options.getInstance().restCall:
|
||||||
|
self.execByRestName(Options.getInstance().restCall)
|
||||||
|
else:
|
||||||
|
self.execAll()
|
||||||
|
|
||||||
|
def execAll(self):
|
||||||
|
self.logger.debug("Start executing all restcalls..")
|
||||||
|
for restCall in self.restCallList:
|
||||||
|
self.exec(restCall)
|
||||||
|
self.logger.debug("Finished executing all restcalls..")
|
||||||
|
|
||||||
|
def __init__(self, name, restCallList):
|
||||||
|
self.name=name
|
||||||
|
self.restCallList=restCallList
|
||||||
|
#self.executionConfig=executionConfig
|
||||||
|
|
@ -0,0 +1,102 @@
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import os.path
|
||||||
|
import json
|
||||||
|
import yaml
|
||||||
|
from os import path
|
||||||
|
from typing import List
|
||||||
|
from Project import Project
|
||||||
|
from context.Context import Context
|
||||||
|
import coloredlogs, logging
|
||||||
|
from yaspin import yaspin
|
||||||
|
from Options import Options
|
||||||
|
|
||||||
|
|
||||||
|
class ProjectList:
|
||||||
|
|
||||||
|
__projectList=[]
|
||||||
|
|
||||||
|
logger = logging.getLogger("yamo")
|
||||||
|
|
||||||
|
#def execProject(self, projectName):
|
||||||
|
|
||||||
|
#def printReport(self):
|
||||||
|
# for i in self.__projectList:
|
||||||
|
# print(i.getErrors())
|
||||||
|
def getProjectList(self):
|
||||||
|
return self.__projectList
|
||||||
|
|
||||||
|
def execProject(self, projectName):
|
||||||
|
self.logger.info("Start Processing "+ projectName)
|
||||||
|
project = [x for x in self.__projectList if x.name == projectName]
|
||||||
|
|
||||||
|
if len(project) > 0:
|
||||||
|
project[0].execRestCalls()
|
||||||
|
else:
|
||||||
|
self.logger.warning("Could not find project "+projectName)
|
||||||
|
|
||||||
|
self.logger.info("End Processing "+ projectName)
|
||||||
|
|
||||||
|
def execAll(self):
|
||||||
|
for p in self.__projectList:
|
||||||
|
|
||||||
|
#with yaspin(text=p.name, color="yellow", side="right") as sp:
|
||||||
|
self.logger.info("== Start Projet "+ p.name+" ==")
|
||||||
|
p.execRestCalls()
|
||||||
|
self.logger.info("== Finished Projet "+ p.name+" ==")
|
||||||
|
#success = True if p.hasErrors else False
|
||||||
|
#sp.text = p.name
|
||||||
|
#if success:
|
||||||
|
# sp.ok("[SUCCESS] ")
|
||||||
|
#else:
|
||||||
|
# sp.fail("[FAILED]")
|
||||||
|
|
||||||
|
#if not success
|
||||||
|
|
||||||
|
|
||||||
|
self.logger.debug("Finished Processing ProjectList")
|
||||||
|
|
||||||
|
|
||||||
|
def exec(self):
|
||||||
|
|
||||||
|
self.logger.debug("Start Processing ProjectList")
|
||||||
|
|
||||||
|
if Options.getInstance().project:
|
||||||
|
self.execProject(Options.getInstance().project)
|
||||||
|
else:
|
||||||
|
self.execAll()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def __buildProjectList(self, projects_root_path):
|
||||||
|
context = Context.getInstance()
|
||||||
|
""" READ THE PROJECT PATH """
|
||||||
|
project_dirs: List[str] = os.listdir(projects_root_path)
|
||||||
|
|
||||||
|
for project in project_dirs:
|
||||||
|
|
||||||
|
if path.isdir(projects_root_path+"/"+project):
|
||||||
|
restCalls = []
|
||||||
|
rest_calls: List[str] = os.listdir(projects_root_path+"/"+project)
|
||||||
|
|
||||||
|
if len(rest_calls) == 0:
|
||||||
|
self.logger.warning("Project: " + project+ " has no configuration")
|
||||||
|
|
||||||
|
for restPath in rest_calls:
|
||||||
|
#execConfig=self.readExecutionConfig(projects_root_path+"/"+project+"/"+restPath+"/"+restPath+".yaml")
|
||||||
|
restC=context.restFactory.getRest(restPath, projects_root_path+"/"+project)
|
||||||
|
|
||||||
|
if restC is None:
|
||||||
|
self.logger.warning("Project: " + project+ " - RestPath: "+restPath+ " is unknown or missing missing "+ restPath+".yaml file, will be ignored")
|
||||||
|
|
||||||
|
if restC:
|
||||||
|
restCalls.append(restC)
|
||||||
|
|
||||||
|
if len(restCalls) > 0:
|
||||||
|
self.__projectList.append(Project(project,restCalls))
|
||||||
|
|
||||||
|
def __init__(self,projects_root_path):
|
||||||
|
self.__buildProjectList(projects_root_path)
|
||||||
|
#if len(self.__projectList) < 1:
|
||||||
|
# print("WARNING: no project folders found in: ", projects_root_path)
|
||||||
|
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
from abc import ABC, abstractmethod
|
||||||
|
|
||||||
|
class AbstractPrinter(ABC):
|
||||||
|
|
||||||
|
def setProjectList(self,projectList):
|
||||||
|
self.__projectList = projectList
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def _print(self):
|
||||||
|
pass
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
from Report.AbstractPrinter import AbstractPrinter
|
||||||
|
|
||||||
|
class ConsolePrinter(AbstractPrinter):
|
||||||
|
#def test(self):
|
||||||
|
# pass
|
||||||
|
def _print(self):
|
||||||
|
pass
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
from enum import Enum
|
||||||
|
|
||||||
|
class MsgStatus(Enum):
|
||||||
|
SUCCESS = 1
|
||||||
|
FAILED = 2
|
||||||
|
|
||||||
|
class ReportMessage:
|
||||||
|
|
||||||
|
def __init__(self, type, projectName, restCall, environment, msg):
|
||||||
|
self.__type=type
|
||||||
|
self.__prjectName=projectName
|
||||||
|
self.__restCall=restCall
|
||||||
|
self.__environment=environment
|
||||||
|
self.__msg=msg
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
class ReportPrinter:
|
||||||
|
|
||||||
|
__reportPrinters=[]
|
||||||
|
|
||||||
|
def print(self):
|
||||||
|
for r in self.__reportPrinters:
|
||||||
|
r._print()
|
||||||
|
|
||||||
|
def append(self, reportPrinter):
|
||||||
|
reportPrinter.setProjectList(self.__projectList)
|
||||||
|
self.__reportPrinters.append(reportPrinter)
|
||||||
|
|
||||||
|
def __init__(self, projectList):
|
||||||
|
self.__projectList=projectList
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Help command
|
||||||
|
if [ "$1" == "-h" ]; then
|
||||||
|
echo "Usage: `basename $0` component-name "
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "projects/CD_$1/" ]; then
|
||||||
|
echo "$1 project folder doesn't exist, creating one..."
|
||||||
|
mkdir projects/CD_$1
|
||||||
|
else
|
||||||
|
echo "CD_$1 project folder already exists"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
declare -a config_arr=(
|
||||||
|
"container-monitoring-rule"
|
||||||
|
#"anotherapiendpoint"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
for i in "${config_arr[@]}"
|
||||||
|
do
|
||||||
|
|
||||||
|
if [ ! -d "projects/CD_$1/$i" ]; then
|
||||||
|
echo "--> Creating [$i]"
|
||||||
|
cp -R templates/project/$i projects/CD_$1/
|
||||||
|
if [ -f "projects/CD_$1/$i/$i.yaml" ]; then
|
||||||
|
sed -i "s/#project#/$1/g" projects/CD_$1/$i/$i.yaml
|
||||||
|
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "[$i] already exist, no changes applied"
|
||||||
|
fi
|
||||||
|
|
||||||
|
done
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
onboard(){
|
||||||
|
#read -p "Press enter to continue"
|
||||||
|
./YAMO_onboard.sh "$i"
|
||||||
|
}
|
||||||
|
|
||||||
|
readarray -t apps < "templates/$1.txt"
|
||||||
|
for i in "${apps[@]}"
|
||||||
|
do
|
||||||
|
# To do - add function [ onboard(), replace-folder(), git-add(), run-monaco() ]
|
||||||
|
echo $i
|
||||||
|
onboard
|
||||||
|
#read -p "Press enter to continue"
|
||||||
|
done
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
import os
|
||||||
|
import os.path
|
||||||
|
import json
|
||||||
|
import yaml
|
||||||
|
from os import path
|
||||||
|
from typing import List
|
||||||
|
from Project import Project
|
||||||
|
|
||||||
|
class Context:
|
||||||
|
__instance = None
|
||||||
|
|
||||||
|
__projectList=[]
|
||||||
|
__envorinments={}
|
||||||
|
|
||||||
|
|
||||||
|
def envExists(self, env):
|
||||||
|
if env in self.__environments:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
def getAllEnvironments(self):
|
||||||
|
return self.__environments
|
||||||
|
|
||||||
|
def getEnvironment(self, env):
|
||||||
|
if self.envExists(env):
|
||||||
|
return self.__environments[env]
|
||||||
|
else:
|
||||||
|
raise ValueError('Environment not found: '+ env)
|
||||||
|
|
||||||
|
def __buildEnvorinment(self, environmentReader):
|
||||||
|
self.__environments = environmentReader.read()
|
||||||
|
|
||||||
|
def build(self, restFactory, environmentReader):
|
||||||
|
# self.__buildProjectList(projects_root_path, restFactory)
|
||||||
|
self.restFactory=restFactory
|
||||||
|
self.__buildEnvorinment(environmentReader)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def getInstance():
|
||||||
|
""" Static access method. """
|
||||||
|
if Context.__instance == None:
|
||||||
|
Context()
|
||||||
|
return Context.__instance
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
""" Virtually private constructor. """
|
||||||
|
if Context.__instance != None:
|
||||||
|
raise Exception("This class is a singleton!")
|
||||||
|
else:
|
||||||
|
Context.__instance = self
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
from abc import ABC, abstractmethod
|
||||||
|
from environment.Environment import Environment
|
||||||
|
|
||||||
|
class AbstractEnvReader(ABC):
|
||||||
|
|
||||||
|
__environmentList={}
|
||||||
|
|
||||||
|
@property
|
||||||
|
def environments(self):
|
||||||
|
return self.__environmentList
|
||||||
|
|
||||||
|
def printEnvironment(self):
|
||||||
|
print(self.__environmentList)
|
||||||
|
|
||||||
|
def read(self) :
|
||||||
|
self._readEvnironment()
|
||||||
|
return self.__environmentList
|
||||||
|
|
||||||
|
def _addEnvironment(self, env):
|
||||||
|
self.__environmentList[env.name]=env
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def _readEvnironment(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def __init__(self, tokenStore):
|
||||||
|
self.tokenStore=tokenStore
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
class Environment:
|
||||||
|
|
||||||
|
@property
|
||||||
|
def name(self):
|
||||||
|
return self.__name
|
||||||
|
|
||||||
|
@property
|
||||||
|
def env_url(self):
|
||||||
|
return self.__env_url
|
||||||
|
|
||||||
|
@property
|
||||||
|
def token(self):
|
||||||
|
return self.tokenStore.get(self.__token)
|
||||||
|
|
||||||
|
@name.setter
|
||||||
|
def name(self, name):
|
||||||
|
self.__name=name
|
||||||
|
|
||||||
|
@env_url.setter
|
||||||
|
def env_url(self, env_url):
|
||||||
|
self.__env_url=env_url
|
||||||
|
|
||||||
|
@token.setter
|
||||||
|
def token(self, token):
|
||||||
|
self.__token=token
|
||||||
|
|
||||||
|
|
||||||
|
def __init__(self, name, env_url, token):
|
||||||
|
self.name=name
|
||||||
|
self.env_url=env_url
|
||||||
|
self.token=token
|
||||||
|
|
||||||
|
def __init__(self, array, tokenStore):
|
||||||
|
self.tokenStore =tokenStore
|
||||||
|
for i in array:
|
||||||
|
for key, value in i.items():
|
||||||
|
if key == "name":
|
||||||
|
self.name=i[key]
|
||||||
|
elif key == "env-url":
|
||||||
|
self.env_url=i[key]
|
||||||
|
elif key == "env-token-name":
|
||||||
|
self.token =i[key]
|
||||||
|
else:
|
||||||
|
raise ValueError('Unknown environment config attribute: '+i[key])
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
from environment.AbstractEnvReader import AbstractEnvReader
|
||||||
|
from environment.Environment import Environment
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
class YamlEnvReader(AbstractEnvReader):
|
||||||
|
|
||||||
|
def _readEvnironment(self):
|
||||||
|
try:
|
||||||
|
f = open(self.pathToEnvironmentYAML,)
|
||||||
|
data=yaml.safe_load(f)
|
||||||
|
for key, value in data.items():
|
||||||
|
self._addEnvironment(Environment(value, self.tokenStore))
|
||||||
|
except:
|
||||||
|
print("Error while reading environment yaml: ", self.pathToEnvironmentYAML)
|
||||||
|
raise
|
||||||
|
|
||||||
|
|
||||||
|
def __init__(self, pathToEnvironmentYAML, tokenStore):
|
||||||
|
self.pathToEnvironmentYAML = pathToEnvironmentYAML
|
||||||
|
self.tokenStore=tokenStore
|
||||||
|
|
||||||
|
#def create_product_b(self) -> AbstractProductB:
|
||||||
|
# return ConcreteProductB1()
|
||||||
Binary file not shown.
|
|
@ -0,0 +1,67 @@
|
||||||
|
config:
|
||||||
|
- CDam-casa-PROD: default.json
|
||||||
|
- CDam-casa-E2E: default.json
|
||||||
|
- CDam-casa-INT: default.json
|
||||||
|
- CDam-casa-DEV: default.json
|
||||||
|
|
||||||
|
##PROD E2E and PROD (disabled)
|
||||||
|
CDam-casa-E2E.EMEA-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-casa-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-casa-PROD.EMEA-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "am-casa-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
CDam-casa-E2E.NA-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-casa-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-casa-PROD.NA-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "am-casa-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
CDam-casa-E2E.CN-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-casa-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-casa-PROD.CN-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "am-casa-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
##PREPROD DEV AND INT
|
||||||
|
CDam-casa-DEV.EMEA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-casa-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-casa-INT.EMEA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-casa-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-casa-DEV.NA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-casa-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-casa-INT.NA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-casa-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-casa-DEV.CN-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-casa-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-casa-INT.CN-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-casa-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
[{
|
||||||
|
"schemaId": "builtin:container.monitoring-rule",
|
||||||
|
"scope": "environment",
|
||||||
|
"value": {
|
||||||
|
"enabled": "{{.enabled}}",
|
||||||
|
"mode": "MONITORING_ON",
|
||||||
|
"property": "KUBERNETES_NAMESPACE",
|
||||||
|
"value": "{{.namespace}}",
|
||||||
|
"operator": "EQUALS"
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
|
@ -0,0 +1,67 @@
|
||||||
|
config:
|
||||||
|
- CDam-cnr-PROD: default.json
|
||||||
|
- CDam-cnr-E2E: default.json
|
||||||
|
- CDam-cnr-INT: default.json
|
||||||
|
- CDam-cnr-DEV: default.json
|
||||||
|
|
||||||
|
##PROD E2E and PROD (disabled)
|
||||||
|
CDam-cnr-E2E.EMEA-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-cnr-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-cnr-PROD.EMEA-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "am-cnr-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
CDam-cnr-E2E.NA-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-cnr-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-cnr-PROD.NA-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "am-cnr-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
CDam-cnr-E2E.CN-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-cnr-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-cnr-PROD.CN-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "am-cnr-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
##PREPROD DEV AND INT
|
||||||
|
CDam-cnr-DEV.EMEA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-cnr-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-cnr-INT.EMEA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-cnr-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-cnr-DEV.NA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-cnr-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-cnr-INT.NA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-cnr-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-cnr-DEV.CN-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-cnr-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-cnr-INT.CN-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-cnr-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
[{
|
||||||
|
"schemaId": "builtin:container.monitoring-rule",
|
||||||
|
"scope": "environment",
|
||||||
|
"value": {
|
||||||
|
"enabled": "{{.enabled}}",
|
||||||
|
"mode": "MONITORING_ON",
|
||||||
|
"property": "KUBERNETES_NAMESPACE",
|
||||||
|
"value": "{{.namespace}}",
|
||||||
|
"operator": "EQUALS"
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
|
@ -0,0 +1,67 @@
|
||||||
|
config:
|
||||||
|
- CDam-ecs-PROD: default.json
|
||||||
|
- CDam-ecs-E2E: default.json
|
||||||
|
- CDam-ecs-INT: default.json
|
||||||
|
- CDam-ecs-DEV: default.json
|
||||||
|
|
||||||
|
##PROD E2E and PROD (disabled)
|
||||||
|
CDam-ecs-E2E.EMEA-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-ecs-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-ecs-PROD.EMEA-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "am-ecs-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
CDam-ecs-E2E.NA-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-ecs-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-ecs-PROD.NA-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "am-ecs-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
CDam-ecs-E2E.CN-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-ecs-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-ecs-PROD.CN-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "am-ecs-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
##PREPROD DEV AND INT
|
||||||
|
CDam-ecs-DEV.EMEA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-ecs-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-ecs-INT.EMEA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-ecs-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-ecs-DEV.NA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-ecs-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-ecs-INT.NA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-ecs-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-ecs-DEV.CN-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-ecs-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-ecs-INT.CN-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-ecs-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
[{
|
||||||
|
"schemaId": "builtin:container.monitoring-rule",
|
||||||
|
"scope": "environment",
|
||||||
|
"value": {
|
||||||
|
"enabled": "{{.enabled}}",
|
||||||
|
"mode": "MONITORING_ON",
|
||||||
|
"property": "KUBERNETES_NAMESPACE",
|
||||||
|
"value": "{{.namespace}}",
|
||||||
|
"operator": "EQUALS"
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
|
@ -0,0 +1,67 @@
|
||||||
|
config:
|
||||||
|
- CDam-store-PROD: default.json
|
||||||
|
- CDam-store-E2E: default.json
|
||||||
|
- CDam-store-INT: default.json
|
||||||
|
- CDam-store-DEV: default.json
|
||||||
|
|
||||||
|
##PROD E2E and PROD (disabled)
|
||||||
|
CDam-store-E2E.EMEA-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-store-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-store-PROD.EMEA-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "am-store-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
CDam-store-E2E.NA-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-store-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-store-PROD.NA-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "am-store-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
CDam-store-E2E.CN-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-store-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-store-PROD.CN-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "am-store-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
##PREPROD DEV AND INT
|
||||||
|
CDam-store-DEV.EMEA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-store-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-store-INT.EMEA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-store-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-store-DEV.NA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-store-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-store-INT.NA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-store-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-store-DEV.CN-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-store-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-store-INT.CN-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-store-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
[{
|
||||||
|
"schemaId": "builtin:container.monitoring-rule",
|
||||||
|
"scope": "environment",
|
||||||
|
"value": {
|
||||||
|
"enabled": "{{.enabled}}",
|
||||||
|
"mode": "MONITORING_ON",
|
||||||
|
"property": "KUBERNETES_NAMESPACE",
|
||||||
|
"value": "{{.namespace}}",
|
||||||
|
"operator": "EQUALS"
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
|
@ -0,0 +1,67 @@
|
||||||
|
config:
|
||||||
|
- CDam-usage-PROD: default.json
|
||||||
|
- CDam-usage-E2E: default.json
|
||||||
|
- CDam-usage-INT: default.json
|
||||||
|
- CDam-usage-DEV: default.json
|
||||||
|
|
||||||
|
##PROD E2E and PROD (disabled)
|
||||||
|
CDam-usage-E2E.EMEA-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-usage-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-usage-PROD.EMEA-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "am-usage-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
CDam-usage-E2E.NA-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-usage-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-usage-PROD.NA-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "am-usage-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
CDam-usage-E2E.CN-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-usage-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-usage-PROD.CN-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "am-usage-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
##PREPROD DEV AND INT
|
||||||
|
CDam-usage-DEV.EMEA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-usage-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-usage-INT.EMEA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-usage-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-usage-DEV.NA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-usage-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-usage-INT.NA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-usage-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-usage-DEV.CN-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-usage-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-usage-INT.CN-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-usage-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
[{
|
||||||
|
"schemaId": "builtin:container.monitoring-rule",
|
||||||
|
"scope": "environment",
|
||||||
|
"value": {
|
||||||
|
"enabled": "{{.enabled}}",
|
||||||
|
"mode": "MONITORING_ON",
|
||||||
|
"property": "KUBERNETES_NAMESPACE",
|
||||||
|
"value": "{{.namespace}}",
|
||||||
|
"operator": "EQUALS"
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
|
@ -0,0 +1,67 @@
|
||||||
|
config:
|
||||||
|
- CDam-vas-PROD: default.json
|
||||||
|
- CDam-vas-E2E: default.json
|
||||||
|
- CDam-vas-INT: default.json
|
||||||
|
- CDam-vas-DEV: default.json
|
||||||
|
|
||||||
|
##PROD E2E and PROD (disabled)
|
||||||
|
CDam-vas-E2E.EMEA-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-vas-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-vas-PROD.EMEA-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "am-vas-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
CDam-vas-E2E.NA-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-vas-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-vas-PROD.NA-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "am-vas-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
CDam-vas-E2E.CN-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-vas-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-vas-PROD.CN-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "am-vas-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
##PREPROD DEV AND INT
|
||||||
|
CDam-vas-DEV.EMEA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-vas-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-vas-INT.EMEA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-vas-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-vas-DEV.NA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-vas-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-vas-INT.NA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-vas-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-vas-DEV.CN-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-vas-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDam-vas-INT.CN-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "am-vas-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
[{
|
||||||
|
"schemaId": "builtin:container.monitoring-rule",
|
||||||
|
"scope": "environment",
|
||||||
|
"value": {
|
||||||
|
"enabled": "{{.enabled}}",
|
||||||
|
"mode": "MONITORING_ON",
|
||||||
|
"property": "KUBERNETES_NAMESPACE",
|
||||||
|
"value": "{{.namespace}}",
|
||||||
|
"operator": "EQUALS"
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
|
@ -0,0 +1,67 @@
|
||||||
|
config:
|
||||||
|
- CDb2v-com-fe-PROD: default.json
|
||||||
|
- CDb2v-com-fe-E2E: default.json
|
||||||
|
- CDb2v-com-fe-INT: default.json
|
||||||
|
- CDb2v-com-fe-DEV: default.json
|
||||||
|
|
||||||
|
##PROD E2E and PROD (disabled)
|
||||||
|
CDb2v-com-fe-E2E.EMEA-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "b2v-com-fe-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDb2v-com-fe-PROD.EMEA-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "b2v-com-fe-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
CDb2v-com-fe-E2E.NA-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "b2v-com-fe-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDb2v-com-fe-PROD.NA-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "b2v-com-fe-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
CDb2v-com-fe-E2E.CN-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "b2v-com-fe-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDb2v-com-fe-PROD.CN-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "b2v-com-fe-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
##PREPROD DEV AND INT
|
||||||
|
CDb2v-com-fe-DEV.EMEA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "b2v-com-fe-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDb2v-com-fe-INT.EMEA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "b2v-com-fe-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDb2v-com-fe-DEV.NA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "b2v-com-fe-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDb2v-com-fe-INT.NA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "b2v-com-fe-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDb2v-com-fe-DEV.CN-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "b2v-com-fe-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDb2v-com-fe-INT.CN-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "b2v-com-fe-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
[{
|
||||||
|
"schemaId": "builtin:container.monitoring-rule",
|
||||||
|
"scope": "environment",
|
||||||
|
"value": {
|
||||||
|
"enabled": "{{.enabled}}",
|
||||||
|
"mode": "MONITORING_ON",
|
||||||
|
"property": "KUBERNETES_NAMESPACE",
|
||||||
|
"value": "{{.namespace}}",
|
||||||
|
"operator": "EQUALS"
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
|
@ -0,0 +1,67 @@
|
||||||
|
config:
|
||||||
|
- CDrsu-adapter-PROD: default.json
|
||||||
|
- CDrsu-adapter-E2E: default.json
|
||||||
|
- CDrsu-adapter-INT: default.json
|
||||||
|
- CDrsu-adapter-DEV: default.json
|
||||||
|
|
||||||
|
##PROD E2E and PROD (disabled)
|
||||||
|
CDrsu-adapter-E2E.EMEA-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "rsu-adapter-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDrsu-adapter-PROD.EMEA-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "rsu-adapter-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
CDrsu-adapter-E2E.NA-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "rsu-adapter-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDrsu-adapter-PROD.NA-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "rsu-adapter-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
CDrsu-adapter-E2E.CN-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "rsu-adapter-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDrsu-adapter-PROD.CN-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "rsu-adapter-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
##PREPROD DEV AND INT
|
||||||
|
CDrsu-adapter-DEV.EMEA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "rsu-adapter-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDrsu-adapter-INT.EMEA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "rsu-adapter-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDrsu-adapter-DEV.NA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "rsu-adapter-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDrsu-adapter-INT.NA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "rsu-adapter-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDrsu-adapter-DEV.CN-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "rsu-adapter-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CDrsu-adapter-INT.CN-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "rsu-adapter-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
[{
|
||||||
|
"schemaId": "builtin:container.monitoring-rule",
|
||||||
|
"scope": "environment",
|
||||||
|
"value": {
|
||||||
|
"enabled": "{{.enabled}}",
|
||||||
|
"mode": "MONITORING_ON",
|
||||||
|
"property": "KUBERNETES_NAMESPACE",
|
||||||
|
"value": "{{.namespace}}",
|
||||||
|
"operator": "EQUALS"
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
EMEA-PreProd:
|
||||||
|
- name: "EMEA-PreProd"
|
||||||
|
- env-url: "https://qqk70169.live.dynatrace.com/"
|
||||||
|
- env-token-name: "EUPREPROD_TOKEN_VAR"
|
||||||
|
NA-PreProd:
|
||||||
|
- name: "NA-PreProd"
|
||||||
|
- env-url: "https://onb44935.live.dynatrace.com/"
|
||||||
|
- env-token-name: "NAPREPROD_TOKEN_VAR"
|
||||||
|
naprod:
|
||||||
|
- name: "naprod"
|
||||||
|
- env-url: "https://wgv50241.live.dynatrace.com"
|
||||||
|
- env-token-name: "NAPROD_TOKEN_VAR"
|
||||||
|
euprod:
|
||||||
|
- name: "euprod"
|
||||||
|
- env-url: "https://xxu26128.live.dynatrace.com"
|
||||||
|
- env-token-name: "EUPROD_TOKEN_VAR"
|
||||||
|
|
@ -0,0 +1,92 @@
|
||||||
|
import json
|
||||||
|
import re
|
||||||
|
import requests
|
||||||
|
import coloredlogs, logging
|
||||||
|
from Options import Options
|
||||||
|
|
||||||
|
class RestCall:
|
||||||
|
|
||||||
|
setting={}
|
||||||
|
|
||||||
|
logger = logging.getLogger("yamo")
|
||||||
|
|
||||||
|
def validate(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def skip(self,execConfigValue):
|
||||||
|
skip=False
|
||||||
|
for x in execConfigValue:
|
||||||
|
if 'skipDeployment' in x:
|
||||||
|
if x['skipDeployment'] == 'true':
|
||||||
|
skip=True
|
||||||
|
return skip
|
||||||
|
|
||||||
|
def execByEnv(self, env):
|
||||||
|
self.__exec(env)
|
||||||
|
|
||||||
|
def exec(self):
|
||||||
|
if Options.getInstance().env:
|
||||||
|
self.execByEnv(Options.getInstance().env)
|
||||||
|
else:
|
||||||
|
self.execAll()
|
||||||
|
|
||||||
|
def execAll(self):
|
||||||
|
for env, setting in self.setting.items():
|
||||||
|
self.__exec(env)
|
||||||
|
|
||||||
|
def __exec(self,env):
|
||||||
|
#print(env)
|
||||||
|
#context= Context.getInstance()
|
||||||
|
self.logger.debug("try to execute "+self.name+ " for Evironment "+ env)
|
||||||
|
variabledBody = self.setting[env]
|
||||||
|
for vb in variabledBody:
|
||||||
|
compiledBody = self.__compileBody(vb)
|
||||||
|
|
||||||
|
envObj = self.context.getEnvironment(env)
|
||||||
|
url=envObj.env_url+self.endpoint
|
||||||
|
headers = {'Content-type': 'application/json', 'Authorization': 'Api-Token '+ envObj.token}
|
||||||
|
|
||||||
|
self.logger.debug("Rest body: "+compiledBody)
|
||||||
|
response = requests.post(url, headers=headers, data=compiledBody)
|
||||||
|
#self.logger.debug(response.text)
|
||||||
|
|
||||||
|
if response.status_code != 200:
|
||||||
|
self.logger.error(self.name+" Env: "+env+ " [Failed]" )
|
||||||
|
self.logger.error(response.text )
|
||||||
|
raise Exception(response.text)
|
||||||
|
else:
|
||||||
|
self.logger.info(self.name+" Env: "+env+" [SUCCESS]")
|
||||||
|
|
||||||
|
|
||||||
|
#for key, value in self.setting.items():
|
||||||
|
# print(key)
|
||||||
|
#if not self.skip(value):
|
||||||
|
# print()
|
||||||
|
#print(value)
|
||||||
|
|
||||||
|
#def __getVariable(self,variables,name):
|
||||||
|
|
||||||
|
def __compileBody(self, variabledBody):
|
||||||
|
variables=json.dumps(variabledBody['variables'])
|
||||||
|
plainBody=json.dumps(variabledBody['body'])
|
||||||
|
matches = re.findall("\{\{.([a-zA-Z]*)\}\}", plainBody)
|
||||||
|
|
||||||
|
|
||||||
|
for m in matches:
|
||||||
|
v = re.findall('"'+m+'": ([^}]*)', variables)
|
||||||
|
plainBody=plainBody.replace('"{{.'+m+'}}"',v[0])
|
||||||
|
|
||||||
|
return plainBody
|
||||||
|
|
||||||
|
|
||||||
|
def call(self):
|
||||||
|
print("Calling rest: "+ self.name)
|
||||||
|
|
||||||
|
def __init__(self, name, restConfig, executionConfig,context):
|
||||||
|
self.name=name
|
||||||
|
self.endpoint=restConfig["endpoint"]
|
||||||
|
self.schema=restConfig["schema"]
|
||||||
|
self.setting=executionConfig
|
||||||
|
self.context=context
|
||||||
|
#self.execConfig=execConfig
|
||||||
|
|
||||||
|
|
@ -0,0 +1,62 @@
|
||||||
|
import json
|
||||||
|
import yaml
|
||||||
|
from rest.RestCall import RestCall
|
||||||
|
from context.Context import Context
|
||||||
|
import coloredlogs, logging
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
class RestFactory:
|
||||||
|
|
||||||
|
#def buildRequests(self, name, requestConfig, body):
|
||||||
|
|
||||||
|
def __readBodies(self,execConfig, restPath):
|
||||||
|
bodies={}
|
||||||
|
for setting in execConfig['config']:
|
||||||
|
for key, value in setting.items():
|
||||||
|
body=json.load(open(restPath+"/"+value))
|
||||||
|
bodies[key]=body
|
||||||
|
|
||||||
|
return bodies
|
||||||
|
|
||||||
|
def __mapExecutionConfig(self, restName,projectRootPath):
|
||||||
|
#execConfig=self.readExecutionConfig(projectRootPath+"/"+restName+"/"+restName+".yaml")
|
||||||
|
mappedExecConfig={}
|
||||||
|
|
||||||
|
executionConfigFilePath=projectRootPath+"/"+restName+"/"+restName+".yaml"
|
||||||
|
executionConfigFile=open(executionConfigFilePath)
|
||||||
|
execConfig=yaml.safe_load(executionConfigFile)
|
||||||
|
bodies = self.__readBodies(execConfig,projectRootPath+"/"+restName)
|
||||||
|
del execConfig['config']
|
||||||
|
|
||||||
|
for key, values in execConfig.items():
|
||||||
|
envSplit = key.split('.')
|
||||||
|
if len(envSplit) > 1:
|
||||||
|
if envSplit[1] not in mappedExecConfig:
|
||||||
|
mappedExecConfig[envSplit[1]]=[]
|
||||||
|
|
||||||
|
tmpObj= {}
|
||||||
|
#tmpBody = bodies[envSplit[0]]
|
||||||
|
#tmpBody['__yamo__values'] = values
|
||||||
|
tmpObj['variables']=values
|
||||||
|
tmpObj['body']=bodies[envSplit[0]]
|
||||||
|
mappedExecConfig[envSplit[1]].append(tmpObj)
|
||||||
|
else:
|
||||||
|
self.logger.warning("Missing Environment config for "+key+" in "+executionConfigFilePath+", will be ignored")
|
||||||
|
|
||||||
|
return mappedExecConfig
|
||||||
|
|
||||||
|
def getRest(self,restName, projectRootPath):
|
||||||
|
try:
|
||||||
|
#execConfig=self.readExecutionConfig(projectRootPath+"/"+name+"/"+name+".yaml")
|
||||||
|
mappedExecConfig = self.__mapExecutionConfig(restName, projectRootPath)
|
||||||
|
return RestCall(restName, self.data[restName], mappedExecConfig,Context.getInstance())
|
||||||
|
except:
|
||||||
|
return None
|
||||||
|
|
||||||
|
def readRestConfig(self, pathToRestConfig):
|
||||||
|
f = open(pathToRestConfig,)
|
||||||
|
self.data=json.load(f)
|
||||||
|
|
||||||
|
def __init__(self, pathToRestConfig):
|
||||||
|
self.readRestConfig(pathToRestConfig)
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
|
||||||
|
"container-monitoring-rule": {
|
||||||
|
"endpoint": "api/v2/settings/objects",
|
||||||
|
"schema": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"price": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
am-casa
|
||||||
|
am-usage
|
||||||
|
am-ecs
|
||||||
|
am-store
|
||||||
|
rsu-adapter
|
||||||
|
b2v-com-fe
|
||||||
|
am-vas
|
||||||
|
am-cnr
|
||||||
|
|
@ -0,0 +1,67 @@
|
||||||
|
config:
|
||||||
|
- CD#project#-PROD: default.json
|
||||||
|
- CD#project#-E2E: default.json
|
||||||
|
- CD#project#-INT: default.json
|
||||||
|
- CD#project#-DEV: default.json
|
||||||
|
|
||||||
|
##PROD E2E and PROD (disabled)
|
||||||
|
CD#project#-E2E.EMEA-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "#project#-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CD#project#-PROD.EMEA-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "#project#-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
CD#project#-E2E.NA-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "#project#-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CD#project#-PROD.NA-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "#project#-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
CD#project#-E2E.CN-Prod:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "#project#-e2e"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CD#project#-PROD.CN-Prod:
|
||||||
|
- enabled: false
|
||||||
|
- namespace: "#project#-prod"
|
||||||
|
- skipDeployment: "true"
|
||||||
|
|
||||||
|
##PREPROD DEV AND INT
|
||||||
|
CD#project#-DEV.EMEA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "#project#-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CD#project#-INT.EMEA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "#project#-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CD#project#-DEV.NA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "#project#-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CD#project#-INT.NA-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "#project#-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CD#project#-DEV.CN-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "#project#-dev"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
||||||
|
CD#project#-INT.CN-PreProd:
|
||||||
|
- enabled: true
|
||||||
|
- namespace: "#project#-int"
|
||||||
|
- skipDeployment: "false"
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
[{
|
||||||
|
"schemaId": "builtin:container.monitoring-rule",
|
||||||
|
"scope": "environment",
|
||||||
|
"value": {
|
||||||
|
"enabled": "{{.enabled}}",
|
||||||
|
"mode": "MONITORING_ON",
|
||||||
|
"property": "KUBERNETES_NAMESPACE",
|
||||||
|
"value": "{{.namespace}}",
|
||||||
|
"operator": "EQUALS"
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
from abc import ABC, abstractmethod
|
||||||
|
|
||||||
|
class AbstractTokenStore(ABC):
|
||||||
|
|
||||||
|
__tokenCache={}
|
||||||
|
|
||||||
|
def get(self, tokenName):
|
||||||
|
if tokenName not in self.__tokenCache:
|
||||||
|
self.__tokenCache[tokenName] = self._getToken(tokenName)
|
||||||
|
|
||||||
|
if self.__tokenCache[tokenName] is None:
|
||||||
|
print("WARNING: Token: "+tokenName+" could not be resolved!")
|
||||||
|
return ""
|
||||||
|
|
||||||
|
return self.__tokenCache[tokenName]
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def _getToken(self, name):
|
||||||
|
pass
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
import os
|
||||||
|
from tokenStore.AbstractTokenStore import AbstractTokenStore
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
|
class EnvTokenStore(AbstractTokenStore):
|
||||||
|
|
||||||
|
def _getToken(self, name):
|
||||||
|
return os.getenv(name)
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
load_dotenv()
|
||||||
|
|
@ -0,0 +1,102 @@
|
||||||
|
from decouple import config
|
||||||
|
|
||||||
|
import sys, getopt
|
||||||
|
|
||||||
|
#import configBuilder
|
||||||
|
from context.Context import Context
|
||||||
|
#from Executer import Executer
|
||||||
|
from rest.RestFactory import RestFactory
|
||||||
|
from environment.YamlEnvReader import YamlEnvReader
|
||||||
|
from ProjectList import ProjectList
|
||||||
|
from tokenStore.EnvTokenStore import EnvTokenStore
|
||||||
|
|
||||||
|
import coloredlogs, logging
|
||||||
|
from Report.ReportPrinter import ReportPrinter
|
||||||
|
from Report.ConsolePrinter import ConsolePrinter
|
||||||
|
from Options import Options
|
||||||
|
#, ConsolePrinter
|
||||||
|
|
||||||
|
def printLogo():
|
||||||
|
print(r"""
|
||||||
|
___ ___ ________ _____ ______ ________
|
||||||
|
|\ \ / /|\ __ \|\ _ \ _ \|\ __ \
|
||||||
|
\ \ \/ / | \ \|\ \ \ \\\__\ \ \ \ \|\ \
|
||||||
|
\ \ / / \ \ __ \ \ \\|__| \ \ \ \\\ \
|
||||||
|
\/ / / \ \ \ \ \ \ \ \ \ \ \ \\\ \
|
||||||
|
__/ / / \ \__\ \__\ \__\ \ \__\ \_______\
|
||||||
|
|\___/ / \|__|\|__|\|__| \|__|\|_______|
|
||||||
|
\|___|/
|
||||||
|
|
||||||
|
""")
|
||||||
|
|
||||||
|
|
||||||
|
def printHelp():
|
||||||
|
printLogo()
|
||||||
|
print("yamo.py -i <inputProjectsPath> -p <project> -e <environment> -r <restcall>")
|
||||||
|
|
||||||
|
def main(argv):
|
||||||
|
|
||||||
|
options=Options.getInstance()
|
||||||
|
|
||||||
|
pathToProjects = '.'
|
||||||
|
try:
|
||||||
|
opts, args = getopt.getopt(argv,"h:i:p:e:r:l:v",["help","iPath","project", "environment", "restcall","logLevel"])
|
||||||
|
except getopt.GetoptError:
|
||||||
|
printHelp()
|
||||||
|
sys.exit(2)
|
||||||
|
for opt, arg in opts:
|
||||||
|
if opt in ('-h',"--help"):
|
||||||
|
printHelp
|
||||||
|
sys.exit()
|
||||||
|
elif opt in ("-i", "--iPath"):
|
||||||
|
options.pathToProjects = arg
|
||||||
|
elif opt in ("-p", "--project"):
|
||||||
|
options.project=arg
|
||||||
|
elif opt in ("-e", "--environment"):
|
||||||
|
options.env=arg
|
||||||
|
elif opt in ("-r", "--restcall"):
|
||||||
|
options.restCall=arg
|
||||||
|
elif opt in ("-l", "--logLevel"):
|
||||||
|
options.loglevel=arg
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
printLogo()
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
coloredlogs.install(level=options.loglevel)
|
||||||
|
#logger.debug("this is a debugging message")
|
||||||
|
|
||||||
|
tokenStore=EnvTokenStore()
|
||||||
|
#print(tokenStoreX.get('NTTDATA-Api-Token'))
|
||||||
|
|
||||||
|
pathToRestConfig="restConfig.json"
|
||||||
|
restFactory = RestFactory(pathToRestConfig)
|
||||||
|
|
||||||
|
pathToEnvironmentFile=options.pathToProjects+"/environment.yaml"
|
||||||
|
envReader = YamlEnvReader(pathToEnvironmentFile, tokenStore)
|
||||||
|
|
||||||
|
context = Context.getInstance()
|
||||||
|
context.build(restFactory,envReader)
|
||||||
|
|
||||||
|
pList=ProjectList(options.pathToProjects)
|
||||||
|
pList.exec()
|
||||||
|
#if options.project:
|
||||||
|
# pList.execProject(options.project)
|
||||||
|
#else:
|
||||||
|
# pList.execAll()
|
||||||
|
|
||||||
|
#rp = ReportPrinter(pList)
|
||||||
|
#rp.append(ConsolePrinter())
|
||||||
|
|
||||||
|
#rp.print()
|
||||||
|
|
||||||
|
|
||||||
|
except:
|
||||||
|
raise
|
||||||
|
# print("Exception occured during yammo processing: ", sys.exc_info()[1])
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main(sys.argv[1:])
|
||||||
Loading…
Reference in New Issue