IAMRules.java
package com.cloudforgeci.api.core.rules;
import com.cloudforgeci.api.core.SystemContext;
import com.cloudforgeci.api.core.iam.ExtendedIAMConfiguration;
import com.cloudforgeci.api.core.iam.MinimalIAMConfiguration;
import com.cloudforgeci.api.core.iam.StandardIAMConfiguration;
import com.cloudforgeci.api.interfaces.IAMConfiguration;
import com.cloudforgeci.api.interfaces.Rule;
import java.util.ArrayList;
import java.util.List;
public final class IAMRules {
public static void install(SystemContext ctx) {
final IAMConfiguration p = switch (ctx.iamProfile) {
case MINIMAL -> new MinimalIAMConfiguration();
case STANDARD -> new StandardIAMConfiguration();
case EXTENDED -> new ExtendedIAMConfiguration();
};
ctx.getNode().addValidation(() -> {
List<String> errs = new ArrayList<>();
for (Rule r : p.rules(ctx)) errs.addAll(r.check(ctx));
return errs;
});
// Create IAM roles immediately instead of deferring - runtime factories need them
p.wire(ctx);
}
}