in sdk/aws_orbit_sdk/controller.py [0:0]
def build_podsetting(env_name: str, team_name: str, podsetting: str, debug: bool) -> None:
ps = json.loads(podsetting)
if not ps["description"] or not ps["name"]:
raise Exception("Podsetting name and description not present")
podsetting_name = ps["name"]
spec_template = _generate_podsetting_spec_base(
podsetting_name=podsetting_name, description=ps["description"], env_name=env_name, team_name=team_name
)
spec = yaml.load(spec_template, Loader=yaml.SafeLoader)
env_params = ps.get("env", None)
if env_params:
spec["spec"]["env"] = env_params
image = ps.get("image", None)
if image:
spec["spec"]["image"] = image
resources = ps.get("resources", None)
if resources is not None:
spec["spec"]["resources"] = resources
nodegroup = ps.get("node-group", None)
instancetype = ps.get("instance-type", None)
if nodegroup or instancetype:
spec["spec"]["nodeSelector"] = {}
if nodegroup:
spec["spec"]["nodeSelector"]["orbit/node-group"] = nodegroup
if instancetype:
spec["spec"]["nodeSelector"]["node.kubernetes.io/instance-type"] = instancetype
_logger.debug(yaml.dump(spec))
dynamic_client = _dynamic_client()
# This is a hack....we cannot update/patch so delete and create (for now)
try:
_destroy_podsetting(namespace=team_name, podsetting_name=podsetting_name, client=dynamic_client)
time.sleep(3)
except ApiException:
_logger.info(f"Tried to delete {podsetting_name} but that podsetting was not found...moving on")
_deploy_podsetting(namespace=team_name, name=podsetting_name, client=dynamic_client, podsetting_spec=spec)
_logger.info(f"PodSetting {podsetting_name} deployed to {team_name}")