| // Copyright IBM Corp. 2014, 2026 | |
| // SPDX-License-Identifier: BUSL-1.1 | |
| package jsonprovider | |
| import ( | |
| "github.com/hashicorp/terraform/internal/providers" | |
| ) | |
| type Schema struct { | |
| Version uint64 `json:"version"` | |
| Block *Block `json:"block,omitempty"` | |
| } | |
| // marshalSchema is a convenience wrapper around mashalBlock. Schema version | |
| // should be set by the caller. | |
| func marshalSchema(schema providers.Schema) *Schema { | |
| if schema.Body == nil { | |
| return &Schema{} | |
| } | |
| var ret Schema | |
| ret.Block = marshalBlock(schema.Body) | |
| ret.Version = uint64(schema.Version) | |
| return &ret | |
| } | |
| func marshalSchemas(schemas map[string]providers.Schema) map[string]*Schema { | |
| if schemas == nil { | |
| return map[string]*Schema{} | |
| } | |
| ret := make(map[string]*Schema, len(schemas)) | |
| for k, v := range schemas { | |
| ret[k] = marshalSchema(v) | |
| } | |
| return ret | |
| } | |
| type IdentitySchema struct { | |
| Version uint64 `json:"version"` | |
| Attributes map[string]*IdentityAttribute `json:"attributes,omitempty"` | |
| } | |
| func marshalIdentitySchema(schema providers.Schema) *IdentitySchema { | |
| var ret IdentitySchema | |
| ret.Version = uint64(schema.IdentityVersion) | |
| ret.Attributes = make(map[string]*IdentityAttribute, len(schema.Identity.Attributes)) | |
| for k, v := range schema.Identity.Attributes { | |
| ret.Attributes[k] = marshalIdentityAttribute(v) | |
| } | |
| return &ret | |
| } | |
| func marshalIdentitySchemas(schemas map[string]providers.Schema) map[string]*IdentitySchema { | |
| if schemas == nil { | |
| return map[string]*IdentitySchema{} | |
| } | |
| ret := make(map[string]*IdentitySchema, len(schemas)) | |
| for k, v := range schemas { | |
| if v.Identity != nil { | |
| ret[k] = marshalIdentitySchema(v) | |
| } | |
| } | |
| return ret | |
| } | |
| type ActionSchema struct { | |
| ConfigSchema *Block `json:"block,omitempty"` | |
| } | |
| func marshalActionSchemas(schemas map[string]providers.ActionSchema) map[string]*ActionSchema { | |
| ret := make(map[string]*ActionSchema, len(schemas)) | |
| for name, schema := range schemas { | |
| ret[name] = marshalActionSchema(schema) | |
| } | |
| return ret | |
| } | |
| func marshalActionSchema(schema providers.ActionSchema) *ActionSchema { | |
| return &ActionSchema{ | |
| ConfigSchema: marshalBlock(schema.ConfigSchema), | |
| } | |
| } |