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