class ClusterResourceDefinition extends BaseResourceDefinition {

  @Override
  public Set<SubResourceDefinition> getSubResourceDefinitions() {
    Set<SubResourceDefinition> setChildren = new HashSet<>();
    setChildren.add(new SubResourceDefinition(Resource.Type.Service));
    setChildren.add(new SubResourceDefinition(Resource.Type.Host));
    setChildren.add(new SubResourceDefinition(Resource.Type.Configuration));
    setChildren.add(new SubResourceDefinition(Resource.Type.ServiceConfigVersion));
    setChildren.add(new SubResourceDefinition(Resource.Type.Request));
    setChildren.add(new SubResourceDefinition(Resource.Type.Workflow));
    setChildren.add(new SubResourceDefinition(Resource.Type.ConfigGroup));
    setChildren.add(new SubResourceDefinition(Resource.Type.ClusterPrivilege));
    setChildren.add(new SubResourceDefinition(Resource.Type.AlertDefinition));
    setChildren.add(new SubResourceDefinition(Resource.Type.Alert));
    setChildren.add(new SubResourceDefinition(Resource.Type.ClusterStackVersion));
    setChildren.add(new SubResourceDefinition(Resource.Type.ClusterKerberosDescriptor));
    //todo: dynamic sub-resource definition
    setChildren.add(new SubResourceDefinition(Resource.Type.Artifact));

    return setChildren;
  }

  public  ClusterResourceDefinition();

}