public static ResourceTypeComponents CreateCustomResourceType(string fullyQualifiedType, string apiVersion, TypeSymbolValidationFlags validationFlags, params TypeProperty[] customProperties) { var reference = ResourceTypeReference.Parse($"{fullyQualifiedType}@{apiVersion}"); var resourceProperties = AzResourceTypeProvider.GetCommonResourceProperties(reference) .Concat(new TypeProperty("properties", new ObjectType("properties", validationFlags, customProperties, null), TypePropertyFlags.Required)); var bodyType = new ObjectType(reference.FormatName(), validationFlags, resourceProperties, null); return(new ResourceTypeComponents(reference, ResourceScope.Tenant | ResourceScope.ManagementGroup | ResourceScope.Subscription | ResourceScope.ResourceGroup | ResourceScope.Resource, bodyType)); }
private static ResourceTypeComponents DiscriminatedPropertiesTestsType2() { var resourceType = ResourceTypeReference.Parse("Test.Rp/discriminatedPropertiesTests2@2020-01-01"); var bodyAProps = new ObjectType( "BodyAProperties", TypeSymbolValidationFlags.WarnOnTypeMismatch, new[] { new TypeProperty("propA", LanguageConstants.String, TypePropertyFlags.None, "This is the description for propA!"), }, null); var bodyBProps = new ObjectType( "BodyBProperties", TypeSymbolValidationFlags.WarnOnTypeMismatch, new[] { new TypeProperty("propB", LanguageConstants.String, TypePropertyFlags.None, "This is the description for propB!"), }, null); var propertiesType = new DiscriminatedObjectType( "properties", TypeSymbolValidationFlags.Default, "propType", new[] { new ObjectType("BodyA", TypeSymbolValidationFlags.Default, AzResourceTypeProvider.GetCommonResourceProperties(resourceType).Concat(new [] { new TypeProperty("propType", new StringLiteralType("PropertiesA"), TypePropertyFlags.None, "This is the propType of body A"), new TypeProperty("values", bodyAProps, TypePropertyFlags.None, "These are the properties for body A"), }), null), new ObjectType("BodyB", TypeSymbolValidationFlags.Default, AzResourceTypeProvider.GetCommonResourceProperties(resourceType).Concat(new [] { new TypeProperty("propType", new StringLiteralType("PropertiesB"), TypePropertyFlags.None, "This is the propType of body B"), new TypeProperty("values", bodyBProps, TypePropertyFlags.None, "These are the properties for body B"), }), null), }); return(new ResourceTypeComponents(resourceType, ResourceScope.ResourceGroup, new ObjectType(resourceType.FormatName(), TypeSymbolValidationFlags.Default, AzResourceTypeProvider.GetCommonResourceProperties(resourceType).Concat(new[] { new TypeProperty("properties", propertiesType, TypePropertyFlags.Required, "properties property"), }), null))); }
private static ResourceTypeComponents ReadWriteTestsType() { var resourceType = ResourceTypeReference.Parse("Test.Rp/readWriteTests@2020-01-01"); var propertiesType = new ObjectType("Properties", TypeSymbolValidationFlags.WarnOnTypeMismatch, new[] { new TypeProperty("readwrite", LanguageConstants.String, TypePropertyFlags.None, "This is a property which supports reading AND writing!"), new TypeProperty("readonly", LanguageConstants.String, TypePropertyFlags.ReadOnly, "This is a property which only supports reading."), new TypeProperty("writeonly", LanguageConstants.String, TypePropertyFlags.WriteOnly, "This is a property which only supports writing."), new TypeProperty("required", LanguageConstants.String, TypePropertyFlags.Required, "This is a property which is required."), }, null); return(new ResourceTypeComponents(resourceType, ResourceScope.ResourceGroup, new ObjectType(resourceType.FormatName(), TypeSymbolValidationFlags.Default, AzResourceTypeProvider.GetCommonResourceProperties(resourceType).Concat(new[] { new TypeProperty("properties", propertiesType, TypePropertyFlags.Required, "properties property"), }), null))); }
private static ResourceTypeComponents BasicTestsType() { var resourceType = ResourceTypeReference.Parse("Test.Rp/basicTests@2020-01-01"); return(new ResourceTypeComponents(resourceType, ResourceScope.ResourceGroup, new ObjectType(resourceType.FormatName(), TypeSymbolValidationFlags.Default, AzResourceTypeProvider.GetCommonResourceProperties(resourceType).Concat(new[] { new TypeProperty("kind", LanguageConstants.String, TypePropertyFlags.ReadOnly, "kind property"), }), null))); }
private static ResourceTypeComponents FallbackPropertyTestsType() { var resourceType = ResourceTypeReference.Parse("Test.Rp/fallbackProperties@2020-01-01"); var propertiesType = new ObjectType("Properties", TypeSymbolValidationFlags.WarnOnTypeMismatch, new[] { new TypeProperty("required", LanguageConstants.String, TypePropertyFlags.Required, "This is a property which is required."), }, null); return(new ResourceTypeComponents(resourceType, ResourceScope.ResourceGroup, new ObjectType(resourceType.FormatName(), TypeSymbolValidationFlags.Default, AzResourceTypeProvider.GetCommonResourceProperties(resourceType).Concat(new[] { new TypeProperty("properties", propertiesType, TypePropertyFlags.Required, "properties property"), }).Concat( AzResourceTypeProvider.KnownTopLevelResourceProperties().Where(p => !string.Equals(p.Name, "properties", LanguageConstants.IdentifierComparison)) .Select(p => new TypeProperty(p.Name, p.TypeReference, TypePropertyFlags.None, "Property that does something important")) ), null))); }