CreateEnvironment

enum_InstanceType := [ "i4i.metal" ]
enum_VcfVersion := [ "VCF-5.2.1" ]

valid {
    input.Body.clientToken == STRING
    input.Body.environmentName == STRING
    input.Body.kmsKeyId == STRING
    input.Body.tags.STRING == STRING
    input.Body.serviceAccessSecurityGroups.securityGroups[_] == STRING
    input.Body.vpcId == STRING
    input.Body.serviceAccessSubnetId == STRING
    input.Body.vcfVersion == enum_VcfVersion[_]
    input.Body.termsAccepted == BOOLEAN
    input.Body.licenseInfo[_].solutionKey == STRING
    input.Body.licenseInfo[_].vsanKey == STRING
    input.Body.initialVlans.vmkManagement.cidr == STRING
    input.Body.initialVlans.vmManagement.cidr == STRING
    input.Body.initialVlans.vMotion.cidr == STRING
    input.Body.initialVlans.vSan.cidr == STRING
    input.Body.initialVlans.vTep.cidr == STRING
    input.Body.initialVlans.edgeVTep.cidr == STRING
    input.Body.initialVlans.nsxUplink.cidr == STRING
    input.Body.initialVlans.hcx.cidr == STRING
    input.Body.initialVlans.expansionVlan1.cidr == STRING
    input.Body.initialVlans.expansionVlan2.cidr == STRING
    input.Body.hosts[_].hostName == STRING
    input.Body.hosts[_].keyName == STRING
    input.Body.hosts[_].instanceType == enum_InstanceType[_]
    input.Body.hosts[_].placementGroupId == STRING
    input.Body.hosts[_].dedicatedHostId == STRING
    input.Body.connectivityInfo.privateRouteServerPeerings[_] == STRING
    input.Body.vcfHostnames.vCenter == STRING
    input.Body.vcfHostnames.nsx == STRING
    input.Body.vcfHostnames.nsxManager1 == STRING
    input.Body.vcfHostnames.nsxManager2 == STRING
    input.Body.vcfHostnames.nsxManager3 == STRING
    input.Body.vcfHostnames.nsxEdge1 == STRING
    input.Body.vcfHostnames.nsxEdge2 == STRING
    input.Body.vcfHostnames.sddcManager == STRING
    input.Body.vcfHostnames.cloudBuilder == STRING
    input.Body.siteId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateEnvironmentHost

enum_InstanceType := [ "i4i.metal" ]

valid {
    input.Body.clientToken == STRING
    input.Body.environmentId == STRING
    input.Body.host.hostName == STRING
    input.Body.host.keyName == STRING
    input.Body.host.instanceType == enum_InstanceType[_]
    input.Body.host.placementGroupId == STRING
    input.Body.host.dedicatedHostId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteEnvironment

valid {
    input.Body.clientToken == STRING
    input.Body.environmentId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteEnvironmentHost

valid {
    input.Body.clientToken == STRING
    input.Body.environmentId == STRING
    input.Body.hostName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetEnvironment

valid {
    input.Body.environmentId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListEnvironmentHosts

valid {
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.environmentId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListEnvironmentVlans

valid {
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.environmentId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListEnvironments

enum_EnvironmentState := [ "CREATING", "CREATED", "DELETING", "DELETED", "CREATE_FAILED" ]

valid {
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.state[_] == enum_EnvironmentState[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListTagsForResource

valid {
    input.Body.resourceArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

TagResource

valid {
    input.Body.resourceArn == STRING
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UntagResource

valid {
    input.Body.resourceArn == STRING
    input.Body.tagKeys[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}