def build_podsetting()

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}")