Add signed licensing enforcement and ISO notes
This commit is contained in:
1 parent
dee4486826
commit
d645249a13
14 files changed
+1526
-103
No files matched your search
@@ -0,0 +1,60 @@
|
||||
#!/usr/bin/env python3
|
||||
import argparse
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
from cezen_license import (
|
||||
STAGING_MAX_TIER,
|
||||
build_tier_options,
|
||||
evaluate_license,
|
||||
evaluate_override,
|
||||
normalize_tier,
|
||||
read_json_file,
|
||||
)
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Evaluate Nexus One AI license and tier constraints")
|
||||
parser.add_argument("--license", dest="license_path", default="/opt/cezen/license.json")
|
||||
parser.add_argument("--override", dest="override_path", default="/opt/cezen/license.override.json")
|
||||
parser.add_argument("--feasibility", dest="feasibility_path", default="/opt/cezen/feasibility.json")
|
||||
parser.add_argument("--public-key", dest="public_key_path", default="")
|
||||
parser.add_argument("--machine-id", dest="machine_id", default="")
|
||||
args = parser.parse_args()
|
||||
|
||||
script_dir = Path(__file__).resolve().parent
|
||||
default_pub = script_dir.parent / "autoinstall" / "keys" / "cezen-license-public.pem"
|
||||
public_key_path = args.public_key_path or str(default_pub)
|
||||
|
||||
license_record = read_json_file(args.license_path)
|
||||
override_record = read_json_file(args.override_path)
|
||||
feasibility = read_json_file(args.feasibility_path)
|
||||
|
||||
hardware_tier = normalize_tier(((feasibility.get("recommendation") or {}).get("recommended_tier")), STAGING_MAX_TIER)
|
||||
license_eval = evaluate_license(license_record, public_key_path, machine_id=args.machine_id or None)
|
||||
override_eval = evaluate_override(override_record, public_key_path)
|
||||
tier_options = build_tier_options(license_eval, hardware_tier, override_eval)
|
||||
|
||||
response = {
|
||||
"license": license_eval,
|
||||
"override": override_eval,
|
||||
"hardware": {
|
||||
"recommended_tier": hardware_tier,
|
||||
"recommended_profile": (feasibility.get("recommendation") or {}).get("recommended_profile", ""),
|
||||
"estimated_concurrent_users": (feasibility.get("recommendation") or {}).get("estimated_concurrent_users", ""),
|
||||
"notes": (feasibility.get("recommendation") or {}).get("notes", []),
|
||||
"features": feasibility.get("features", {}),
|
||||
},
|
||||
"tier_options": tier_options,
|
||||
"effective_max_tier": max(
|
||||
[opt["tier"] for opt in tier_options if opt["selectable"]],
|
||||
default=STAGING_MAX_TIER,
|
||||
key=lambda tier: ("starter", "basic", "pro", "max").index(tier),
|
||||
),
|
||||
"staging_only": license_eval.get("status") != "valid",
|
||||
}
|
||||
print(json.dumps(response, indent=2))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in new issue
Block a user