Documentation
¶
Index ¶
- Constants
- Variables
- func AllApiKeyPermissions() []string
- func WorkspacePermissionCodes() []string
- type AksMeteringConfig
- type AksPlatformConfig
- type AksPlatformProperties
- type AksReplicationConfig
- type AksServicePrincipalConfig
- type ApiKeyPermissionGroup
- type ApiKeyPermissions
- type ApiPermission
- type AppliedQuotaValue
- type Authorization
- type AwsAccessConfig
- type AwsAuth
- type AwsEnrollmentConfiguration
- type AwsIdentityStoreConfig
- type AwsIdentityStoreRoleMapping
- type AwsMeteringConfig
- type AwsPlatformConfig
- type AwsPlatformProperties
- type AwsReplicationConfig
- type AwsRoleMapping
- type AwsServiceUserCredential
- type AwsSsoConfig
- type AwsSsoRoleMapping
- type AwsWorkloadIdentityCredential
- type AzureAuthConfig
- type AzureCustomerAgreementConfig
- type AzureEnterpriseEnrollmentConfig
- type AzureFunction
- type AzureGraphApiCredentials
- type AzureInviteB2BUserConfig
- type AzureMeteringConfig
- type AzurePlatformConfig
- type AzurePlatformProperties
- type AzurePreProvisionedSubscriptionConfig
- type AzureReplicationConfig
- type AzureRgPlatformConfig
- type AzureRgPlatformProperties
- type AzureRgReplicationConfig
- type AzureRgRoleMapping
- type AzureRole
- type AzureRoleDefinition
- type AzureRoleMapping
- type AzureRoleMappingProperty
- type AzureServicePrincipalConfig
- type AzureSubscriptionProvisioningConfig
- type BuildingBlockDeletionMode
- type BuildingBlockLifecycleState
- type BuildingBlockStatus
- type Client
- type CustomMeteringConfig
- type CustomPlatformConfig
- type CustomPlatformProperties
- type GcpMeteringConfig
- type GcpPlatformConfig
- type GcpPlatformProperties
- type GcpPlatformRoleMapping
- type GcpReplicationConfig
- type GcpRoleMapping
- type GcpServiceAccountConfig
- type GcpServiceAccountWorkloadIdentityConfig
- type HttpError
- type KubernetesClientConfig
- type KubernetesMeteringConfig
- type KubernetesPlatformConfig
- type KubernetesPlatformProperties
- type KubernetesReplicationConfig
- type KubernetesRoleMapping
- type Link
- type ListOptions
- type MeshApiKey
- type MeshApiKeyClient
- type MeshApiKeyMetadata
- type MeshApiKeySpec
- type MeshApiKeyStatus
- type MeshAwsWifProvider
- type MeshBuildingBlock
- type MeshBuildingBlockClient
- type MeshBuildingBlockCreate
- type MeshBuildingBlockCreateMetadata
- type MeshBuildingBlockDefinition
- type MeshBuildingBlockDefinitionApprovalPolicies
- type MeshBuildingBlockDefinitionAzureDevOpsPipelineImplementation
- type MeshBuildingBlockDefinitionClient
- type MeshBuildingBlockDefinitionCloudWif
- type MeshBuildingBlockDefinitionGitHubWorkflowsImplementation
- type MeshBuildingBlockDefinitionGitLabPipelineImplementation
- type MeshBuildingBlockDefinitionImplementation
- type MeshBuildingBlockDefinitionInput
- type MeshBuildingBlockDefinitionListFilter
- type MeshBuildingBlockDefinitionManualImplementation
- type MeshBuildingBlockDefinitionMetadata
- type MeshBuildingBlockDefinitionOutput
- type MeshBuildingBlockDefinitionOutputAssignmentType
- type MeshBuildingBlockDefinitionSchedule
- type MeshBuildingBlockDefinitionSpec
- type MeshBuildingBlockDefinitionSshKnownHost
- type MeshBuildingBlockDefinitionStatus
- type MeshBuildingBlockDefinitionStatusVersion
- type MeshBuildingBlockDefinitionTerraformImplementation
- type MeshBuildingBlockDefinitionVersion
- type MeshBuildingBlockDefinitionVersionClient
- type MeshBuildingBlockDefinitionVersionListFilter
- type MeshBuildingBlockDefinitionVersionMetadata
- type MeshBuildingBlockDefinitionVersionSpec
- type MeshBuildingBlockDefinitionVersionState
- type MeshBuildingBlockDefinitionVersionStatus
- type MeshBuildingBlockDefinitionWif
- type MeshBuildingBlockIO
- type MeshBuildingBlockIOType
- type MeshBuildingBlockImplementationType
- type MeshBuildingBlockInput
- type MeshBuildingBlockInputAssignmentType
- type MeshBuildingBlockMetadata
- type MeshBuildingBlockOutput
- type MeshBuildingBlockParent
- type MeshBuildingBlockRun
- type MeshBuildingBlockRunActionClient
- func (c *MeshBuildingBlockRunActionClient) AbortRun(ctx context.Context, abort Link) error
- func (c *MeshBuildingBlockRunActionClient) ApproveRun(ctx context.Context, approve Link, predecessorRunUuid string) error
- func (c *MeshBuildingBlockRunActionClient) ReadLogs(ctx context.Context, link Link) (MeshBuildingBlockRunLogs, error)
- func (c *MeshBuildingBlockRunActionClient) ReadRun(ctx context.Context, link Link) (MeshBuildingBlockRun, error)
- type MeshBuildingBlockRunBuildingBlock
- type MeshBuildingBlockRunBuildingBlockSpec
- type MeshBuildingBlockRunClient
- type MeshBuildingBlockRunLinks
- type MeshBuildingBlockRunListFilter
- type MeshBuildingBlockRunLogs
- type MeshBuildingBlockRunMetadata
- type MeshBuildingBlockRunSpec
- type MeshBuildingBlockRunStepLog
- type MeshBuildingBlockRunner
- type MeshBuildingBlockRunnerClient
- type MeshBuildingBlockRunnerImplementationType
- type MeshBuildingBlockRunnerMetadata
- type MeshBuildingBlockRunnerSpec
- type MeshBuildingBlockScheduleFrequency
- type MeshBuildingBlockScheduleMode
- type MeshBuildingBlockSpec
- type MeshBuildingBlockStatus
- type MeshBuildingBlockTagInputTarget
- type MeshBuildingBlockType
- type MeshBuildingBlockV2
- type MeshBuildingBlockV2Client
- type MeshBuildingBlockV2DefinitionVersionRef
- type MeshBuildingBlockV2Lifecycle
- type MeshBuildingBlockV2ListFilter
- type MeshBuildingBlockV2Metadata
- type MeshBuildingBlockV2Parent
- type MeshBuildingBlockV2RunLinks
- type MeshBuildingBlockV2Spec
- type MeshBuildingBlockV2Status
- type MeshBuildingBlockV2TargetRef
- type MeshEventLog
- type MeshEventLogAuthor
- type MeshEventLogCreated
- type MeshEventLogListFilter
- type MeshEventLogMetadata
- type MeshEventLogSpec
- type MeshEventLogStatus
- type MeshEventLogWorkspaceRef
- type MeshFeatureFlag
- type MeshInfo
- type MeshInfoClient
- type MeshIntegration
- type MeshIntegrationAzureDevopsConfig
- type MeshIntegrationClient
- type MeshIntegrationConfig
- type MeshIntegrationConfigType
- type MeshIntegrationEntraIdConfig
- type MeshIntegrationGithubConfig
- type MeshIntegrationGitlabConfig
- type MeshIntegrationMetadata
- type MeshIntegrationSpec
- type MeshIntegrationStatus
- type MeshLandingZone
- type MeshLandingZoneClient
- type MeshLandingZoneCreate
- type MeshLandingZoneListQuery
- type MeshLandingZoneMetadata
- type MeshLandingZonePlatformProperties
- type MeshLandingZoneQuota
- type MeshLandingZoneSpec
- type MeshLandingZoneStatus
- type MeshLocation
- type MeshLocationClient
- type MeshLocationCreate
- type MeshLocationCreateMetadata
- type MeshLocationMetadata
- type MeshLocationSpec
- type MeshLocationStatus
- type MeshPaymentMethod
- type MeshPaymentMethodClient
- type MeshPaymentMethodCreate
- type MeshPaymentMethodCreateMetadata
- type MeshPaymentMethodMetadata
- type MeshPaymentMethodSpec
- type MeshPlatform
- type MeshPlatformClient
- type MeshPlatformListQuery
- type MeshPlatformMetadata
- type MeshPlatformMeteringProcessingConfig
- type MeshPlatformSpec
- type MeshPlatformType
- type MeshPlatformTypeClient
- type MeshPlatformTypeCreate
- type MeshPlatformTypeCreateMetadata
- type MeshPlatformTypeLifecycle
- type MeshPlatformTypeMetadata
- type MeshPlatformTypeSpec
- type MeshPlatformTypeStatus
- type MeshProject
- type MeshProjectBinding
- type MeshProjectBindingMetadata
- type MeshProjectClient
- type MeshProjectCreate
- type MeshProjectCreateMetadata
- type MeshProjectGroupBinding
- type MeshProjectGroupBindingClient
- type MeshProjectMetadata
- type MeshProjectRoleRefdeprecated
- type MeshProjectSpec
- type MeshProjectTargetRef
- type MeshProjectUserBinding
- type MeshProjectUserBindingClient
- type MeshRunnerWifProviderConfig
- type MeshRunnerWorkloadIdentityFed
- type MeshServiceInstance
- type MeshServiceInstanceClient
- type MeshServiceInstanceFilter
- type MeshServiceInstanceMetadata
- type MeshServiceInstanceSpec
- type MeshSubject
- type MeshTagDefinition
- type MeshTagDefinitionClient
- type MeshTagDefinitionMetadata
- type MeshTagDefinitionSpec
- type MeshTagDefinitionValueType
- type MeshTenant
- type MeshTenantClient
- type MeshTenantCreate
- type MeshTenantCreateMetadata
- type MeshTenantCreateSpec
- type MeshTenantLifecycle
- type MeshTenantLifecycleAction
- type MeshTenantMetadata
- type MeshTenantQuery
- type MeshTenantQuota
- type MeshTenantSpec
- type MeshTenantStatus
- type MeshTenantTags
- type MeshWifProvider
- type MeshWorkloadIdentityFederation
- type MeshWorkspace
- type MeshWorkspaceBinding
- type MeshWorkspaceBindingMetadata
- type MeshWorkspaceClient
- type MeshWorkspaceCreate
- type MeshWorkspaceCreateMetadata
- type MeshWorkspaceGroupBinding
- type MeshWorkspaceGroupBindingClient
- type MeshWorkspaceListFilter
- type MeshWorkspaceMetadata
- type MeshWorkspaceRoleRef
- type MeshWorkspaceSpec
- type MeshWorkspaceSubject
- type MeshWorkspaceTargetRef
- type MeshWorkspaceUserBinding
- type MeshWorkspaceUserBindingClient
- type NamedRef
- type OpenShiftMeteringConfig
- type OpenShiftPlatformConfig
- type OpenShiftPlatformProperties
- type OpenShiftPlatformRoleMapping
- type OpenShiftReplicationConfig
- type Page
- type PlatformAvailability
- type PlatformConfig
- type QuotaDefinition
- type RawClient
- func (r *RawClient) DoRequest(ctx context.Context, method, path string, opts ...http.RequestOption) ([]byte, error)
- func (r *RawClient) Get[M any](ctx context.Context, uuid uuid.UUID, pathElems ...string) (jsontext.Value, error)
- func (r *RawClient) List[M any](ctx context.Context, filter any, options ListOptions) iter.Seq2[jsontext.Value, error]
- type RequestQuotaValue
- type SortCriteria
- type SupportedPlatformRef
- type TagMapper
- type TagValueEmail
- type TagValueInteger
- type TagValueMultiSelect
- type TagValueNumber
- type TagValueSingleSelect
- type TagValueString
- type TenantLifecycleState
- type UuidRef
- type Version
Constants ¶
const ( MESH_BUILDING_BLOCK_IO_TYPE_STRING = "STRING" MESH_BUILDING_BLOCK_IO_TYPE_INTEGER = "INTEGER" MESH_BUILDING_BLOCK_IO_TYPE_BOOLEAN = "BOOLEAN" MESH_BUILDING_BLOCK_IO_TYPE_SINGLE_SELECT = "SINGLE_SELECT" MESH_BUILDING_BLOCK_IO_TYPE_MULTI_SELECT = "MULTI_SELECT" MESH_BUILDING_BLOCK_IO_TYPE_FILE = "FILE" MESH_BUILDING_BLOCK_IO_TYPE_LIST = "LIST" MESH_BUILDING_BLOCK_IO_TYPE_CODE = "CODE" )
const TagInputTargetSeparator = "."
TagInputTargetSeparator splits the target from the tag key. Only the first one separates them, because a tag key may contain a dot itself.
Variables ¶
var ( MeshBuildingBlockTypes = enum.Enum[MeshBuildingBlockType]{} MeshBuildingBlockTypeTenantLevel = MeshBuildingBlockTypes.Entry("TENANT_LEVEL") MeshBuildingBlockTypeWorkspaceLevel = MeshBuildingBlockTypes.Entry("WORKSPACE_LEVEL") )
var ( MeshBuildingBlockScheduleModes = enum.Enum[MeshBuildingBlockScheduleMode]{} MeshBuildingBlockScheduleModeDisabled = MeshBuildingBlockScheduleModes.Entry("DISABLED") MeshBuildingBlockScheduleModeDriftDetection = MeshBuildingBlockScheduleModes.Entry("DRIFT_DETECTION") MeshBuildingBlockScheduleModeDriftReconciliation = MeshBuildingBlockScheduleModes.Entry("DRIFT_RECONCILIATION") )
var ( MeshBuildingBlockScheduleFrequencies = enum.Enum[MeshBuildingBlockScheduleFrequency]{} MeshBuildingBlockScheduleFrequencyNone = MeshBuildingBlockScheduleFrequencies.Entry("NONE") MeshBuildingBlockScheduleFrequencyDaily = MeshBuildingBlockScheduleFrequencies.Entry("DAILY") MeshBuildingBlockScheduleFrequencyWeekly = MeshBuildingBlockScheduleFrequencies.Entry("WEEKLY") )
var ( MeshBuildingBlockDefinitionVersionStates = enum.Enum[MeshBuildingBlockDefinitionVersionState]{} MeshBuildingBlockDefinitionVersionStateDraft = MeshBuildingBlockDefinitionVersionStates.Entry("DRAFT") MeshBuildingBlockDefinitionVersionStateReleased = MeshBuildingBlockDefinitionVersionStates.Entry("RELEASED") )
var ( BuildingBlockDeletionModes = enum.Enum[BuildingBlockDeletionMode]{} BuildingBlockDeletionModeDelete = BuildingBlockDeletionModes.Entry("DELETE") BuildingBlockDeletionModePurge = BuildingBlockDeletionModes.Entry("PURGE") )
var ( MeshBuildingBlockIOTypes = enum.Enum[MeshBuildingBlockIOType]{} MeshBuildingBlockIOTypeString = MeshBuildingBlockIOTypes.Entry("STRING") MeshBuildingBlockIOTypeCode = MeshBuildingBlockIOTypes.Entry("CODE") MeshBuildingBlockIOTypeInteger = MeshBuildingBlockIOTypes.Entry("INTEGER") MeshBuildingBlockIOTypeBoolean = MeshBuildingBlockIOTypes.Entry("BOOLEAN") MeshBuildingBlockIOTypeFile = MeshBuildingBlockIOTypes.Entry("FILE") MeshBuildingBlockIOTypeList = MeshBuildingBlockIOTypes.Entry("LIST") MeshBuildingBlockIOTypeSingleSelect = MeshBuildingBlockIOTypes.Entry("SINGLE_SELECT") MeshBuildingBlockIOTypeMultiSelect = MeshBuildingBlockIOTypes.Entry("MULTI_SELECT") // MeshBuildingBlockIOTypeJson is deliberately not an entry of MeshBuildingBlockIOTypes: a // definition input declaring it describes a form of its own, through the accompanying JsonSchema. // What that form produces is JSON text, which a building block's own inputs report as CODE. MeshBuildingBlockIOTypeJson = enum.Entry[MeshBuildingBlockIOType]("JSON") )
var ( MeshBuildingBlockInputAssignmentTypes = enum.Enum[MeshBuildingBlockInputAssignmentType]{} MeshBuildingBlockInputAssignmentTypeAuthor = MeshBuildingBlockInputAssignmentTypes.Entry("AUTHOR") MeshBuildingBlockInputAssignmentTypeUserInput = MeshBuildingBlockInputAssignmentTypes.Entry("USER_INPUT") MeshBuildingBlockInputAssignmentTypePlatformOperatorManualInput = MeshBuildingBlockInputAssignmentTypes.Entry("PLATFORM_OPERATOR_MANUAL_INPUT") MeshBuildingBlockInputAssignmentTypeBuildingBlockOutput = MeshBuildingBlockInputAssignmentTypes.Entry("BUILDING_BLOCK_OUTPUT") MeshBuildingBlockInputAssignmentTypePlatformTenantID = MeshBuildingBlockInputAssignmentTypes.Entry("PLATFORM_TENANT_ID") MeshBuildingBlockInputAssignmentTypeMeshstackTenantUuid = MeshBuildingBlockInputAssignmentTypes.Entry("MESHSTACK_TENANT_UUID") MeshBuildingBlockInputAssignmentTypeWorkspaceIdentifier = MeshBuildingBlockInputAssignmentTypes.Entry("WORKSPACE_IDENTIFIER") MeshBuildingBlockInputAssignmentTypeProjectIdentifier = MeshBuildingBlockInputAssignmentTypes.Entry("PROJECT_IDENTIFIER") MeshBuildingBlockInputAssignmentTypeFullPlatformIdentifier = MeshBuildingBlockInputAssignmentTypes.Entry("FULL_PLATFORM_IDENTIFIER") MeshBuildingBlockInputAssignmentTypeTenantBuildingBlockUuid = MeshBuildingBlockInputAssignmentTypes.Entry("TENANT_BUILDING_BLOCK_UUID") MeshBuildingBlockInputAssignmentTypeStatic = MeshBuildingBlockInputAssignmentTypes.Entry("STATIC") MeshBuildingBlockInputAssignmentTypeUserPermissions = MeshBuildingBlockInputAssignmentTypes.Entry("USER_PERMISSIONS") MeshBuildingBlockInputAssignmentTypeTag = MeshBuildingBlockInputAssignmentTypes.Entry("TAG") MeshBuildingBlockInputAssignmentTypePaymentMethod = MeshBuildingBlockInputAssignmentTypes.Entry("PAYMENT_METHOD") )
var ( MeshBuildingBlockTagInputTargets = enum.Enum[MeshBuildingBlockTagInputTarget]{} MeshBuildingBlockTagInputTargetWorkspace = MeshBuildingBlockTagInputTargets.Entry("WORKSPACE") MeshBuildingBlockTagInputTargetProject = MeshBuildingBlockTagInputTargets.Entry("PROJECT") MeshBuildingBlockTagInputTargetPaymentMethod = MeshBuildingBlockTagInputTargets.Entry("PAYMENT_METHOD") MeshBuildingBlockTagInputTargetLandingZone = MeshBuildingBlockTagInputTargets.Entry("LANDING_ZONE") )
var ( MeshBuildingBlockDefinitionOutputAssignmentTypes = enum.Enum[MeshBuildingBlockDefinitionOutputAssignmentType]{} MeshBuildingBlockDefinitionOutputAssignmentTypeNone = MeshBuildingBlockDefinitionOutputAssignmentTypes.Entry("NONE") MeshBuildingBlockDefinitionOutputAssignmentTypePlatformTenantID = MeshBuildingBlockDefinitionOutputAssignmentTypes.Entry("PLATFORM_TENANT_ID") MeshBuildingBlockDefinitionOutputAssignmentTypeSignInURL = MeshBuildingBlockDefinitionOutputAssignmentTypes.Entry("SIGN_IN_URL") MeshBuildingBlockDefinitionOutputAssignmentTypeResourceURL = MeshBuildingBlockDefinitionOutputAssignmentTypes.Entry("RESOURCE_URL") MeshBuildingBlockDefinitionOutputAssignmentTypeSummary = MeshBuildingBlockDefinitionOutputAssignmentTypes.Entry("SUMMARY") )
var ( MeshBuildingBlockImplementationTypes = enum.Enum[MeshBuildingBlockImplementationType]{} MeshBuildingBlockImplementationTypeManual = MeshBuildingBlockImplementationTypes.Entry("manual") MeshBuildingBlockImplementationTypeTerraform = MeshBuildingBlockImplementationTypes.Entry("terraform") MeshBuildingBlockImplementationTypeGithubWorkflows = MeshBuildingBlockImplementationTypes.Entry("githubWorkflows") MeshBuildingBlockImplementationTypeGitlabPipeline = MeshBuildingBlockImplementationTypes.Entry("gitlabPipeline") MeshBuildingBlockImplementationTypeAzureDevOpsPipeline = MeshBuildingBlockImplementationTypes.Entry("azureDevOpsPipeline") )
var ( BuildingBlockLifecycleStates = enum.Enum[BuildingBlockLifecycleState]{} BuildingBlockLifecycleStateActive = BuildingBlockLifecycleStates.Entry("ACTIVE") BuildingBlockLifecycleStateMarkedForDeletion = BuildingBlockLifecycleStates.Entry("MARKED_FOR_DELETION") BuildingBlockLifecycleStateDeleted = BuildingBlockLifecycleStates.Entry("DELETED") )
var ( BuildingBlockStatuses = enum.Enum[BuildingBlockStatus]{} BuildingBlockStatusWaitingForDependentInput = BuildingBlockStatuses.Entry("WAITING_FOR_DEPENDENT_INPUT") BuildingBlockStatusWaitingForOperatorInput = BuildingBlockStatuses.Entry("WAITING_FOR_OPERATOR_INPUT") BuildingBlockStatusWaitingForUserInput = BuildingBlockStatuses.Entry("WAITING_FOR_USER_INPUT") BuildingBlockStatusWaitingForApproval = BuildingBlockStatuses.Entry("WAITING_FOR_APPROVAL") BuildingBlockStatusPending = BuildingBlockStatuses.Entry("PENDING") BuildingBlockStatusInProgress = BuildingBlockStatuses.Entry("IN_PROGRESS") BuildingBlockStatusSucceeded = BuildingBlockStatuses.Entry("SUCCEEDED") BuildingBlockStatusFailed = BuildingBlockStatuses.Entry("FAILED") BuildingBlockStatusAborted = BuildingBlockStatuses.Entry("ABORTED") )
var ( MeshIntegrationConfigTypes = enum.Enum[MeshIntegrationConfigType]{} MeshIntegrationConfigTypeGithub = MeshIntegrationConfigTypes.Entry("github") MeshIntegrationConfigTypeGitlab = MeshIntegrationConfigTypes.Entry("gitlab") MeshIntegrationConfigTypeAzureDevops = MeshIntegrationConfigTypes.Entry("azuredevops") MeshIntegrationConfigTypeEntraId = MeshIntegrationConfigTypes.Entry("entraid") )
var ( MeshFeatureFlags = enum.Enum[MeshFeatureFlag]{} MeshFeatureFlagFourEyesRoleApproval = MeshFeatureFlags.Entry("four_eyes_role_approval") )
var ( TenantLifecycleStates = enum.Enum[TenantLifecycleState]{} TenantLifecycleStateActive = TenantLifecycleStates.Entry("ACTIVE") TenantLifecycleStateMarkedForDeletion = TenantLifecycleStates.Entry("MARKED_FOR_DELETION") TenantLifecycleStateDeleted = TenantLifecycleStates.Entry("DELETED") )
var MeshBuildingBlockDefinitionInputTypes = MeshBuildingBlockIOTypes.With(MeshBuildingBlockIOTypeJson)
var MeshBuildingBlockOutputIOTypes = enum.Of( MeshBuildingBlockIOTypeString, MeshBuildingBlockIOTypeCode, MeshBuildingBlockIOTypeInteger, MeshBuildingBlockIOTypeBoolean, )
var MeshBuildingBlockRunnerImplementationTypes = []string{ string(MeshBuildingBlockRunnerImplementationTypeTerraform), string(MeshBuildingBlockRunnerImplementationTypeGithubWorkflow), string(MeshBuildingBlockRunnerImplementationTypeGitlabPipeline), string(MeshBuildingBlockRunnerImplementationTypeAzureDevopsPipeline), string(MeshBuildingBlockRunnerImplementationTypeManual), string(MeshBuildingBlockRunnerImplementationTypeAll), }
var MeshObjectKind = meshObjectKind{
ApiKey: "meshApiKey",
BuildingBlock: "meshBuildingBlock",
BuildingBlockRun: "meshBuildingBlockRun",
BuildingBlockDefinition: "meshBuildingBlockDefinition",
BuildingBlockDefinitionVersion: "meshBuildingBlockDefinitionVersion",
BuildingBlockRunner: "meshBuildingBlockRunner",
EventLog: "meshEventLog",
Integration: "meshIntegration",
LandingZone: "meshLandingZone",
Location: "meshLocation",
PaymentMethod: "meshPaymentMethod",
Platform: "meshPlatform",
PlatformType: "meshPlatformType",
Project: "meshProject",
ProjectGroupBinding: "meshProjectGroupBinding",
ProjectRole: "meshProjectRole",
ProjectUserBinding: "meshProjectUserBinding",
ServiceInstance: "meshServiceInstance",
TagDefinition: "meshTagDefinition",
Tenant: "meshTenant",
Workspace: "meshWorkspace",
WorkspaceGroupBinding: "meshWorkspaceGroupBinding",
WorkspaceUserBinding: "meshWorkspaceUserBinding",
}
var MinMeshStackVersion = version.MustParse("2026.36.0")
var Permissions = ApiKeyPermissions{ {Name: "API Keys", Actions: [][]ApiPermission{ {"APIKEY_DELETE", "ADM_APIKEY_DELETE"}, {"APIKEY_LIST", "ADM_APIKEY_LIST"}, {"APIKEY_SAVE", "ADM_APIKEY_SAVE"}, }}, {Name: "Building Blocks", Actions: [][]ApiPermission{ {"BUILDINGBLOCK_DELETE", "ADM_BUILDINGBLOCK_DELETE"}, {"BUILDINGBLOCK_LIST", "ADM_BUILDINGBLOCK_LIST", "MANAGED_BUILDINGBLOCK_LIST"}, {"BUILDINGBLOCK_SAVE", "ADM_BUILDINGBLOCK_SAVE", "MANAGED_BUILDINGBLOCK_SAVE"}, }}, {Name: "Building Block Definitions", Actions: [][]ApiPermission{ {"BUILDINGBLOCKDEFINITION_DELETE", "ADM_BUILDINGBLOCKDEFINITION_DELETE"}, {"BUILDINGBLOCKDEFINITION_LIST", "ADM_BUILDINGBLOCKDEFINITION_LIST"}, {"BUILDINGBLOCKDEFINITION_SAVE", "ADM_BUILDINGBLOCKDEFINITION_SAVE"}, {"ADM_REVIEW_PUBLICATION"}, }}, {Name: "Building Block Runs", Actions: [][]ApiPermission{ {"MANAGED_BUILDINGBLOCKRUN_LIST", "ADM_BUILDINGBLOCKRUN_LIST"}, {"MANAGED_BUILDINGBLOCKRUN_SAVE", "ADM_BUILDINGBLOCKRUN_SAVE"}, {"MANAGED_BUILDINGBLOCKRUNSOURCE_SAVE", "ADM_BUILDINGBLOCKRUNSOURCE_SAVE"}, {"MANAGED_BUILDINGBLOCKRUNARTIFACT_LIST", "ADM_BUILDINGBLOCKRUNARTIFACT_LIST"}, {"MANAGED_BUILDINGBLOCKRUNARTIFACT_SAVE", "ADM_BUILDINGBLOCKRUNARTIFACT_SAVE"}, }}, {Name: "Building Block Runners", Actions: [][]ApiPermission{ {"BUILDINGBLOCKRUNNER_DELETE", "ADM_BUILDINGBLOCKRUNNER_DELETE"}, {"BUILDINGBLOCKRUNNER_LIST", "ADM_BUILDINGBLOCKRUNNER_LIST"}, {"BUILDINGBLOCKRUNNER_SAVE", "ADM_BUILDINGBLOCKRUNNER_SAVE"}, }}, {Name: "Communication Definitions", Actions: [][]ApiPermission{ {"COMMUNICATIONDEFINITION_DELETE", "ADM_COMMUNICATIONDEFINITION_DELETE"}, {"COMMUNICATIONDEFINITION_LIST", "ADM_COMMUNICATIONDEFINITION_LIST"}, {"COMMUNICATIONDEFINITION_SAVE", "ADM_COMMUNICATIONDEFINITION_SAVE"}, }}, {Name: "Communications", Actions: [][]ApiPermission{ {"COMMUNICATION_DELETE", "ADM_COMMUNICATION_DELETE"}, {"COMMUNICATION_LIST", "ADM_COMMUNICATION_LIST"}, {"COMMUNICATION_SAVE", "ADM_COMMUNICATION_SAVE"}, }}, {Name: "Event Logs", Actions: [][]ApiPermission{ {"EVENTLOG_LIST", "ADM_EVENTLOG_LIST"}, }}, {Name: "Integrations", Actions: [][]ApiPermission{ {"INTEGRATION_DELETE", "ADM_INTEGRATION_DELETE"}, {"INTEGRATION_LIST", "ADM_INTEGRATION_LIST"}, {"INTEGRATION_SAVE", "ADM_INTEGRATION_SAVE"}, }}, {Name: "Landing Zones", Actions: [][]ApiPermission{ {"LANDINGZONE_DELETE", "ADM_LANDINGZONE_DELETE"}, {"LANDINGZONE_LIST", "ADM_LANDINGZONE_LIST"}, {"LANDINGZONE_SAVE", "ADM_LANDINGZONE_SAVE"}, }}, {Name: "Payment Methods", Actions: [][]ApiPermission{ {"ADM_PAYMENTMETHOD_DELETE"}, {"PAYMENTMETHOD_LIST", "ADM_PAYMENTMETHOD_LIST"}, {"ADM_PAYMENTMETHOD_SAVE"}, }}, {Name: "Platform Instances, Platform Types, Locations", Actions: [][]ApiPermission{ {"PLATFORMINSTANCE_DELETE", "ADM_PLATFORMINSTANCE_DELETE"}, {"PLATFORMINSTANCE_LIST", "ADM_PLATFORMINSTANCE_LIST"}, {"PLATFORMINSTANCE_SAVE", "ADM_PLATFORMINSTANCE_SAVE"}, }}, {Name: "Project Role Bindings", Actions: [][]ApiPermission{ {"PROJECTPRINCIPALROLE_DELETE", "ADM_PROJECTPRINCIPALROLE_DELETE"}, {"PROJECTPRINCIPALROLE_LIST", "ADM_PROJECTPRINCIPALROLE_LIST"}, {"PROJECTPRINCIPALROLE_SAVE", "ADM_PROJECTPRINCIPALROLE_SAVE"}, }}, {Name: "Project Roles", Actions: [][]ApiPermission{ {"ADM_PROJECTROLE_DELETE"}, {"ADM_PROJECTROLE_SAVE"}, }}, {Name: "Projects", Actions: [][]ApiPermission{ {"PROJECT_DELETE", "ADM_PROJECT_DELETE"}, {"PROJECT_LIST", "ADM_PROJECT_LIST"}, {"PROJECT_SAVE", "ADM_PROJECT_SAVE"}, }}, {Name: "Service Instances", Actions: [][]ApiPermission{ {"SERVICEINSTANCE_DELETE", "ADM_SERVICEINSTANCE_DELETE"}, {"SERVICEINSTANCE_LIST", "ADM_SERVICEINSTANCE_LIST"}, {"SERVICEINSTANCE_SAVE", "ADM_SERVICEINSTANCE_SAVE"}, }}, {Name: "Tag Definitions", Actions: [][]ApiPermission{ {"ADM_TAGDEFINITION_DELETE"}, {"ADM_TAGDEFINITION_LIST"}, {"ADM_TAGDEFINITION_SAVE"}, }}, {Name: "Tenant Usage Reports", Actions: [][]ApiPermission{ {"TENANTUSAGEREPORT_LIST", "ADM_TENANTUSAGEREPORT_LIST"}, }}, {Name: "Tenants", Actions: [][]ApiPermission{ {"TENANT_DELETE", "ADM_TENANT_DELETE"}, {"MANAGED_TENANT_IMPORT", "ADM_TENANT_IMPORT"}, {"TENANT_LIST", "ADM_TENANT_LIST"}, {"TENANT_SAVE", "ADM_TENANT_SAVE"}, {"MANAGED_TENANTDELETION_APPROVE", "ADM_TENANTDELETION_APPROVE"}, }}, {Name: "Terraform States", Actions: [][]ApiPermission{ {"TFSTATE_DELETE", "ADM_TFSTATE_DELETE", "MANAGED_TFSTATE_DELETE"}, {"TFSTATE_LIST", "ADM_TFSTATE_LIST", "MANAGED_TFSTATE_LIST"}, {"TFSTATE_SAVE", "ADM_TFSTATE_SAVE", "MANAGED_TFSTATE_SAVE"}, }}, {Name: "Users", Actions: [][]ApiPermission{ {"ADM_USER_DELETE"}, {"ADM_USER_LIST"}, {"ADM_USER_SAVE"}, }}, {Name: "Workspace Role Bindings", Actions: [][]ApiPermission{ {"WORKSPACEPRINCIPALBINDING_DELETE", "ADM_WORKSPACEPRINCIPALBINDING_DELETE"}, {"WORKSPACEPRINCIPALBINDING_LIST", "ADM_WORKSPACEPRINCIPALBINDING_LIST"}, {"WORKSPACEPRINCIPALBINDING_SAVE", "ADM_WORKSPACEPRINCIPALBINDING_SAVE"}, }}, {Name: "Workspace User Groups", Actions: [][]ApiPermission{ {"ADM_WORKSPACEUSERGROUP_DELETE"}, {"WORKSPACEUSERGROUP_LIST", "ADM_WORKSPACEUSERGROUP_LIST"}, {"ADM_WORKSPACEUSERGROUP_SAVE"}, }}, {Name: "Workspaces", Actions: [][]ApiPermission{ {"WORKSPACE_DELETE", "ADM_WORKSPACE_DELETE"}, {"WORKSPACE_LIST", "ADM_WORKSPACE_LIST"}, {"WORKSPACE_SAVE", "ADM_WORKSPACE_SAVE"}, }}, }
Permissions must stay in step with ApiKeyRightMetadataRegistry in the meshStack backend, which https://docs.meshcloud.io/api/authentication/api-permissions/ documents.
Functions ¶
func AllApiKeyPermissions ¶
func AllApiKeyPermissions() []string
func WorkspacePermissionCodes ¶
func WorkspacePermissionCodes() []string
Types ¶
type AksMeteringConfig ¶
type AksMeteringConfig struct {
ClientConfig KubernetesClientConfig `json:"clientConfig" tfsdk:"client_config"`
Processing MeshPlatformMeteringProcessingConfig `json:"processing" tfsdk:"processing"`
}
type AksPlatformConfig ¶
type AksPlatformConfig struct {
BaseUrl string `json:"baseUrl" tfsdk:"base_url"`
DisableSslValidation bool `json:"disableSslValidation" tfsdk:"disable_ssl_validation"`
Replication *AksReplicationConfig `json:"replication" tfsdk:"replication"`
Metering *AksMeteringConfig `json:"metering,omitzero" tfsdk:"metering"`
}
type AksPlatformProperties ¶
type AksPlatformProperties struct {
KubernetesRoleMappings []KubernetesRoleMapping `json:"kubernetesRoleMappings" tfsdk:"kubernetes_role_mappings"`
}
type AksReplicationConfig ¶
type AksReplicationConfig struct {
AccessToken types.Secret `json:"accessToken" tfsdk:"access_token"`
NamespaceNamePattern string `json:"namespaceNamePattern" tfsdk:"namespace_name_pattern"`
GroupNamePattern string `json:"groupNamePattern" tfsdk:"group_name_pattern"`
ServicePrincipal AksServicePrincipalConfig `json:"servicePrincipal" tfsdk:"service_principal"`
AksSubscriptionId string `json:"aksSubscriptionId" tfsdk:"aks_subscription_id"`
AksClusterName string `json:"aksClusterName" tfsdk:"aks_cluster_name"`
AksResourceGroup string `json:"aksResourceGroup" tfsdk:"aks_resource_group"`
RedirectUrl *string `json:"redirectUrl,omitzero" tfsdk:"redirect_url"`
SendAzureInvitationMail bool `json:"sendAzureInvitationMail" tfsdk:"send_azure_invitation_mail"`
UserLookupStrategy string `json:"userLookUpStrategy" tfsdk:"user_lookup_strategy"`
AdministrativeUnitId *string `json:"administrativeUnitId,omitzero" tfsdk:"administrative_unit_id"`
}
type AksServicePrincipalConfig ¶
type AksServicePrincipalConfig struct {
EntraTenant string `json:"entraTenant" tfsdk:"entra_tenant"`
ObjectId string `json:"objectId" tfsdk:"object_id"`
ClientId string `json:"clientId" tfsdk:"client_id"`
Auth AzureAuthConfig `json:"auth" tfsdk:"auth"`
}
type ApiKeyPermissionGroup ¶ added in v0.3.0
type ApiKeyPermissionGroup struct {
Name string
Actions [][]ApiPermission
}
ApiKeyPermissionGroup holds the permissions of one resource: one entry per action, and in that the scope variants of the action, such as TENANT_DELETE and ADM_TENANT_DELETE.
func (ApiKeyPermissionGroup) Patterns ¶ added in v0.3.0
func (g ApiKeyPermissionGroup) Patterns() []string
Patterns merges the codes of g into patterns: `[ADM_]TENANT_(DELETE|LIST)` stands for TENANT_DELETE, TENANT_LIST, ADM_TENANT_DELETE and ADM_TENANT_LIST, and `(MANAGED_|ADM_)TENANT_IMPORT` for MANAGED_TENANT_IMPORT and ADM_TENANT_IMPORT. A pattern never stands for a code that is not in g.
type ApiKeyPermissions ¶
type ApiKeyPermissions []ApiKeyPermissionGroup
func (ApiKeyPermissions) AllCodes ¶
func (p ApiKeyPermissions) AllCodes() []string
func (ApiKeyPermissions) MarkdownString ¶
func (p ApiKeyPermissions) MarkdownString() string
func (ApiKeyPermissions) Only ¶ added in v0.3.0
func (p ApiKeyPermissions) Only(codes []ApiPermission) ApiKeyPermissions
Only keeps the codes of p that are among codes, in the order of p, and puts the codes p does not know into a last group named Other.
func (ApiKeyPermissions) WorkspaceCodes ¶
func (p ApiKeyPermissions) WorkspaceCodes() []string
WorkspaceCodes leaves out only the ADM_ codes, so the MANAGED_ codes are part of it.
type ApiPermission ¶
type ApiPermission string
type AppliedQuotaValue ¶
type AppliedQuotaValue struct {
Value int64 `json:"value" tfsdk:"value"`
}
AppliedQuotaValue is not merged with RequestQuotaValue; see there for why.
type Authorization ¶
type Authorization = http.Authorization
type AwsAccessConfig ¶
type AwsAccessConfig struct {
OrganizationRootAccountRole string `json:"organizationRootAccountRole" tfsdk:"organization_root_account_role"`
OrganizationRootAccountExternalId *string `json:"organizationRootAccountExternalId,omitzero" tfsdk:"organization_root_account_external_id"`
Auth AwsAuth `json:"auth" tfsdk:"auth"`
}
type AwsAuth ¶
type AwsAuth struct {
Type string `json:"type" tfsdk:"type"`
Credential *AwsServiceUserCredential `json:"credential,omitzero" tfsdk:"credential"`
WorkloadIdentity *AwsWorkloadIdentityCredential `json:"workloadIdentity,omitzero" tfsdk:"workload_identity"`
}
type AwsIdentityStoreConfig ¶
type AwsIdentityStoreConfig struct {
IdentityStoreId string `json:"identityStoreId" tfsdk:"identity_store_id"`
Arn string `json:"arn" tfsdk:"arn"`
GroupNamePattern string `json:"groupNamePattern" tfsdk:"group_name_pattern"`
AwsRoleMappings types.Set[AwsIdentityStoreRoleMapping] `json:"awsRoleMappings" tfsdk:"aws_role_mappings"`
SignInUrl string `json:"signInUrl" tfsdk:"sign_in_url"`
}
type AwsMeteringConfig ¶
type AwsMeteringConfig struct {
AccessConfig AwsAccessConfig `json:"accessConfig" tfsdk:"access_config"`
Filter string `json:"filter" tfsdk:"filter"`
ReservedInstanceFairChargeback bool `json:"reservedInstanceFairChargeback" tfsdk:"reserved_instance_fair_chargeback"`
SavingsPlanFairChargeback bool `json:"savingsPlanFairChargeback" tfsdk:"savings_plan_fair_chargeback"`
Processing MeshPlatformMeteringProcessingConfig `json:"processing" tfsdk:"processing"`
}
type AwsPlatformConfig ¶
type AwsPlatformConfig struct {
Region string `json:"region,omitempty" tfsdk:"region"`
Replication *AwsReplicationConfig `json:"replication,omitzero" tfsdk:"replication"`
Metering *AwsMeteringConfig `json:"metering,omitzero" tfsdk:"metering"`
}
type AwsPlatformProperties ¶
type AwsPlatformProperties struct {
AwsTargetOrgUnitId string `json:"awsTargetOrgUnitId" tfsdk:"aws_target_org_unit_id"`
AwsEnrollAccount bool `json:"awsEnrollAccount" tfsdk:"aws_enroll_account"`
AwsLambdaArn *string `json:"awsLambdaArn" tfsdk:"aws_lambda_arn"`
AwsRoleMappings []AwsRoleMapping `json:"awsRoleMappings" tfsdk:"aws_role_mappings"`
}
type AwsReplicationConfig ¶
type AwsReplicationConfig struct {
AccessConfig AwsAccessConfig `json:"accessConfig" tfsdk:"access_config"`
WaitForExternalAvm bool `json:"waitForExternalAvm" tfsdk:"wait_for_external_avm"`
AutomationAccountRole string `json:"automationAccountRole" tfsdk:"automation_account_role"`
AutomationAccountExternalId *string `json:"automationAccountExternalId,omitzero" tfsdk:"automation_account_external_id"`
AccountAccessRole string `json:"accountAccessRole" tfsdk:"account_access_role"`
AccountAliasPattern string `json:"accountAliasPattern" tfsdk:"account_alias_pattern"`
EnforceAccountAlias bool `json:"enforceAccountAlias" tfsdk:"enforce_account_alias"`
AccountEmailPattern string `json:"accountEmailPattern" tfsdk:"account_email_pattern"`
TenantTags *MeshTenantTags `json:"tenantTags,omitzero" tfsdk:"tenant_tags"`
AwsSso *AwsSsoConfig `json:"awsSso,omitzero" tfsdk:"aws_sso"`
AwsIdentityStore *AwsIdentityStoreConfig `json:"awsIdentityStore,omitzero" tfsdk:"aws_identity_store"`
EnrollmentConfiguration *AwsEnrollmentConfiguration `json:"enrollmentConfiguration,omitzero" tfsdk:"enrollment_configuration"`
SelfDowngradeAccessRole bool `json:"selfDowngradeAccessRole" tfsdk:"self_downgrade_access_role"`
SkipUserGroupPermissionCleanup bool `json:"skipUserGroupPermissionCleanup" tfsdk:"skip_user_group_permission_cleanup"`
AllowHierarchicalOrganizationalUnitAssignment bool `json:"allowHierarchicalOrganizationalUnitAssignment" tfsdk:"allow_hierarchical_organizational_unit_assignment"`
}
type AwsRoleMapping ¶
type AwsSsoConfig ¶
type AwsSsoConfig struct {
ScimEndpoint string `json:"scimEndpoint" tfsdk:"scim_endpoint"`
Arn string `json:"arn" tfsdk:"arn"`
GroupNamePattern string `json:"groupNamePattern" tfsdk:"group_name_pattern"`
SsoAccessToken types.Secret `json:"ssoAccessToken" tfsdk:"sso_access_token"`
AwsRoleMappings types.Set[AwsSsoRoleMapping] `json:"awsRoleMappings" tfsdk:"aws_role_mappings"`
SignInUrl string `json:"signInUrl" tfsdk:"sign_in_url"`
}
type AwsSsoRoleMapping ¶
type AwsWorkloadIdentityCredential ¶
type AwsWorkloadIdentityCredential struct {
RoleArn string `json:"roleArn" tfsdk:"role_arn"`
}
type AzureAuthConfig ¶
type AzureCustomerAgreementConfig ¶
type AzureCustomerAgreementConfig struct {
SourceServicePrincipal AzureGraphApiCredentials `json:"sourceServicePrincipal" tfsdk:"source_service_principal"`
DestinationEntraId string `json:"destinationEntraId" tfsdk:"destination_entra_id"`
SourceEntraTenant string `json:"sourceEntraTenant" tfsdk:"source_entra_tenant"`
BillingScope string `json:"billingScope" tfsdk:"billing_scope"`
SubscriptionCreationErrorCooldownSec *int64 `json:"subscriptionCreationErrorCooldownSec,omitzero" tfsdk:"subscription_creation_error_cooldown_sec"`
}
type AzureEnterpriseEnrollmentConfig ¶
type AzureEnterpriseEnrollmentConfig struct {
EnrollmentAccountId string `json:"enrollmentAccountId" tfsdk:"enrollment_account_id"`
SubscriptionOfferType string `json:"subscriptionOfferType" tfsdk:"subscription_offer_type"`
UseLegacySubscriptionEnrollment bool `json:"useLegacySubscriptionEnrollment" tfsdk:"use_legacy_subscription_enrollment"`
SubscriptionCreationErrorCooldownSec *int64 `json:"subscriptionCreationErrorCooldownSec,omitzero" tfsdk:"subscription_creation_error_cooldown_sec"`
}
type AzureFunction ¶
type AzureGraphApiCredentials ¶
type AzureGraphApiCredentials struct {
ClientId string `json:"clientId" tfsdk:"client_id"`
Auth AzureAuthConfig `json:"auth" tfsdk:"auth"`
}
type AzureMeteringConfig ¶
type AzureMeteringConfig struct {
ServicePrincipal AzureServicePrincipalConfig `json:"servicePrincipal" tfsdk:"service_principal"`
Processing MeshPlatformMeteringProcessingConfig `json:"processing" tfsdk:"processing"`
}
type AzurePlatformConfig ¶
type AzurePlatformConfig struct {
EntraTenant string `json:"entraTenant" tfsdk:"entra_tenant"`
Replication *AzureReplicationConfig `json:"replication,omitzero" tfsdk:"replication"`
Metering *AzureMeteringConfig `json:"metering,omitzero" tfsdk:"metering"`
}
type AzurePlatformProperties ¶
type AzurePlatformProperties struct {
AzureRoleMappings []AzureRoleMappingProperty `json:"azureRoleMappings" tfsdk:"azure_role_mappings"`
AzureManagementGroupId string `json:"azureManagementGroupId" tfsdk:"azure_management_group_id"`
}
type AzurePreProvisionedSubscriptionConfig ¶
type AzurePreProvisionedSubscriptionConfig struct {
UnusedSubscriptionNamePrefix string `json:"unusedSubscriptionNamePrefix" tfsdk:"unused_subscription_name_prefix"`
}
type AzureReplicationConfig ¶
type AzureReplicationConfig struct {
ServicePrincipal AzureServicePrincipalConfig `json:"servicePrincipal" tfsdk:"service_principal"`
UpdateSubscriptionName bool `json:"updateSubscriptionName" tfsdk:"update_subscription_name"`
Provisioning *AzureSubscriptionProvisioningConfig `json:"provisioning,omitzero" tfsdk:"provisioning"`
B2bUserInvitation *AzureInviteB2BUserConfig `json:"b2bUserInvitation,omitzero" tfsdk:"b2b_user_invitation"`
SubscriptionNamePattern string `json:"subscriptionNamePattern" tfsdk:"subscription_name_pattern"`
GroupNamePattern string `json:"groupNamePattern" tfsdk:"group_name_pattern"`
AzureRoleMappings types.Set[AzureRoleMapping] `json:"azureRoleMappings" tfsdk:"azure_role_mappings"`
TenantTags *MeshTenantTags `json:"tenantTags,omitzero" tfsdk:"tenant_tags"`
UserLookUpStrategy string `json:"userLookUpStrategy" tfsdk:"user_lookup_strategy"`
SkipUserGroupPermissionCleanup bool `json:"skipUserGroupPermissionCleanup" tfsdk:"skip_user_group_permission_cleanup"`
AdministrativeUnitId *string `json:"administrativeUnitId,omitzero" tfsdk:"administrative_unit_id"`
AllowHierarchicalManagementGroupAssignment bool `json:"allowHierarchicalManagementGroupAssignment" tfsdk:"allow_hierarchical_management_group_assignment"`
}
type AzureRgPlatformConfig ¶
type AzureRgPlatformConfig struct {
EntraTenant string `json:"entraTenant" tfsdk:"entra_tenant"`
Replication *AzureRgReplicationConfig `json:"replication,omitzero" tfsdk:"replication"`
}
type AzureRgPlatformProperties ¶
type AzureRgPlatformProperties struct {
AzureRgLocation string `json:"azureRgLocation" tfsdk:"azure_rg_location"`
AzureRgRoleMappings []AzureRgRoleMapping `json:"azureRgRoleMappings" tfsdk:"azure_rg_role_mappings"`
AzureFunction *AzureFunction `json:"azureFunction,omitzero" tfsdk:"azure_function"`
}
type AzureRgReplicationConfig ¶
type AzureRgReplicationConfig struct {
ServicePrincipal AzureServicePrincipalConfig `json:"servicePrincipal" tfsdk:"service_principal"`
Subscription string `json:"subscription" tfsdk:"subscription"`
ResourceGroupNamePattern string `json:"resourceGroupNamePattern" tfsdk:"resource_group_name_pattern"`
UserGroupNamePattern string `json:"userGroupNamePattern" tfsdk:"user_group_name_pattern"`
B2bUserInvitation *AzureInviteB2BUserConfig `json:"b2bUserInvitation,omitzero" tfsdk:"b2b_user_invitation"`
UserLookUpStrategy string `json:"userLookUpStrategy" tfsdk:"user_lookup_strategy"`
TenantTags *MeshTenantTags `json:"tenantTags,omitzero" tfsdk:"tenant_tags"`
SkipUserGroupPermissionCleanup bool `json:"skipUserGroupPermissionCleanup" tfsdk:"skip_user_group_permission_cleanup"`
AdministrativeUnitId *string `json:"administrativeUnitId,omitzero" tfsdk:"administrative_unit_id"`
}
type AzureRgRoleMapping ¶
type AzureRoleDefinition ¶
type AzureRoleMapping ¶
type AzureRoleMappingProperty ¶
type AzureRoleMappingProperty struct {
MeshProjectRoleRef NamedRef `json:"projectRoleRef" tfsdk:"project_role_ref"`
AzureGroupSuffix string `json:"azureGroupSuffix" tfsdk:"azure_group_suffix"`
AzureRoleDefinitions []AzureRoleDefinition `json:"azureRoleDefinitions" tfsdk:"azure_role_definitions"`
}
type AzureServicePrincipalConfig ¶
type AzureServicePrincipalConfig struct {
ClientId string `json:"clientId" tfsdk:"client_id"`
ObjectId string `json:"objectId" tfsdk:"object_id"`
Auth AzureAuthConfig `json:"auth" tfsdk:"auth"`
}
type AzureSubscriptionProvisioningConfig ¶
type AzureSubscriptionProvisioningConfig struct {
SubscriptionOwnerObjectIds types.Set[string] `json:"subscriptionOwnerObjectIds" tfsdk:"subscription_owner_object_ids"`
EnterpriseEnrollment *AzureEnterpriseEnrollmentConfig `json:"enterpriseEnrollment,omitzero" tfsdk:"enterprise_enrollment"`
CustomerAgreement *AzureCustomerAgreementConfig `json:"customerAgreement,omitzero" tfsdk:"customer_agreement"`
PreProvisioned *AzurePreProvisionedSubscriptionConfig `json:"preProvisioned,omitzero" tfsdk:"pre_provisioned"`
}
type BuildingBlockDeletionMode ¶
type BuildingBlockDeletionMode string
type BuildingBlockLifecycleState ¶
type BuildingBlockLifecycleState string
type BuildingBlockStatus ¶
type BuildingBlockStatus string
type Client ¶
type Client struct {
ApiKey MeshApiKeyClient
BuildingBlock MeshBuildingBlockClient
BuildingBlockV2 MeshBuildingBlockV2Client
BuildingBlockRun MeshBuildingBlockRunClient
BuildingBlockRunAction *MeshBuildingBlockRunActionClient
BuildingBlockDefinition MeshBuildingBlockDefinitionClient
BuildingBlockDefinitionVersion MeshBuildingBlockDefinitionVersionClient
BuildingBlockRunner MeshBuildingBlockRunnerClient
Integration MeshIntegrationClient
LandingZone MeshLandingZoneClient
Location MeshLocationClient
MeshInfo MeshInfoClient
PaymentMethod MeshPaymentMethodClient
Platform MeshPlatformClient
PlatformType MeshPlatformTypeClient
Project MeshProjectClient
ProjectGroupBinding MeshProjectGroupBindingClient
ProjectUserBinding MeshProjectUserBindingClient
ServiceInstance MeshServiceInstanceClient
TagDefinition MeshTagDefinitionClient
Tenant MeshTenantClient
Workspace MeshWorkspaceClient
WorkspaceGroupBinding MeshWorkspaceGroupBindingClient
WorkspaceUserBinding MeshWorkspaceUserBindingClient
Raw *RawClient
// Endpoint is read by the Terraform provider's meshstack_instance data source.
Endpoint xurl.URL
}
type CustomMeteringConfig ¶
type CustomMeteringConfig struct {
Processing *MeshPlatformMeteringProcessingConfig `json:"processing,omitzero" tfsdk:"processing"`
}
type CustomPlatformConfig ¶
type CustomPlatformConfig struct {
PlatformTypeRef NamedRef `json:"platformTypeRef" tfsdk:"platform_type_ref"`
Metering *CustomMeteringConfig `json:"metering,omitzero" tfsdk:"metering"`
}
type CustomPlatformProperties ¶
type CustomPlatformProperties struct{}
type GcpMeteringConfig ¶
type GcpMeteringConfig struct {
ServiceAccount GcpServiceAccountConfig `json:"serviceAccount" tfsdk:"service_account"`
BigqueryTable string `json:"bigqueryTable" tfsdk:"bigquery_table"`
BigqueryTableForCarbonFootprint *string `json:"bigqueryTableForCarbonFootprint,omitzero" tfsdk:"bigquery_table_for_carbon_footprint"`
CarbonFootprintDataCollectionStartMonth *string `json:"carbonFootprintDataCollectionStartMonth,omitzero" tfsdk:"carbon_footprint_data_collection_start_month"`
PartitionTimeColumn string `json:"partitionTimeColumn" tfsdk:"partition_time_column"`
AdditionalFilter *string `json:"additionalFilter,omitzero" tfsdk:"additional_filter"`
Processing MeshPlatformMeteringProcessingConfig `json:"processing" tfsdk:"processing"`
}
type GcpPlatformConfig ¶
type GcpPlatformConfig struct {
Replication *GcpReplicationConfig `json:"replication,omitzero" tfsdk:"replication"`
Metering *GcpMeteringConfig `json:"metering,omitzero" tfsdk:"metering"`
}
type GcpPlatformProperties ¶
type GcpPlatformProperties struct {
GcpCloudFunctionUrl *string `json:"gcpCloudFunctionUrl,omitzero" tfsdk:"gcp_cloud_function_url"`
GcpFolderId *string `json:"gcpFolderId,omitzero" tfsdk:"gcp_folder_id"`
GcpRoleMappings []GcpRoleMapping `json:"gcpRoleMappings" tfsdk:"gcp_role_mappings"`
}
type GcpPlatformRoleMapping ¶
type GcpReplicationConfig ¶
type GcpReplicationConfig struct {
ServiceAccount GcpServiceAccountConfig `json:"serviceAccount" tfsdk:"service_account"`
Domain string `json:"domain" tfsdk:"domain"`
CustomerId string `json:"customerId" tfsdk:"customer_id"`
GroupNamePattern string `json:"groupNamePattern" tfsdk:"group_name_pattern"`
ProjectNamePattern string `json:"projectNamePattern" tfsdk:"project_name_pattern"`
ProjectIdPattern string `json:"projectIdPattern" tfsdk:"project_id_pattern"`
BillingAccountId string `json:"billingAccountId" tfsdk:"billing_account_id"`
UserLookupStrategy string `json:"userLookupStrategy" tfsdk:"user_lookup_strategy"`
UsedExternalIdType *string `json:"usedExternalIdType,omitzero" tfsdk:"used_external_id_type"`
GcpRoleMappings types.Set[GcpPlatformRoleMapping] `json:"gcpRoleMappings" tfsdk:"gcp_role_mappings"`
AllowHierarchicalFolderAssignment bool `json:"allowHierarchicalFolderAssignment" tfsdk:"allow_hierarchical_folder_assignment"`
TenantTags *MeshTenantTags `json:"tenantTags,omitzero" tfsdk:"tenant_tags"`
SkipUserGroupPermissionCleanup bool `json:"skipUserGroupPermissionCleanup" tfsdk:"skip_user_group_permission_cleanup"`
}
type GcpRoleMapping ¶
type GcpServiceAccountConfig ¶
type GcpServiceAccountConfig struct {
Type string `json:"type" tfsdk:"type"`
Credential *types.Secret `json:"credential,omitzero" tfsdk:"credential"`
WorkloadIdentity *GcpServiceAccountWorkloadIdentityConfig `json:"workloadIdentity,omitzero" tfsdk:"workload_identity"`
}
type KubernetesClientConfig ¶
type KubernetesMeteringConfig ¶
type KubernetesMeteringConfig struct {
ClientConfig KubernetesClientConfig `json:"clientConfig" tfsdk:"client_config"`
Processing MeshPlatformMeteringProcessingConfig `json:"processing" tfsdk:"processing"`
}
type KubernetesPlatformConfig ¶
type KubernetesPlatformConfig struct {
BaseUrl string `json:"baseUrl" tfsdk:"base_url"`
DisableSslValidation bool `json:"disableSslValidation" tfsdk:"disable_ssl_validation"`
Replication *KubernetesReplicationConfig `json:"replication" tfsdk:"replication"`
Metering *KubernetesMeteringConfig `json:"metering,omitzero" tfsdk:"metering"`
}
type KubernetesPlatformProperties ¶
type KubernetesPlatformProperties struct {
KubernetesRoleMappings []KubernetesRoleMapping `json:"kubernetesRoleMappings" tfsdk:"kubernetes_role_mappings"`
}
type KubernetesReplicationConfig ¶
type KubernetesReplicationConfig struct {
ClientConfig KubernetesClientConfig `json:"clientConfig" tfsdk:"client_config"`
NamespaceNamePattern string `json:"namespaceNamePattern" tfsdk:"namespace_name_pattern"`
}
type KubernetesRoleMapping ¶
type Link ¶ added in v0.6.0
type Link struct {
Href string `json:"href"`
}
Link is a HAL link. meshStack sends the link of an action only while the caller may take it.
type ListOptions ¶ added in v0.2.0
type ListOptions = internal.ListOptions
type MeshApiKey ¶
type MeshApiKey struct {
Metadata MeshApiKeyMetadata `json:"metadata" tfsdk:"metadata"`
Spec MeshApiKeySpec `json:"spec" tfsdk:"spec"`
Status *MeshApiKeyStatus `json:"status,omitzero" tfsdk:"status"`
}
type MeshApiKeyClient ¶
type MeshApiKeyClient interface {
Create(ctx context.Context, apiKey *MeshApiKey) (*MeshApiKey, error)
Read(ctx context.Context, uuid string) (*MeshApiKey, error)
// ReadSelf returns the key the request authenticates with. Unlike Read, it needs no APIKEY_LIST
// and also finds a hidden key, such as one bootstrapped from the meshStack configuration.
ReadSelf(ctx context.Context) (*MeshApiKey, error)
Update(ctx context.Context, uuid string, apiKey *MeshApiKey) (*MeshApiKey, error)
Delete(ctx context.Context, uuid string) error
}
type MeshApiKeyMetadata ¶
type MeshApiKeySpec ¶
type MeshApiKeySpec struct {
DisplayName string `json:"displayName" tfsdk:"display_name"`
Permissions types.Set[ApiPermission] `json:"permissions" tfsdk:"permissions"`
ExpiresAt *string `json:"expiresAt,omitzero" tfsdk:"expires_at"`
}
type MeshApiKeyStatus ¶
type MeshApiKeyStatus struct {
ClientId string `json:"clientId" tfsdk:"client_id"`
ClientSecret *string `json:"clientSecret,omitzero" tfsdk:"client_secret"`
// The Terraform provider's meshstack_api_key schema has no attribute for ExpiresAt, and its
// conversion fails on a tfsdk tag the schema does not have.
ExpiresAt time.Time `json:"expiresAt,omitzero" tfsdk:"-"`
}
type MeshAwsWifProvider ¶
type MeshBuildingBlock ¶
type MeshBuildingBlock struct {
Metadata MeshBuildingBlockMetadata `json:"metadata" tfsdk:"metadata"`
Spec MeshBuildingBlockSpec `json:"spec" tfsdk:"spec"`
Status MeshBuildingBlockStatus `json:"status" tfsdk:"status"`
}
type MeshBuildingBlockClient ¶
type MeshBuildingBlockClient interface {
Read(ctx context.Context, uuid string) (*MeshBuildingBlock, error)
Create(ctx context.Context, bb *MeshBuildingBlockCreate) (*MeshBuildingBlock, error)
Delete(ctx context.Context, uuid string) error
}
type MeshBuildingBlockCreate ¶
type MeshBuildingBlockCreate struct {
Metadata MeshBuildingBlockCreateMetadata `json:"metadata" tfsdk:"metadata"`
Spec MeshBuildingBlockSpec `json:"spec" tfsdk:"spec"`
}
type MeshBuildingBlockDefinition ¶
type MeshBuildingBlockDefinition struct {
Metadata MeshBuildingBlockDefinitionMetadata `json:"metadata"`
Spec MeshBuildingBlockDefinitionSpec `json:"spec"`
Status *MeshBuildingBlockDefinitionStatus `json:"status,omitzero"`
}
type MeshBuildingBlockDefinitionApprovalPolicies ¶
type MeshBuildingBlockDefinitionApprovalPolicies struct {
VersionUpgrade bool `json:"versionUpgrade" tfsdk:"version_upgrade"`
UserInputChanges bool `json:"userInputChanges" tfsdk:"user_input_changes"`
ManualTriggers bool `json:"manualTriggers" tfsdk:"manual_triggers"`
BuildingBlockCreation bool `json:"buildingBlockCreation" tfsdk:"building_block_creation"`
AnyInputChanges bool `json:"anyInputChanges" tfsdk:"any_input_changes"`
}
func (MeshBuildingBlockDefinitionApprovalPolicies) NothingRequiresApproval ¶
func (a MeshBuildingBlockDefinitionApprovalPolicies) NothingRequiresApproval() bool
type MeshBuildingBlockDefinitionAzureDevOpsPipelineImplementation ¶
type MeshBuildingBlockDefinitionAzureDevOpsPipelineImplementation struct {
Project string `json:"project" tfsdk:"project"`
PipelineID string `json:"pipelineId" tfsdk:"pipeline_id"`
RefName *string `json:"refName,omitzero" tfsdk:"ref_name"`
Async bool `json:"async" tfsdk:"async"`
IntegrationRef UuidRef `json:"integrationRef" tfsdk:"integration_ref"`
}
type MeshBuildingBlockDefinitionClient ¶
type MeshBuildingBlockDefinitionClient interface {
List(ctx context.Context, workspaceIdentifier *string) ([]MeshBuildingBlockDefinition, error)
Read(ctx context.Context, uuid string) (*MeshBuildingBlockDefinition, error)
Create(ctx context.Context, definition MeshBuildingBlockDefinition) (*MeshBuildingBlockDefinition, error)
Update(ctx context.Context, uuid string, definition MeshBuildingBlockDefinition) (*MeshBuildingBlockDefinition, error)
Delete(ctx context.Context, uuid string) error
}
type MeshBuildingBlockDefinitionCloudWif ¶ added in v0.2.0
type MeshBuildingBlockDefinitionGitHubWorkflowsImplementation ¶
type MeshBuildingBlockDefinitionGitHubWorkflowsImplementation struct {
Repository string `json:"repository" tfsdk:"repository"`
Branch string `json:"branch" tfsdk:"branch"`
ApplyWorkflow string `json:"applyWorkflow" tfsdk:"apply_workflow"`
DestroyWorkflow *string `json:"destroyWorkflow" tfsdk:"destroy_workflow"`
Async bool `json:"async" tfsdk:"async"`
OmitRunObjectInput bool `json:"omitRunObjectInput" tfsdk:"omit_run_object_input"`
IntegrationRef UuidRef `json:"integrationRef" tfsdk:"integration_ref"`
}
type MeshBuildingBlockDefinitionGitLabPipelineImplementation ¶
type MeshBuildingBlockDefinitionGitLabPipelineImplementation struct {
ProjectID string `json:"projectId" tfsdk:"project_id"`
RefName string `json:"refName" tfsdk:"ref_name"`
IntegrationRef UuidRef `json:"integrationRef" tfsdk:"integration_ref"`
PipelineTriggerToken types.Secret `json:"pipelineTriggerToken" tfsdk:"pipeline_trigger_token"`
}
type MeshBuildingBlockDefinitionImplementation ¶
type MeshBuildingBlockDefinitionImplementation struct {
Type enum.Entry[MeshBuildingBlockImplementationType] `json:"type" tfsdk:"-"`
Manual *MeshBuildingBlockDefinitionManualImplementation `json:"manual,omitzero" tfsdk:"manual"`
GithubWorkflows *MeshBuildingBlockDefinitionGitHubWorkflowsImplementation `json:"githubWorkflows,omitzero" tfsdk:"github_workflows"`
AzureDevOpsPipeline *MeshBuildingBlockDefinitionAzureDevOpsPipelineImplementation `json:"azureDevOpsPipeline,omitzero" tfsdk:"azure_devops_pipeline"`
GitlabPipeline *MeshBuildingBlockDefinitionGitLabPipelineImplementation `json:"gitlabPipeline,omitzero" tfsdk:"gitlab_pipeline"`
Terraform *MeshBuildingBlockDefinitionTerraformImplementation `json:"terraform,omitzero" tfsdk:"terraform"`
}
func (MeshBuildingBlockDefinitionImplementation) InferType ¶ added in v0.2.0
func (m MeshBuildingBlockDefinitionImplementation) InferType() (enum.Entry[MeshBuildingBlockImplementationType], error)
InferType accepts a version without any variant: meshStack answers that way to a workspace that may only consume the definition.
func (MeshBuildingBlockDefinitionImplementation) MarshalJSON ¶
func (m MeshBuildingBlockDefinitionImplementation) MarshalJSON() ([]byte, error)
func (*MeshBuildingBlockDefinitionImplementation) UnmarshalJSON ¶
func (m *MeshBuildingBlockDefinitionImplementation) UnmarshalJSON(bytes []byte) error
type MeshBuildingBlockDefinitionInput ¶
type MeshBuildingBlockDefinitionInput struct {
DisplayName string `json:"displayName" tfsdk:"display_name"`
Type MeshBuildingBlockIOType `json:"type" tfsdk:"type"`
AssignmentType MeshBuildingBlockInputAssignmentType `json:"assignmentType" tfsdk:"assignment_type"`
IsEnvironment bool `json:"isEnvironment" tfsdk:"is_environment"`
IsSensitive bool `json:"isSensitive" tfsdk:"-"`
// Argument and DefaultValue hold a [types.Secret] when IsSensitive is true and a [types.Any]
// otherwise. [types.Variant] decodes into X first, so UnmarshalJSON moves a non-sensitive value
// that also decodes as a Secret over to Y.
Argument types.SecretOrAny `json:"argument" tfsdk:"argument"`
DefaultValue types.SecretOrAny `json:"defaultValue" tfsdk:"default_value"`
UpdateableByConsumer bool `json:"updateableByConsumer" tfsdk:"updateable_by_consumer"`
IsOptional bool `json:"isOptional,omitzero" tfsdk:"is_optional"`
SelectableValues types.Set[string] `json:"selectableValues,omitempty" tfsdk:"selectable_values"`
Description *string `json:"description,omitzero" tfsdk:"description"`
ValueValidationRegex *string `json:"valueValidationRegex,omitzero" tfsdk:"value_validation_regex"`
ValidationRegexErrorMessage *string `json:"validationRegexErrorMessage,omitzero" tfsdk:"validation_regex_error_message"`
// JsonSchema describes the form of an input of type MeshBuildingBlockIOTypeJson, and is set only
// for that type.
JsonSchema *string `json:"jsonSchema,omitzero" tfsdk:"json_schema"`
Condition *string `json:"condition,omitzero" tfsdk:"condition"`
// No omitempty: a 0 (the schema default, and what an unknown plan value collapses to) must be sent so
// the backend stores it verbatim. With omitempty the 0 would be dropped and the backend would assign
// a position itself, making the applied value differ from the plan.
DisplayOrder int64 `json:"displayOrder" tfsdk:"display_order"`
}
func (*MeshBuildingBlockDefinitionInput) UnmarshalJSON ¶
func (m *MeshBuildingBlockDefinitionInput) UnmarshalJSON(bytes []byte) error
type MeshBuildingBlockDefinitionListFilter ¶ added in v0.3.0
type MeshBuildingBlockDefinitionListFilter struct {
OwnedByWorkspace *string `json:"ownedByWorkspace"`
// IncludeAllPublished adds the definitions published to the whole platform to the workspace's own.
IncludeAllPublished bool `json:"includeAllPublished"`
Sort SortCriteria `json:"sort"`
}
type MeshBuildingBlockDefinitionManualImplementation ¶
type MeshBuildingBlockDefinitionManualImplementation struct{}
type MeshBuildingBlockDefinitionOutput ¶
type MeshBuildingBlockDefinitionOutput struct {
DisplayName string `json:"displayName" tfsdk:"display_name"`
Type MeshBuildingBlockIOType `json:"type" tfsdk:"type"`
AssignmentType MeshBuildingBlockDefinitionOutputAssignmentType `json:"assignmentType" tfsdk:"assignment_type"`
// No omitempty so a 0 is sent, not dropped (see MeshBuildingBlockDefinitionInput.DisplayOrder).
DisplayOrder int64 `json:"displayOrder" tfsdk:"display_order"`
}
type MeshBuildingBlockDefinitionOutputAssignmentType ¶
type MeshBuildingBlockDefinitionOutputAssignmentType string
type MeshBuildingBlockDefinitionSchedule ¶
type MeshBuildingBlockDefinitionSchedule struct {
Mode MeshBuildingBlockScheduleMode `json:"mode" tfsdk:"mode"`
Frequency MeshBuildingBlockScheduleFrequency `json:"frequency" tfsdk:"frequency"`
AutomaticApproval bool `json:"automaticApproval" tfsdk:"automatic_approval"`
}
func DisabledSchedule ¶
func DisabledSchedule() MeshBuildingBlockDefinitionSchedule
DisabledSchedule is the only schedule meshStack accepts for every implementation.
func (MeshBuildingBlockDefinitionSchedule) IsDisabled ¶
func (s MeshBuildingBlockDefinitionSchedule) IsDisabled() bool
type MeshBuildingBlockDefinitionSpec ¶
type MeshBuildingBlockDefinitionSpec struct {
DisplayName string `json:"displayName" tfsdk:"display_name"`
DisplayNameTemplate *string `json:"displayNameTemplate,omitzero" tfsdk:"display_name_template"`
TargetType MeshBuildingBlockType `json:"targetType" tfsdk:"target_type"`
Description string `json:"description" tfsdk:"description"`
Readme *string `json:"readme,omitzero" tfsdk:"readme"`
RunTransparency bool `json:"runTransparency" tfsdk:"run_transparency"`
ApprovalPolicies MeshBuildingBlockDefinitionApprovalPolicies `json:"approvalPolicies" tfsdk:"approval_policies"`
Schedule MeshBuildingBlockDefinitionSchedule `json:"schedule" tfsdk:"schedule"`
UseInLandingZonesOnly bool `json:"useInLandingZonesOnly" tfsdk:"use_in_landing_zones_only"`
SupportURL *string `json:"supportUrl,omitzero" tfsdk:"support_url"`
DocumentationURL *string `json:"documentationUrl,omitzero" tfsdk:"documentation_url"`
// NotificationSubscribers also takes an email address as `email:<address>`, despite the JSON name.
NotificationSubscribers types.Set[string] `json:"notificationSubscriberUsernames,omitempty" tfsdk:"notification_subscribers"`
Symbol *string `json:"symbol,omitzero" tfsdk:"symbol"`
SupportedPlatforms types.Set[SupportedPlatformRef] `json:"supportedPlatforms" tfsdk:"supported_platforms"`
}
func (MeshBuildingBlockDefinitionSpec) HasNeutralPolicies ¶
func (s MeshBuildingBlockDefinitionSpec) HasNeutralPolicies() bool
func (MeshBuildingBlockDefinitionSpec) WithNeutralPolicies ¶
func (s MeshBuildingBlockDefinitionSpec) WithNeutralPolicies() MeshBuildingBlockDefinitionSpec
type MeshBuildingBlockDefinitionStatus ¶
type MeshBuildingBlockDefinitionStatus struct {
UsageCount *int64 `json:"usageCount"`
Versions []MeshBuildingBlockDefinitionStatusVersion `json:"versions"`
LatestVersion int64 `json:"latestVersion"`
LatestVersionUuid string `json:"latestVersionUuid"`
LatestReleasedVersion *int64 `json:"latestReleasedVersion"`
LatestReleasedVersionUuid *string `json:"latestReleasedVersionUuid"`
RedactedForNonOwnerAccess bool `json:"redactedForNonOwnerAccess"`
}
type MeshBuildingBlockDefinitionStatusVersion ¶
type MeshBuildingBlockDefinitionStatusVersion struct {
VersionUuid string `json:"versionUuid"`
VersionNumber int64 `json:"versionNumber"`
State MeshBuildingBlockDefinitionVersionState `json:"state"`
// WorkloadIdentityFederation is rendered from the runner's template, and is nil when the runner
// declares none.
WorkloadIdentityFederation *MeshBuildingBlockDefinitionWif `json:"workloadIdentityFederation,omitzero"`
}
type MeshBuildingBlockDefinitionTerraformImplementation ¶
type MeshBuildingBlockDefinitionTerraformImplementation struct {
TerraformVersion string `json:"terraformVersion" tfsdk:"terraform_version"`
RepositoryURL string `json:"repositoryUrl" tfsdk:"repository_url"`
Async bool `json:"async" tfsdk:"async"`
RepositoryPath *string `json:"repositoryPath,omitzero" tfsdk:"repository_path"`
RefName *string `json:"refName,omitzero" tfsdk:"ref_name"`
SSHKnownHost *MeshBuildingBlockDefinitionSshKnownHost `json:"sshKnownHost,omitzero" tfsdk:"ssh_known_host"`
UseMeshHTTPBackendFallback bool `json:"useMeshHttpBackendFallback" tfsdk:"use_mesh_http_backend_fallback"`
SSHPrivateKey *types.Secret `json:"sshPrivateKey,omitzero" tfsdk:"ssh_private_key"`
PreRunScript *string `json:"preRunScript,omitzero" tfsdk:"pre_run_script"`
}
type MeshBuildingBlockDefinitionVersion ¶
type MeshBuildingBlockDefinitionVersion struct {
Metadata MeshBuildingBlockDefinitionVersionMetadata `json:"metadata" tfsdk:"metadata"`
Spec MeshBuildingBlockDefinitionVersionSpec `json:"spec" tfsdk:"spec"`
Status *MeshBuildingBlockDefinitionVersionStatus `json:"status,omitzero" tfsdk:"status"`
}
type MeshBuildingBlockDefinitionVersionClient ¶
type MeshBuildingBlockDefinitionVersionClient interface {
List(ctx context.Context, buildingBlockDefinitionUuid string) ([]MeshBuildingBlockDefinitionVersion, error)
Create(ctx context.Context, ownedByWorkspace string, versionSpec MeshBuildingBlockDefinitionVersionSpec) (*MeshBuildingBlockDefinitionVersion, error)
Update(ctx context.Context, uuid, ownedByWorkspace string, versionSpec MeshBuildingBlockDefinitionVersionSpec) (*MeshBuildingBlockDefinitionVersion, error)
}
MeshBuildingBlockDefinitionVersionClient has no Get and no Delete: a caller always reads all versions of a definition with List, and the versions are deleted together with their definition.
type MeshBuildingBlockDefinitionVersionListFilter ¶ added in v0.3.0
type MeshBuildingBlockDefinitionVersionSpec ¶
type MeshBuildingBlockDefinitionVersionSpec struct {
BuildingBlockDefinitionRef *UuidRef `json:"buildingBlockDefinitionRef" tfsdk:"-"`
OnlyApplyOncePerTenant bool `json:"onlyApplyOncePerTenant" tfsdk:"only_apply_once_per_tenant"`
DeletionMode BuildingBlockDeletionMode `json:"deletionMode" tfsdk:"deletion_mode"`
Permissions types.Set[ApiPermission] `json:"permissions,omitempty" tfsdk:"permissions"`
Outputs map[string]MeshBuildingBlockDefinitionOutput `json:"outputs" tfsdk:"outputs"`
VersionNumber *int64 `json:"versionNumber,omitzero" tfsdk:"version_number"`
State *MeshBuildingBlockDefinitionVersionState `json:"state,omitzero" tfsdk:"state"`
RunnerRef *UuidRef `json:"runnerRef" tfsdk:"runner_ref"`
// Replaces the deprecated bare-UUID dependencyDefinitionUuids; requires a backend serving it.
DependencyDefinitionRefs types.Set[UuidRef] `json:"dependencyDefinitionRefs,omitempty" tfsdk:"dependency_refs"`
Implementation MeshBuildingBlockDefinitionImplementation `json:"implementation" tfsdk:"implementation"`
Inputs map[string]*MeshBuildingBlockDefinitionInput `json:"inputs" tfsdk:"inputs"`
}
type MeshBuildingBlockDefinitionVersionState ¶
type MeshBuildingBlockDefinitionVersionState string
type MeshBuildingBlockDefinitionVersionStatus ¶
type MeshBuildingBlockDefinitionVersionStatus struct {
State MeshBuildingBlockDefinitionVersionState `json:"state" tfsdk:"state"`
UsageCount *int64 `json:"usageCount,omitzero" tfsdk:"usage_count"`
}
type MeshBuildingBlockDefinitionWif ¶ added in v0.2.0
type MeshBuildingBlockDefinitionWif struct {
Issuer string `json:"issuer" tfsdk:"issuer"`
Subject string `json:"subject" tfsdk:"subject"`
Gcp *MeshBuildingBlockDefinitionCloudWif `json:"gcp,omitzero" tfsdk:"gcp"`
Aws *MeshBuildingBlockDefinitionCloudWif `json:"aws,omitzero" tfsdk:"aws"`
Azure *MeshBuildingBlockDefinitionCloudWif `json:"azure,omitzero" tfsdk:"azure"`
}
type MeshBuildingBlockIO ¶
type MeshBuildingBlockIOType ¶
type MeshBuildingBlockIOType string
type MeshBuildingBlockImplementationType ¶
type MeshBuildingBlockImplementationType string
type MeshBuildingBlockInput ¶
type MeshBuildingBlockInput struct {
Value types.SecretOrAny `json:"value" tfsdk:"value"`
ValueType *enum.Entry[MeshBuildingBlockIOType] `json:"valueType,omitzero" tfsdk:"-"`
AssignmentType enum.Entry[MeshBuildingBlockInputAssignmentType] `json:"assignmentType,omitempty" tfsdk:"-"`
// IsSensitive decides the case of Value: [types.Secret] when true, [types.Any] otherwise.
// [types.Variant] decodes into X first, so UnmarshalJSON moves a non-sensitive value that also
// decodes as a Secret over to Y.
IsSensitive bool `json:"isSensitive" tfsdk:"-"`
}
func (*MeshBuildingBlockInput) UnmarshalJSON ¶
func (m *MeshBuildingBlockInput) UnmarshalJSON(bytes []byte) error
type MeshBuildingBlockInputAssignmentType ¶
type MeshBuildingBlockInputAssignmentType string
type MeshBuildingBlockMetadata ¶
type MeshBuildingBlockMetadata struct {
Uuid string `json:"uuid" tfsdk:"uuid"`
DefinitionUuid string `json:"definitionUuid" tfsdk:"definition_uuid"`
DefinitionVersion int64 `json:"definitionVersion" tfsdk:"definition_version"`
TenantIdentifier string `json:"tenantIdentifier" tfsdk:"tenant_identifier"`
ForcePurge bool `json:"forcePurge" tfsdk:"force_purge"`
CreatedOn string `json:"createdOn" tfsdk:"created_on"`
MarkedForDeletionOn *string `json:"markedForDeletionOn" tfsdk:"marked_for_deletion_on"`
MarkedForDeletionBy *string `json:"markedForDeletionBy" tfsdk:"marked_for_deletion_by"`
}
type MeshBuildingBlockOutput ¶
type MeshBuildingBlockOutput struct {
Value types.Any `json:"value" tfsdk:"value"`
ValueType enum.Entry[MeshBuildingBlockIOType] `json:"valueType" tfsdk:"value_type"`
AssignmentType enum.Entry[MeshBuildingBlockDefinitionOutputAssignmentType] `json:"assignmentType" tfsdk:"assignment_type"`
}
type MeshBuildingBlockParent ¶
type MeshBuildingBlockRun ¶
type MeshBuildingBlockRun struct {
Metadata MeshBuildingBlockRunMetadata `json:"metadata"`
Spec MeshBuildingBlockRunSpec `json:"spec"`
Status string `json:"status"`
Links MeshBuildingBlockRunLinks `json:"_links,omitzero"`
}
type MeshBuildingBlockRunActionClient ¶ added in v0.6.0
type MeshBuildingBlockRunActionClient struct {
// contains filtered or unexported fields
}
func (*MeshBuildingBlockRunActionClient) AbortRun ¶ added in v0.6.0
func (c *MeshBuildingBlockRunActionClient) AbortRun(ctx context.Context, abort Link) error
func (*MeshBuildingBlockRunActionClient) ApproveRun ¶ added in v0.6.0
func (c *MeshBuildingBlockRunActionClient) ApproveRun(ctx context.Context, approve Link, predecessorRunUuid string) error
ApproveRun takes the predecessor because meshStack replaces the plan of a run that waits for approval when the run is planned again. The predecessor names the plan that is approved.
func (*MeshBuildingBlockRunActionClient) ReadLogs ¶ added in v0.6.0
func (c *MeshBuildingBlockRunActionClient) ReadLogs(ctx context.Context, link Link) (MeshBuildingBlockRunLogs, error)
func (*MeshBuildingBlockRunActionClient) ReadRun ¶ added in v0.6.0
func (c *MeshBuildingBlockRunActionClient) ReadRun(ctx context.Context, link Link) (MeshBuildingBlockRun, error)
type MeshBuildingBlockRunBuildingBlock ¶ added in v0.2.0
type MeshBuildingBlockRunBuildingBlock struct {
Uuid string `json:"uuid"`
Spec MeshBuildingBlockRunBuildingBlockSpec `json:"spec"`
}
MeshBuildingBlockRunBuildingBlock is spec.buildingBlock of a meshBuildingBlockRun. The wire also carries spec.buildingBlock.spec.inputs, which holds the run's input values and is left out here because a sensitive one goes out encrypted for the runner alone.
type MeshBuildingBlockRunBuildingBlockSpec ¶ added in v0.2.0
type MeshBuildingBlockRunBuildingBlockSpec struct {
DisplayName string `json:"displayName"`
TargetRef MeshBuildingBlockV2TargetRef `json:"targetRef"`
WorkspaceIdentifier string `json:"workspaceIdentifier"`
ProjectIdentifier *string `json:"projectIdentifier"`
FullPlatformIdentifier *string `json:"fullPlatformIdentifier"`
}
type MeshBuildingBlockRunClient ¶
type MeshBuildingBlockRunClient interface {
GetLogs(ctx context.Context, runUuid string) (MeshBuildingBlockRunLogs, error)
}
type MeshBuildingBlockRunLinks ¶ added in v0.6.0
type MeshBuildingBlockRunListFilter ¶ added in v0.2.0
type MeshBuildingBlockRunListFilter struct {
BuildingBlockUuid uuid.UUID `json:"buildingBlockUuid,omitzero"`
Sort SortCriteria `json:"sort"`
}
type MeshBuildingBlockRunLogs ¶
type MeshBuildingBlockRunLogs struct {
Steps []MeshBuildingBlockRunStepLog `json:"steps"`
}
type MeshBuildingBlockRunSpec ¶
type MeshBuildingBlockRunSpec struct {
RunNumber int64 `json:"runNumber"`
Behavior string `json:"behavior"`
BuildingBlock MeshBuildingBlockRunBuildingBlock `json:"buildingBlock"`
}
type MeshBuildingBlockRunner ¶
type MeshBuildingBlockRunner struct {
Metadata MeshBuildingBlockRunnerMetadata `json:"metadata" tfsdk:"metadata"`
Spec MeshBuildingBlockRunnerSpec `json:"spec" tfsdk:"spec"`
}
type MeshBuildingBlockRunnerClient ¶
type MeshBuildingBlockRunnerClient interface {
Create(ctx context.Context, runner MeshBuildingBlockRunner) (*MeshBuildingBlockRunner, error)
Read(ctx context.Context, uuid string) (*MeshBuildingBlockRunner, error)
Update(ctx context.Context, runner MeshBuildingBlockRunner) (*MeshBuildingBlockRunner, error)
Delete(ctx context.Context, uuid string) error
}
type MeshBuildingBlockRunnerImplementationType ¶
type MeshBuildingBlockRunnerImplementationType string
const ( MeshBuildingBlockRunnerImplementationTypeTerraform MeshBuildingBlockRunnerImplementationType = "TERRAFORM" MeshBuildingBlockRunnerImplementationTypeGithubWorkflow MeshBuildingBlockRunnerImplementationType = "GITHUB_WORKFLOW" MeshBuildingBlockRunnerImplementationTypeGitlabPipeline MeshBuildingBlockRunnerImplementationType = "GITLAB_PIPELINE" MeshBuildingBlockRunnerImplementationTypeAzureDevopsPipeline MeshBuildingBlockRunnerImplementationType = "AZURE_DEVOPS_PIPELINE" MeshBuildingBlockRunnerImplementationTypeManual MeshBuildingBlockRunnerImplementationType = "MANUAL" MeshBuildingBlockRunnerImplementationTypeAll MeshBuildingBlockRunnerImplementationType = "ALL" )
TODO Turn this into enum!
type MeshBuildingBlockRunnerMetadata ¶
type MeshBuildingBlockRunnerMetadata struct {
Uuid *string `json:"uuid,omitzero" tfsdk:"uuid"`
OwnedByWorkspace string `json:"ownedByWorkspace" tfsdk:"owned_by_workspace"`
CreatedOn *string `json:"createdOn,omitzero" tfsdk:"created_on"`
LastSeen *string `json:"lastSeen,omitzero" tfsdk:"last_seen"`
}
type MeshBuildingBlockRunnerSpec ¶
type MeshBuildingBlockRunnerSpec struct {
DisplayName string `json:"displayName" tfsdk:"display_name"`
PublicKey string `json:"publicKey" tfsdk:"public_key"`
ImplementationType string `json:"implementationType" tfsdk:"implementation_type"`
Restriction *string `json:"restriction,omitzero" tfsdk:"restriction"`
IsSelfHosted *bool `json:"isSelfHosted,omitzero" tfsdk:"is_self_hosted"`
WorkloadIdentityFederation *MeshRunnerWorkloadIdentityFed `json:"workloadIdentityFederation,omitzero" tfsdk:"workload_identity_federation"`
}
type MeshBuildingBlockScheduleFrequency ¶
type MeshBuildingBlockScheduleFrequency string
type MeshBuildingBlockScheduleMode ¶
type MeshBuildingBlockScheduleMode string
type MeshBuildingBlockSpec ¶
type MeshBuildingBlockSpec struct {
DisplayName string `json:"displayName" tfsdk:"display_name"`
Inputs []MeshBuildingBlockIO `json:"inputs" tfsdk:"inputs"`
ParentBuildingBlocks []MeshBuildingBlockParent `json:"parentBuildingBlocks" tfsdk:"parent_building_blocks"`
}
type MeshBuildingBlockStatus ¶
type MeshBuildingBlockStatus struct {
Status string `json:"status" tfsdk:"status"`
Outputs []MeshBuildingBlockIO `json:"outputs" tfsdk:"outputs"`
}
type MeshBuildingBlockTagInputTarget ¶
type MeshBuildingBlockTagInputTarget string
MeshBuildingBlockTagInputTarget names the meshObject a tag input reads its tag from. It is the first half of the input's argument, `<target>.<tag key>`.
type MeshBuildingBlockType ¶
type MeshBuildingBlockType string
func (MeshBuildingBlockType) TagInputTargets ¶ added in v0.3.0
func (t MeshBuildingBlockType) TagInputTargets() enum.Enum[MeshBuildingBlockTagInputTarget]
TagInputTargets follows what a building block sees: a workspace building block runs in the context of its workspace only, while a tenant building block also sees its project, and that project's payment method and landing zone.
type MeshBuildingBlockV2 ¶
type MeshBuildingBlockV2 struct {
Metadata MeshBuildingBlockV2Metadata `json:"metadata" tfsdk:"metadata"`
Spec MeshBuildingBlockV2Spec `json:"spec" tfsdk:"spec"`
Status *MeshBuildingBlockV2Status `json:"status" tfsdk:"status"`
}
func (*MeshBuildingBlockV2) CreateSuccessful ¶
func (bb *MeshBuildingBlockV2) CreateSuccessful() (done bool, err error)
func (*MeshBuildingBlockV2) DeletionSuccessful ¶
func (bb *MeshBuildingBlockV2) DeletionSuccessful() (done bool, err error)
func (*MeshBuildingBlockV2) IsWaitingForInput ¶
func (bb *MeshBuildingBlockV2) IsWaitingForInput() bool
type MeshBuildingBlockV2Client ¶
type MeshBuildingBlockV2Client interface {
Read(ctx context.Context, uuid string) (*MeshBuildingBlockV2, error)
ReadFunc(uuid string) func(ctx context.Context) (*MeshBuildingBlockV2, error)
List(ctx context.Context, filter MeshBuildingBlockV2ListFilter) ([]MeshBuildingBlockV2, error)
Create(ctx context.Context, bb *MeshBuildingBlockV2) (*MeshBuildingBlockV2, error)
Update(ctx context.Context, bb *MeshBuildingBlockV2) (*MeshBuildingBlockV2, error)
Delete(ctx context.Context, uuid string, purge bool) error
TriggerRun(ctx context.Context, uuid string) (*MeshBuildingBlockV2, error)
}
type MeshBuildingBlockV2DefinitionVersionRef ¶
type MeshBuildingBlockV2DefinitionVersionRef struct {
UuidRef
// ContentHash never reaches the backend. A Terraform config changes it to ask for a rerun when
// the content of the referenced version changed but its uuid did not; see rerunNeeded in
// terraform-provider-meshstack.
ContentHash *string `json:"-" tfsdk:"content_hash"`
}
type MeshBuildingBlockV2Lifecycle ¶
type MeshBuildingBlockV2Lifecycle struct {
State enum.Entry[BuildingBlockLifecycleState] `json:"state" tfsdk:"state"`
}
type MeshBuildingBlockV2ListFilter ¶
type MeshBuildingBlockV2ListFilter struct {
WorkspaceIdentifier *string `json:"workspaceIdentifier"`
ProjectIdentifier *string `json:"projectIdentifier"`
PlatformIdentifier *string `json:"platformIdentifier"`
Name *string `json:"name"`
DefinitionName *string `json:"definitionName"`
DefinitionUuid *string `json:"definitionUuid"`
VersionUuid *string `json:"versionUuid"`
// VersionNumber matches version 1 for both "v1" and "1".
VersionNumber *string `json:"versionNumber"`
TenantUuid *string `json:"tenantUuid"`
// TargetKind is meshTenant or meshWorkspace.
TargetKind *string `json:"targetRefKind"`
Status *string `json:"status"`
// HealthStatus and Action match a building block that has any one of the values.
HealthStatus []string `json:"healthStatus"`
Action []string `json:"action"`
// ManagedByWorkspaceIdentifier and ManagedByDefinitionUuid list the building blocks of the
// definitions a platform operator owns, and need the MANAGED_BUILDINGBLOCK_LIST permission.
ManagedByWorkspaceIdentifier *string `json:"managedByWorkspaceIdentifier"`
ManagedByDefinitionUuid *string `json:"managedByDefinitionUuid"`
Sort SortCriteria `json:"sort"`
}
MeshBuildingBlockV2ListFilter never matches a soft-deleted building block: the endpoint lists only active ones. The json tags are the query parameter names and must match the @RequestParam names of fetchBuildingBlocksV2 in the meshStack backend, which ignores an unknown parameter, so a typo turns the filter off without an error.
type MeshBuildingBlockV2Parent ¶
type MeshBuildingBlockV2Parent struct {
UuidRef
// BuildingBlockUuid always holds the same value as Uuid.
BuildingBlockUuid string `json:"buildingBlockUuid"`
// DefinitionUuid is the parent's building block definition. The backend derives it from the
// referenced block, so every response carries it and a request never does.
DefinitionUuid string `json:"definitionUuid,omitempty"`
}
MeshBuildingBlockV2Parent is an entry of the deprecated parentBuildingBlocks field.
func (*MeshBuildingBlockV2Parent) UnmarshalJSON ¶
func (p *MeshBuildingBlockV2Parent) UnmarshalJSON(data []byte) error
UnmarshalJSON fills Uuid from the deprecated buildingBlockUuid, which is where a response carries the parent's identity.
type MeshBuildingBlockV2RunLinks ¶ added in v0.6.0
type MeshBuildingBlockV2RunLinks struct {
LatestRun *Link `json:"latestRun"`
LatestDryRun *Link `json:"latestDryRun"`
}
MeshBuildingBlockV2RunLinks are not a field of MeshBuildingBlockV2, because the Terraform provider maps every field of that type to its schema.
type MeshBuildingBlockV2Spec ¶
type MeshBuildingBlockV2Spec struct {
BuildingBlockDefinitionVersionRef MeshBuildingBlockV2DefinitionVersionRef `json:"buildingBlockDefinitionVersionRef" tfsdk:"building_block_definition_version_ref"`
TargetRef MeshBuildingBlockV2TargetRef `json:"targetRef" tfsdk:"target_ref"`
DisplayName string `json:"displayName" tfsdk:"display_name"`
// Inputs as pointer MeshBuildingBlockInput to support mocking secret responses.
Inputs map[string]*MeshBuildingBlockInput `json:"inputs" tfsdk:"inputs"`
ParentBuildingBlockRefs types.Set[UuidRef] `json:"parentBuildingBlockRefs" tfsdk:"parent_building_block_refs"`
// ParentBuildingBlocks is the deprecated parentBuildingBlocks field, which MarshalJSON and
// UnmarshalJSON carry. The deprecated meshstack_building_block_v2 surfaces of the Terraform
// provider read the definition uuid they report from it.
ParentBuildingBlocks types.Set[MeshBuildingBlockV2Parent] `json:"-" tfsdk:"-"`
}
func (MeshBuildingBlockV2Spec) MarshalJSON ¶
func (s MeshBuildingBlockV2Spec) MarshalJSON() ([]byte, error)
MarshalJSON sends the parents under both field names: parentBuildingBlockRefs, and the deprecated parentBuildingBlocks for a backend that does not know the new field yet. A newer backend accepts both as long as they name the same building blocks, and an older one ignores the field it does not know, because the meshObject API does not reject unknown properties.
Together with UnmarshalJSON this is the whole compatibility window. Once every backend still in use knows parentBuildingBlockRefs, both methods can go.
func (*MeshBuildingBlockV2Spec) UnmarshalJSON ¶
func (s *MeshBuildingBlockV2Spec) UnmarshalJSON(data []byte) error
UnmarshalJSON reads the parents from parentBuildingBlockRefs, or from the deprecated parentBuildingBlocks when a backend does not serve the new field yet. Terraform then sees the same elements against either backend and set hashing stays stable.
type MeshBuildingBlockV2Status ¶
type MeshBuildingBlockV2Status struct {
Status enum.Entry[BuildingBlockStatus] `json:"status" tfsdk:"status"`
Outputs map[string]MeshBuildingBlockOutput `json:"outputs" tfsdk:"outputs"`
ForcePurge bool `json:"forcePurge" tfsdk:"force_purge"`
Lifecycle MeshBuildingBlockV2Lifecycle `json:"lifecycle" tfsdk:"-"`
// LatestRunUuid tracks the latest *modifying* (apply/destroy) run and excludes dry runs. It is nil
// only when no such run exists: run_transparency gates reading the run and its system messages, not
// this identifier (MeshBuildingBlockV2RepresentationModelAssembler.resolveLatestRunUuid).
LatestRunUuid *string `json:"latestRunUuid" tfsdk:"latest_run_uuid"`
// LatestDryRunUuid is the latest dry (DETECT) run, but only when it is the newest run; nil otherwise.
// Ungated like LatestRunUuid.
LatestDryRunUuid *string `json:"latestDryRunUuid" tfsdk:"latest_dry_run_uuid"`
// RunStartFailure says why meshStack could not start the run it was last asked for, phrased for the
// user, and is nil while nothing stands in the way of a run. meshStack records it, and stamps
// RunStartFailedOn anew, each time a request for a run fails to start one.
RunStartFailure *string `json:"runStartFailure" tfsdk:"-"`
RunStartFailedOn *string `json:"runStartFailedOn" tfsdk:"-"`
}
type MeshEventLog ¶ added in v0.3.0
type MeshEventLog struct {
Metadata MeshEventLogMetadata `json:"metadata"`
Spec MeshEventLogSpec `json:"spec"`
Status MeshEventLogStatus `json:"status"`
}
type MeshEventLogAuthor ¶ added in v0.3.0
type MeshEventLogAuthor struct {
// Type is one of ApiKey, ApiUser, System and User, and decides what Identifier is: the uuid of
// the meshApiKey, the name of the API user, "system", or the uuid of the meshUser.
Type string `json:"type"`
Identifier string `json:"identifier"`
DisplayName *string `json:"displayName"`
Username *string `json:"username"`
Email *string `json:"email"`
Euid *string `json:"euid"`
}
type MeshEventLogCreated ¶ added in v0.3.0
type MeshEventLogCreated struct {
Timestamp time.Time `json:"timestamp"`
Author *MeshEventLogAuthor `json:"author"`
}
type MeshEventLogListFilter ¶ added in v0.3.0
type MeshEventLogListFilter struct {
From time.Time `json:"from,omitzero"`
Until time.Time `json:"until,omitzero"`
Title string `json:"title"`
// ExcludeTitle leaves out the event logs of each title exactly, for an event type of high volume.
ExcludeTitle []string `json:"excludeTitle"`
Description string `json:"description"`
EventType string `json:"eventType"`
AuthorType string `json:"authorType"`
AuthorIdentifier string `json:"authorIdentifier"`
// WorkspaceIdentifier and WorkspaceName, which matches part of the display name, exclude
// each other.
WorkspaceIdentifier string `json:"workspaceIdentifier"`
WorkspaceName string `json:"workspaceName"`
Sort SortCriteria `json:"sort"`
}
type MeshEventLogMetadata ¶ added in v0.3.0
type MeshEventLogMetadata struct {
Uuid string `json:"uuid"`
}
type MeshEventLogSpec ¶ added in v0.3.0
type MeshEventLogSpec struct {
Title string `json:"title"`
Description string `json:"description"`
// EventType is one of Added, Approved, Cancelled, Changed, Created, Deleted, Rejected, Removed
// and Requested.
EventType string `json:"eventType"`
// WorkspaceRef is nil for an event of the whole platform.
WorkspaceRef *MeshEventLogWorkspaceRef `json:"workspaceRef"`
// Content is an object of no fixed shape. PreviousContent is null but for a Changed event.
Content jsontext.Value `json:"content"`
PreviousContent jsontext.Value `json:"previousContent"`
}
type MeshEventLogStatus ¶ added in v0.3.0
type MeshEventLogStatus struct {
Created MeshEventLogCreated `json:"created"`
}
type MeshEventLogWorkspaceRef ¶ added in v0.3.0
type MeshFeatureFlag ¶
type MeshFeatureFlag string
MeshFeatureFlag names an optional meshStack capability. /mesh/info reports each one as a bool of its own, so a consumer that wants a list of names maps them itself.
type MeshInfo ¶
type MeshInfo struct {
Version string `json:"version" tfsdk:"version"`
// Is4EPEnabled means "Is four-eyes principle enabled"
Is4EPEnabled bool `json:"is4EPEnabled" tfsdk:"-"`
Metadata map[string]string `json:"metadata" tfsdk:"metadata"`
AdminWorkspaceIdentifier string `json:"adminWorkspaceIdentifier" tfsdk:"admin_workspace_identifier"`
Issuer xurl.URL `json:"issuer" tfsdk:"-"`
CliClientId string `json:"cliClientId" tfsdk:"-"`
}
MeshInfo is the /mesh/info document, which meshStack serves without authentication.
func (MeshInfo) CheckVersion ¶
type MeshInfoClient ¶
func NewMeshInfoClient ¶
func NewMeshInfoClient(client http.Client, endpoint xurl.URL) MeshInfoClient
type MeshIntegration ¶
type MeshIntegration struct {
Metadata MeshIntegrationMetadata `json:"metadata" tfsdk:"metadata"`
Spec MeshIntegrationSpec `json:"spec" tfsdk:"spec"`
Status *MeshIntegrationStatus `json:"status" tfsdk:"status"`
}
type MeshIntegrationAzureDevopsConfig ¶
type MeshIntegrationAzureDevopsConfig struct {
BaseUrl string `json:"baseUrl" tfsdk:"base_url"`
Organization string `json:"organization" tfsdk:"organization"`
PersonalAccessToken types.Secret `json:"personalAccessToken" tfsdk:"personal_access_token"`
RunnerRef *UuidRef `json:"runnerRef" tfsdk:"runner_ref"`
}
type MeshIntegrationClient ¶
type MeshIntegrationClient interface {
Create(ctx context.Context, integration MeshIntegration) (*MeshIntegration, error)
Read(ctx context.Context, uuid string) (*MeshIntegration, error)
Update(ctx context.Context, integration MeshIntegration) (*MeshIntegration, error)
Delete(ctx context.Context, uuid string) error
List(ctx context.Context) ([]MeshIntegration, error)
}
type MeshIntegrationConfig ¶
type MeshIntegrationConfig struct {
Type enum.Entry[MeshIntegrationConfigType] `json:"type" tfsdk:"-"`
Github *MeshIntegrationGithubConfig `json:"github,omitzero" tfsdk:"github"`
Gitlab *MeshIntegrationGitlabConfig `json:"gitlab,omitzero" tfsdk:"gitlab"`
AzureDevops *MeshIntegrationAzureDevopsConfig `json:"azuredevops,omitzero" tfsdk:"azuredevops"`
EntraId *MeshIntegrationEntraIdConfig `json:"entraid,omitzero" tfsdk:"entraid"`
}
func (MeshIntegrationConfig) InferType ¶ added in v0.2.0
func (m MeshIntegrationConfig) InferType() (enum.Entry[MeshIntegrationConfigType], error)
func (MeshIntegrationConfig) MarshalJSON ¶
func (m MeshIntegrationConfig) MarshalJSON() ([]byte, error)
func (*MeshIntegrationConfig) UnmarshalJSON ¶
func (m *MeshIntegrationConfig) UnmarshalJSON(bytes []byte) error
type MeshIntegrationConfigType ¶
type MeshIntegrationConfigType string
type MeshIntegrationEntraIdConfig ¶
type MeshIntegrationEntraIdConfig struct {
TenantId string `json:"tenantId" tfsdk:"tenant_id"`
ClientId string `json:"clientId" tfsdk:"client_id"`
ClientSecret types.Secret `json:"clientSecret" tfsdk:"client_secret"`
IdpAlias *string `json:"idpAlias,omitzero" tfsdk:"idp_alias"`
// meshStack derives this and returns it inside spec, which configuration writes. A computed value
// there is unreachable under provider mocks (issue #272), so Terraform reads it from status instead.
RedirectUrl *string `json:"redirectUrl,omitzero" tfsdk:"-"`
}
type MeshIntegrationGithubConfig ¶
type MeshIntegrationGithubConfig struct {
Owner string `json:"owner" tfsdk:"owner"`
BaseUrl string `json:"baseUrl" tfsdk:"base_url"`
AppId string `json:"appId" tfsdk:"app_id"`
AppPrivateKey types.Secret `json:"appPrivateKey" tfsdk:"app_private_key"`
RunnerRef *UuidRef `json:"runnerRef" tfsdk:"runner_ref"`
}
type MeshIntegrationMetadata ¶
type MeshIntegrationSpec ¶
type MeshIntegrationSpec struct {
DisplayName string `json:"displayName" tfsdk:"display_name"`
Config MeshIntegrationConfig `json:"config" tfsdk:"config"`
}
type MeshIntegrationStatus ¶
type MeshIntegrationStatus struct {
IsBuiltIn bool `json:"isBuiltIn" tfsdk:"is_built_in"`
WorkloadIdentityFederation *MeshWorkloadIdentityFederation `json:"workloadIdentityFederation" tfsdk:"workload_identity_federation"`
}
type MeshLandingZone ¶
type MeshLandingZone struct {
Metadata MeshLandingZoneMetadata `json:"metadata" tfsdk:"metadata"`
Spec MeshLandingZoneSpec `json:"spec" tfsdk:"spec"`
Status MeshLandingZoneStatus `json:"status" tfsdk:"status"`
}
type MeshLandingZoneClient ¶
type MeshLandingZoneClient interface {
Read(ctx context.Context, name string) (*MeshLandingZone, error)
List(ctx context.Context, query MeshLandingZoneListQuery) ([]MeshLandingZone, error)
Create(ctx context.Context, landingZone *MeshLandingZoneCreate) (*MeshLandingZone, error)
Update(ctx context.Context, name string, landingZone *MeshLandingZoneCreate) (*MeshLandingZone, error)
Delete(ctx context.Context, name string) error
}
type MeshLandingZoneCreate ¶
type MeshLandingZoneCreate struct {
Metadata MeshLandingZoneMetadata `json:"metadata" tfsdk:"metadata"`
Spec MeshLandingZoneSpec `json:"spec" tfsdk:"spec"`
}
type MeshLandingZoneMetadata ¶
type MeshLandingZonePlatformProperties ¶
type MeshLandingZonePlatformProperties struct {
Type string `json:"type" tfsdk:"type"`
Aws *AwsPlatformProperties `json:"aws" tfsdk:"aws"`
Aks *AksPlatformProperties `json:"aks" tfsdk:"aks"`
Azure *AzurePlatformProperties `json:"azure" tfsdk:"azure"`
AzureRg *AzureRgPlatformProperties `json:"azurerg" tfsdk:"azurerg"`
Custom *CustomPlatformProperties `json:"custom" tfsdk:"custom"`
Gcp *GcpPlatformProperties `json:"gcp" tfsdk:"gcp"`
Kubernetes *KubernetesPlatformProperties `json:"kubernetes" tfsdk:"kubernetes"`
OpenShift *OpenShiftPlatformProperties `json:"openshift" tfsdk:"openshift"`
}
type MeshLandingZoneQuota ¶
type MeshLandingZoneSpec ¶
type MeshLandingZoneSpec struct {
DisplayName string `json:"displayName" tfsdk:"display_name"`
Description string `json:"description" tfsdk:"description"`
AutomateDeletionApproval bool `json:"automateDeletionApproval" tfsdk:"automate_deletion_approval"`
AutomateDeletionReplication bool `json:"automateDeletionReplication" tfsdk:"automate_deletion_replication"`
// Nullable in the API, where absent means "keep the stored value" — hence no `,omitempty`: the
// schema defaults this to false, so the provider always states the value it wants and never
// asks the backend to keep whatever is stored.
Restricted bool `json:"restricted" tfsdk:"restricted"`
InfoLink *string `json:"infoLink,omitzero" tfsdk:"info_link"`
PlatformRef UuidRef `json:"platformRef" tfsdk:"platform_ref"`
PlatformProperties *MeshLandingZonePlatformProperties `json:"platformProperties,omitzero" tfsdk:"platform_properties"`
Quotas []MeshLandingZoneQuota `json:"quotas" tfsdk:"quotas"`
MandatoryBuildingBlockRefs []UuidRef `json:"mandatoryBuildingBlockRefs" tfsdk:"mandatory_building_block_refs"`
RecommendedBuildingBlockRefs []UuidRef `json:"recommendedBuildingBlockRefs" tfsdk:"recommended_building_block_refs"`
}
type MeshLandingZoneStatus ¶
type MeshLocation ¶
type MeshLocation struct {
Metadata MeshLocationMetadata `json:"metadata" tfsdk:"metadata"`
Spec MeshLocationSpec `json:"spec" tfsdk:"spec"`
Status MeshLocationStatus `json:"status" tfsdk:"status"`
}
type MeshLocationClient ¶
type MeshLocationClient interface {
Read(ctx context.Context, name string) (*MeshLocation, error)
Create(ctx context.Context, location *MeshLocationCreate) (*MeshLocation, error)
Update(ctx context.Context, name string, location *MeshLocationCreate) (*MeshLocation, error)
Delete(ctx context.Context, name string) error
}
type MeshLocationCreate ¶
type MeshLocationCreate struct {
Metadata MeshLocationCreateMetadata `json:"metadata" tfsdk:"metadata"`
Spec MeshLocationSpec `json:"spec" tfsdk:"spec"`
}
type MeshLocationMetadata ¶
type MeshLocationSpec ¶
type MeshLocationStatus ¶
type MeshLocationStatus struct {
IsPublic bool `json:"isPublic" tfsdk:"is_public"`
}
type MeshPaymentMethod ¶
type MeshPaymentMethod struct {
Metadata MeshPaymentMethodMetadata `json:"metadata" tfsdk:"metadata"`
Spec MeshPaymentMethodSpec `json:"spec" tfsdk:"spec"`
}
type MeshPaymentMethodClient ¶
type MeshPaymentMethodClient interface {
Read(ctx context.Context, identifier string) (*MeshPaymentMethod, error)
Create(ctx context.Context, paymentMethod *MeshPaymentMethodCreate) (*MeshPaymentMethod, error)
Update(ctx context.Context, identifier string, paymentMethod *MeshPaymentMethodCreate) (*MeshPaymentMethod, error)
Delete(ctx context.Context, identifier string) error
}
type MeshPaymentMethodCreate ¶
type MeshPaymentMethodCreate struct {
Metadata MeshPaymentMethodCreateMetadata `json:"metadata" tfsdk:"metadata"`
Spec MeshPaymentMethodSpec `json:"spec" tfsdk:"spec"`
}
type MeshPaymentMethodSpec ¶
type MeshPlatform ¶
type MeshPlatform struct {
Metadata MeshPlatformMetadata `json:"metadata" tfsdk:"metadata"`
Spec MeshPlatformSpec `json:"spec" tfsdk:"spec"`
}
type MeshPlatformClient ¶
type MeshPlatformClient interface {
Read(ctx context.Context, uuid string) (*MeshPlatform, error)
List(ctx context.Context, query MeshPlatformListQuery) ([]MeshPlatform, error)
Create(ctx context.Context, platform MeshPlatform) (*MeshPlatform, error)
Update(ctx context.Context, uuid string, platform MeshPlatform) (*MeshPlatform, error)
Delete(ctx context.Context, uuid string) error
}
type MeshPlatformListQuery ¶
type MeshPlatformListQuery struct {
OwnedByWorkspace *string `json:"ownedByWorkspace"`
Identifier *string `json:"identifier"`
LocationIdentifier *string `json:"locationIdentifier"`
DisplayName *string `json:"displayName"`
Restriction *string `json:"restriction"`
PublicationState *string `json:"publicationState"`
ContributingWorkspace *string `json:"contributingWorkspace"`
// PlatformTypeIdentifier can only be filtered by the backend: a response does not carry the type,
// and spec.config is redacted for marketplace consumers.
PlatformTypeIdentifier *string `json:"platformTypeIdentifier"`
}
type MeshPlatformMetadata ¶
type MeshPlatformSpec ¶
type MeshPlatformSpec struct {
DisplayName string `json:"displayName" tfsdk:"display_name"`
Description string `json:"description" tfsdk:"description"`
Endpoint string `json:"endpoint" tfsdk:"endpoint"`
SupportUrl *string `json:"supportUrl,omitzero" tfsdk:"support_url"`
DocumentationUrl *string `json:"documentationUrl,omitzero" tfsdk:"documentation_url"`
AccessInformation *string `json:"accessInformation,omitzero" tfsdk:"access_information"`
LocationRef NamedRef `json:"locationRef" tfsdk:"location_ref"`
ContributingWorkspaces types.Set[string] `json:"contributingWorkspaces" tfsdk:"contributing_workspaces"`
Availability PlatformAvailability `json:"availability" tfsdk:"availability"`
// Config is nullable in responses: redacted (omitted) for marketplace-consumer callers. Required on write.
Config *PlatformConfig `json:"config,omitzero" tfsdk:"config"`
QuotaDefinitions types.Set[QuotaDefinition] `json:"quotaDefinitions" tfsdk:"quota_definitions"`
}
type MeshPlatformType ¶
type MeshPlatformType struct {
Metadata MeshPlatformTypeMetadata `json:"metadata" tfsdk:"metadata"`
Spec MeshPlatformTypeSpec `json:"spec" tfsdk:"spec"`
Status MeshPlatformTypeStatus `json:"status" tfsdk:"status"`
}
type MeshPlatformTypeClient ¶
type MeshPlatformTypeClient interface {
Create(ctx context.Context, platformType *MeshPlatformTypeCreate) (*MeshPlatformType, error)
Read(ctx context.Context, identifier string) (*MeshPlatformType, error)
Update(ctx context.Context, name string, platformType *MeshPlatformTypeCreate) (*MeshPlatformType, error)
Delete(ctx context.Context, name string) error
List(ctx context.Context, category *string, lifecycleStatus *string) ([]MeshPlatformType, error)
}
type MeshPlatformTypeCreate ¶
type MeshPlatformTypeCreate struct {
Metadata MeshPlatformTypeCreateMetadata `json:"metadata" tfsdk:"metadata"`
Spec MeshPlatformTypeSpec `json:"spec" tfsdk:"spec"`
}
type MeshPlatformTypeLifecycle ¶
type MeshPlatformTypeLifecycle struct {
State string `json:"state" tfsdk:"state"`
}
type MeshPlatformTypeSpec ¶
type MeshPlatformTypeStatus ¶
type MeshPlatformTypeStatus struct {
Lifecycle MeshPlatformTypeLifecycle `json:"lifecycle" tfsdk:"lifecycle"`
}
type MeshProject ¶
type MeshProject struct {
Metadata MeshProjectMetadata `json:"metadata" tfsdk:"metadata"`
Spec MeshProjectSpec `json:"spec" tfsdk:"spec"`
}
type MeshProjectBinding ¶
type MeshProjectBinding struct {
Metadata MeshProjectBindingMetadata `json:"metadata" tfsdk:"metadata"`
RoleRef MeshProjectRoleRef `json:"roleRef" tfsdk:"role_ref"`
TargetRef MeshProjectTargetRef `json:"targetRef" tfsdk:"target_ref"`
Subject MeshSubject `json:"subject" tfsdk:"subject"`
}
type MeshProjectBindingMetadata ¶
type MeshProjectBindingMetadata struct {
Name string `json:"name" tfsdk:"name"`
}
type MeshProjectClient ¶
type MeshProjectClient interface {
Read(ctx context.Context, workspace string, name string) (*MeshProject, error)
List(ctx context.Context, workspaceIdentifier string, paymentMethodIdentifier *string) ([]MeshProject, error)
Create(ctx context.Context, project *MeshProjectCreate) (*MeshProject, error)
Update(ctx context.Context, project *MeshProjectCreate) (*MeshProject, error)
Delete(ctx context.Context, workspace string, name string) error
}
type MeshProjectCreate ¶
type MeshProjectCreate struct {
Metadata MeshProjectCreateMetadata `json:"metadata" tfsdk:"metadata"`
Spec MeshProjectSpec `json:"spec" tfsdk:"spec"`
}
type MeshProjectGroupBinding ¶
type MeshProjectGroupBinding struct {
MeshProjectBinding
}
type MeshProjectGroupBindingClient ¶
type MeshProjectGroupBindingClient interface {
Read(ctx context.Context, name string) (*MeshProjectGroupBinding, error)
Create(ctx context.Context, binding *MeshProjectGroupBinding) (*MeshProjectGroupBinding, error)
Delete(ctx context.Context, name string) error
}
type MeshProjectMetadata ¶
type MeshProjectRoleRef
deprecated
type MeshProjectRoleRef struct {
Name string `json:"name" tfsdk:"name"`
}
MeshProjectRoleRef names a role by its name alone.
Deprecated: use NamedRef, which also carries the kind. MeshProjectRoleRef is only for a meshObject whose API leaves the kind out.
type MeshProjectSpec ¶
type MeshProjectSpec struct {
DisplayName string `json:"displayName" tfsdk:"display_name"`
Tags map[string][]string `json:"tags" tfsdk:"tags"`
PaymentMethodIdentifier *string `json:"paymentMethodIdentifier" tfsdk:"payment_method_identifier"`
SubstitutePaymentMethodIdentifier *string `json:"substitutePaymentMethodIdentifier" tfsdk:"substitute_payment_method_identifier"`
}
type MeshProjectTargetRef ¶
type MeshProjectUserBinding ¶
type MeshProjectUserBinding struct {
MeshProjectBinding
}
type MeshProjectUserBindingClient ¶
type MeshProjectUserBindingClient interface {
Read(ctx context.Context, name string) (*MeshProjectUserBinding, error)
Create(ctx context.Context, binding *MeshProjectUserBinding) (*MeshProjectUserBinding, error)
Delete(ctx context.Context, name string) error
}
type MeshRunnerWorkloadIdentityFed ¶
type MeshRunnerWorkloadIdentityFed struct {
// SubjectTemplate holds {{ workspaceIdentifier }} and {{ buildingBlockDefinitionUuid }}, which meshStack renders per building block definition version.
SubjectTemplate *string `json:"subjectTemplate,omitzero" tfsdk:"subject_template"`
Issuer *string `json:"issuer,omitzero" tfsdk:"issuer"`
Gcp *MeshRunnerWifProviderConfig `json:"gcp,omitzero" tfsdk:"gcp"`
Aws *MeshRunnerWifProviderConfig `json:"aws,omitzero" tfsdk:"aws"`
Azure *MeshRunnerWifProviderConfig `json:"azure,omitzero" tfsdk:"azure"`
}
type MeshServiceInstance ¶
type MeshServiceInstance struct {
Metadata MeshServiceInstanceMetadata `json:"metadata" tfsdk:"metadata"`
Spec MeshServiceInstanceSpec `json:"spec" tfsdk:"spec"`
}
type MeshServiceInstanceClient ¶
type MeshServiceInstanceClient interface {
Read(ctx context.Context, instanceId string) (*MeshServiceInstance, error)
List(ctx context.Context, filter MeshServiceInstanceFilter) ([]MeshServiceInstance, error)
}
type MeshServiceInstanceFilter ¶
type MeshServiceInstanceFilter struct {
WorkspaceIdentifier *string `json:"workspaceIdentifier"`
ProjectIdentifier *string `json:"projectIdentifier"`
MarketplaceIdentifier *string `json:"marketplaceIdentifier"`
ServiceIdentifier *string `json:"serviceIdentifier"`
PlanIdentifier *string `json:"planIdentifier"`
}
type MeshServiceInstanceMetadata ¶
type MeshServiceInstanceMetadata struct {
OwnedByProject string `json:"ownedByProject" tfsdk:"owned_by_project"`
OwnedByWorkspace string `json:"ownedByWorkspace" tfsdk:"owned_by_workspace"`
MarketplaceIdentifier string `json:"marketplaceIdentifier" tfsdk:"marketplace_identifier"`
InstanceId string `json:"instanceId" tfsdk:"instance_id"`
}
type MeshServiceInstanceSpec ¶
type MeshServiceInstanceSpec struct {
Creator string `json:"creator" tfsdk:"creator"`
DisplayName string `json:"displayName" tfsdk:"display_name"`
PlanId string `json:"planId" tfsdk:"plan_id"`
ServiceId string `json:"serviceId" tfsdk:"service_id"`
Parameters map[string]types.Any `json:"parameters" tfsdk:"parameters"`
}
type MeshSubject ¶
type MeshSubject struct {
Name string `json:"name" tfsdk:"name"`
}
type MeshTagDefinition ¶
type MeshTagDefinition struct {
Metadata MeshTagDefinitionMetadata `json:"metadata" tfsdk:"metadata"`
Spec MeshTagDefinitionSpec `json:"spec" tfsdk:"spec"`
}
type MeshTagDefinitionClient ¶
type MeshTagDefinitionClient interface {
List(ctx context.Context) ([]MeshTagDefinition, error)
Read(ctx context.Context, name string) (*MeshTagDefinition, error)
Create(ctx context.Context, tagDefinition *MeshTagDefinition) (*MeshTagDefinition, error)
Update(ctx context.Context, tagDefinition *MeshTagDefinition) (*MeshTagDefinition, error)
Delete(ctx context.Context, name string) error
}
type MeshTagDefinitionMetadata ¶
type MeshTagDefinitionMetadata struct {
Name string `json:"name" tfsdk:"name"`
}
type MeshTagDefinitionSpec ¶
type MeshTagDefinitionSpec struct {
TargetKind string `json:"targetKind" tfsdk:"target_kind"`
Key string `json:"key" tfsdk:"key"`
ValueType MeshTagDefinitionValueType `json:"valueType" tfsdk:"value_type"`
Description string `json:"description" tfsdk:"description"`
DisplayName string `json:"displayName" tfsdk:"display_name"`
SortOrder int64 `json:"sortOrder" tfsdk:"sort_order"`
Mandatory bool `json:"mandatory" tfsdk:"mandatory"`
Immutable bool `json:"immutable" tfsdk:"immutable"`
Restricted bool `json:"restricted" tfsdk:"restricted"`
ReplicationKey *string `json:"replicationKey,omitzero" tfsdk:"replication_key"`
}
type MeshTagDefinitionValueType ¶
type MeshTagDefinitionValueType struct {
String *TagValueString `json:"string,omitzero" tfsdk:"string"`
Email *TagValueEmail `json:"email,omitzero" tfsdk:"email"`
Integer *TagValueInteger `json:"integer,omitzero" tfsdk:"integer"`
Number *TagValueNumber `json:"number,omitzero" tfsdk:"number"`
SingleSelect *TagValueSingleSelect `json:"singleSelect,omitzero" tfsdk:"single_select"`
MultiSelect *TagValueMultiSelect `json:"multiSelect,omitzero" tfsdk:"multi_select"`
}
type MeshTenant ¶
type MeshTenant struct {
Metadata MeshTenantMetadata `json:"metadata" tfsdk:"metadata"`
Spec MeshTenantSpec `json:"spec" tfsdk:"spec"`
Status MeshTenantStatus `json:"status" tfsdk:"status"`
}
func (*MeshTenant) CreationSuccessful ¶
func (tenant *MeshTenant) CreationSuccessful() (done bool, err error)
func (*MeshTenant) DeletionState ¶
func (tenant *MeshTenant) DeletionState() string
func (*MeshTenant) DeletionSuccessful ¶
func (tenant *MeshTenant) DeletionSuccessful() (done bool, err error)
type MeshTenantClient ¶
type MeshTenantClient interface {
Read(ctx context.Context, uuid string) (*MeshTenant, error)
ReadFunc(uuid string) func(ctx context.Context) (*MeshTenant, error)
List(ctx context.Context, query MeshTenantQuery) ([]MeshTenant, error)
Create(ctx context.Context, tenant *MeshTenantCreate) (*MeshTenant, error)
Delete(ctx context.Context, uuid string) error
}
type MeshTenantCreate ¶
type MeshTenantCreate struct {
Metadata MeshTenantCreateMetadata `json:"metadata" tfsdk:"metadata"`
Spec MeshTenantCreateSpec `json:"spec" tfsdk:"spec"`
}
type MeshTenantCreateSpec ¶
type MeshTenantCreateSpec struct {
PlatformRef UuidRef `json:"platformRef" tfsdk:"platform_ref"`
LandingZoneRef *NamedRef `json:"landingZoneRef" tfsdk:"landing_zone_ref"`
PlatformTenantId *string `json:"platformTenantId" tfsdk:"platform_tenant_id"`
RequestedQuotas map[string]RequestQuotaValue `json:"requestedQuotas,omitempty" tfsdk:"requested_quotas"`
}
type MeshTenantLifecycle ¶
type MeshTenantLifecycle struct {
State enum.Entry[TenantLifecycleState] `json:"state" tfsdk:"-"`
MarkedForDeletion *MeshTenantLifecycleAction `json:"markedForDeletion" tfsdk:"-"`
}
type MeshTenantLifecycleAction ¶
type MeshTenantLifecycleAction struct {
Timestamp string `json:"timestamp" tfsdk:"-"`
}
type MeshTenantMetadata ¶
type MeshTenantQuery ¶
type MeshTenantQuery struct {
Workspace string `json:"workspaceIdentifier"`
Project *string `json:"projectIdentifier"`
Platform *string `json:"platformIdentifier"`
PlatformType *string `json:"platformTypeIdentifier"`
LandingZone *string `json:"landingZoneIdentifier"`
PlatformTenant *string `json:"platformTenantId"`
}
type MeshTenantQuota ¶
type MeshTenantQuota struct {
Key string `json:"key" tfsdk:"key"`
Value int64 `json:"value" tfsdk:"value"`
}
MeshTenantQuota is the {key, value} element of the removed list-form spec.quotas. The schema version 1 prior state still declares that attribute, so the state upgrader needs this shape to read it.
type MeshTenantSpec ¶
type MeshTenantSpec struct {
PlatformRef UuidRef `json:"platformRef" tfsdk:"platform_ref"`
PlatformTenantId *string `json:"platformTenantId" tfsdk:"platform_tenant_id"`
LandingZoneRef *NamedRef `json:"landingZoneRef" tfsdk:"landing_zone_ref"`
// RequestedQuotas is an input at creation only: the backend does not return it on read, so the
// Terraform resource keeps the configured value from its state.
RequestedQuotas map[string]RequestQuotaValue `json:"requestedQuotas" tfsdk:"requested_quotas"`
}
type MeshTenantStatus ¶
type MeshTenantStatus struct {
TenantName string `json:"tenantName" tfsdk:"tenant_name"`
PlatformTypeIdentifier string `json:"platformTypeIdentifier" tfsdk:"platform_type_identifier"`
PlatformWorkspaceId *string `json:"platformWorkspaceId" tfsdk:"platform_workspace_id"`
Tags map[string][]string `json:"tags" tfsdk:"tags"`
// AppliedQuotas can differ from the requested quotas once the landing zone defaults are merged in
// or an operator changes them, so drift is tracked against these.
AppliedQuotas map[string]AppliedQuotaValue `json:"appliedQuotas" tfsdk:"applied_quotas"`
Lifecycle MeshTenantLifecycle `json:"lifecycle" tfsdk:"-"`
}
type MeshTenantTags ¶
type MeshWifProvider ¶
type MeshWifProvider struct {
Audience string `json:"audience" tfsdk:"audience"`
}
type MeshWorkloadIdentityFederation ¶
type MeshWorkloadIdentityFederation struct {
Issuer string `json:"issuer" tfsdk:"issuer"`
Subject string `json:"subject" tfsdk:"subject"`
Gcp *MeshWifProvider `json:"gcp" tfsdk:"gcp"`
Aws *MeshAwsWifProvider `json:"aws" tfsdk:"aws"`
Azure *MeshWifProvider `json:"azure" tfsdk:"azure"`
}
type MeshWorkspace ¶
type MeshWorkspace struct {
Metadata MeshWorkspaceMetadata `json:"metadata" tfsdk:"metadata"`
Spec MeshWorkspaceSpec `json:"spec" tfsdk:"spec"`
}
type MeshWorkspaceBinding ¶
type MeshWorkspaceBinding struct {
Metadata MeshWorkspaceBindingMetadata `json:"metadata" tfsdk:"metadata"`
RoleRef MeshWorkspaceRoleRef `json:"roleRef" tfsdk:"role_ref"`
TargetRef MeshWorkspaceTargetRef `json:"targetRef" tfsdk:"target_ref"`
Subject MeshWorkspaceSubject `json:"subject" tfsdk:"subject"`
ExpiryDate *string `json:"expiryDate,omitzero" tfsdk:"expiry_date"`
}
type MeshWorkspaceBindingMetadata ¶
type MeshWorkspaceBindingMetadata struct {
Name string `json:"name" tfsdk:"name"`
}
type MeshWorkspaceClient ¶
type MeshWorkspaceClient interface {
// List returns every workspace the credential can see. An unscoped user token reaches this and
// almost nothing else, which is why `meshstack login` prompts for a workspace from it.
List(ctx context.Context) ([]MeshWorkspace, error)
Read(ctx context.Context, name string) (*MeshWorkspace, error)
Create(ctx context.Context, workspace *MeshWorkspaceCreate) (*MeshWorkspace, error)
Update(ctx context.Context, name string, workspace *MeshWorkspaceCreate) (*MeshWorkspace, error)
Delete(ctx context.Context, name string) error
}
type MeshWorkspaceCreate ¶
type MeshWorkspaceCreate struct {
Metadata MeshWorkspaceCreateMetadata `json:"metadata" tfsdk:"metadata"`
Spec MeshWorkspaceSpec `json:"spec" tfsdk:"spec"`
}
type MeshWorkspaceGroupBinding ¶
type MeshWorkspaceGroupBinding struct {
MeshWorkspaceBinding
}
type MeshWorkspaceGroupBindingClient ¶
type MeshWorkspaceGroupBindingClient interface {
Read(ctx context.Context, name string) (*MeshWorkspaceGroupBinding, error)
Create(ctx context.Context, binding *MeshWorkspaceGroupBinding) (*MeshWorkspaceGroupBinding, error)
Delete(ctx context.Context, name string) error
}
type MeshWorkspaceListFilter ¶ added in v0.3.0
type MeshWorkspaceListFilter struct {
Sort SortCriteria `json:"sort"`
}
type MeshWorkspaceMetadata ¶
type MeshWorkspaceRoleRef ¶
type MeshWorkspaceRoleRef struct {
Name string `json:"name" tfsdk:"name"`
}
type MeshWorkspaceSpec ¶
type MeshWorkspaceSubject ¶
type MeshWorkspaceSubject struct {
Name string `json:"name" tfsdk:"name"`
}
type MeshWorkspaceTargetRef ¶
type MeshWorkspaceTargetRef struct {
Name string `json:"name" tfsdk:"name"`
}
type MeshWorkspaceUserBinding ¶
type MeshWorkspaceUserBinding struct {
MeshWorkspaceBinding
}
type MeshWorkspaceUserBindingClient ¶
type MeshWorkspaceUserBindingClient interface {
Read(ctx context.Context, name string) (*MeshWorkspaceUserBinding, error)
Create(ctx context.Context, binding *MeshWorkspaceUserBinding) (*MeshWorkspaceUserBinding, error)
Delete(ctx context.Context, name string) error
}
type NamedRef ¶
type NamedRef struct {
Name string `json:"name" tfsdk:"name"`
Kind string `json:"kind" tfsdk:"kind"`
}
NamedRef is every {name, kind} reference on the wire, and a ref with more fields embeds it. Keep it in step with meshRefByName in internal/provider/schema_utils.go of terraform-provider-meshstack.
type OpenShiftMeteringConfig ¶
type OpenShiftMeteringConfig struct {
ClientConfig KubernetesClientConfig `json:"clientConfig" tfsdk:"client_config"`
Processing MeshPlatformMeteringProcessingConfig `json:"processing" tfsdk:"processing"`
}
type OpenShiftPlatformConfig ¶
type OpenShiftPlatformConfig struct {
BaseUrl string `json:"baseUrl" tfsdk:"base_url"`
DisableSslValidation bool `json:"disableSslValidation" tfsdk:"disable_ssl_validation"`
Replication *OpenShiftReplicationConfig `json:"replication" tfsdk:"replication"`
Metering *OpenShiftMeteringConfig `json:"metering,omitzero" tfsdk:"metering"`
}
type OpenShiftPlatformProperties ¶
type OpenShiftPlatformProperties struct {
}
type OpenShiftReplicationConfig ¶
type OpenShiftReplicationConfig struct {
ClientConfig KubernetesClientConfig `json:"clientConfig" tfsdk:"client_config"`
WebConsoleUrl *string `json:"webConsoleUrl,omitzero" tfsdk:"web_console_url"`
ProjectNamePattern string `json:"projectNamePattern" tfsdk:"project_name_pattern"`
OpenshiftRoleMappings types.Set[OpenShiftPlatformRoleMapping] `json:"openshiftRoleMappings" tfsdk:"openshift_role_mappings"`
IdentityProviderName string `json:"identityProviderName" tfsdk:"identity_provider_name"`
TenantTags *MeshTenantTags `json:"tenantTags,omitzero" tfsdk:"tenant_tags"`
}
type PlatformAvailability ¶
type PlatformConfig ¶
type PlatformConfig struct {
Type string `json:"type" tfsdk:"type"`
Custom *CustomPlatformConfig `json:"custom,omitzero" tfsdk:"custom"`
Aws *AwsPlatformConfig `json:"aws,omitzero" tfsdk:"aws"`
Aks *AksPlatformConfig `json:"aks,omitzero" tfsdk:"aks"`
Azure *AzurePlatformConfig `json:"azure,omitzero" tfsdk:"azure"`
AzureRg *AzureRgPlatformConfig `json:"azurerg,omitzero" tfsdk:"azurerg"`
Gcp *GcpPlatformConfig `json:"gcp,omitzero" tfsdk:"gcp"`
Kubernetes *KubernetesPlatformConfig `json:"kubernetes,omitzero" tfsdk:"kubernetes"`
OpenShift *OpenShiftPlatformConfig `json:"openshift,omitzero" tfsdk:"openshift"`
}
type QuotaDefinition ¶
type QuotaDefinition struct {
QuotaKey string `json:"quotaKey" tfsdk:"quota_key"`
MinValue int64 `json:"minValue" tfsdk:"min_value"`
MaxValue int64 `json:"maxValue" tfsdk:"max_value"`
Unit string `json:"unit" tfsdk:"unit"`
AutoApprovalThreshold int64 `json:"autoApprovalThreshold" tfsdk:"auto_approval_threshold"`
Description string `json:"description" tfsdk:"description"`
Label string `json:"label" tfsdk:"label"`
}
type RawClient ¶ added in v0.3.0
type RawClient struct {
// contains filtered or unexported fields
}
RawClient answers with the JSON meshStack sent, for the CLI, which writes it out as it came. It is the CLI's alone: DoRequest takes the options of internal/http, which Go's internal rule closes to the Terraform provider.
func (*RawClient) DoRequest ¶ added in v0.3.0
func (r *RawClient) DoRequest(ctx context.Context, method, path string, opts ...http.RequestOption) ([]byte, error)
DoRequest joins path onto the endpoint, even one that names a host, so that the bearer token never leaves for another host. The answer is of any content type, such as a plan artifact's application/octet-stream, so it is returned unparsed.
type RequestQuotaValue ¶
type RequestQuotaValue struct {
Value int64 `json:"value" tfsdk:"value"`
}
RequestQuotaValue wraps the number in an object so that the v4 API can add a field to a quota, such as a unit, without a breaking change to the map.
It has the same shape as AppliedQuotaValue on purpose: the Terraform resource echoes the requested value in spec and reads the applied one from status, and two types make mixing them up a compile error.
type SortCriteria ¶ added in v0.3.0
type SortCriteria []string
SortCriteria holds one `property,(asc|desc)` criterion per element, such as createdAt,desc.
type SupportedPlatformRef ¶ added in v0.3.0
type TagValueEmail ¶
type TagValueInteger ¶
type TagValueInteger struct {
DefaultValue *int64 `json:"defaultValue,omitzero" tfsdk:"default_value"`
}
type TagValueMultiSelect ¶
type TagValueNumber ¶
type TagValueNumber struct {
DefaultValue *float64 `json:"defaultValue,omitzero" tfsdk:"default_value"`
}
type TagValueSingleSelect ¶
type TagValueString ¶
type TenantLifecycleState ¶
type TenantLifecycleState string
type UuidRef ¶
type UuidRef struct {
Uuid string `json:"uuid" tfsdk:"uuid"`
Kind string `json:"kind" tfsdk:"kind"`
}
UuidRef is every {uuid, kind} reference on the wire, and a ref with more fields embeds it. Keep it in step with meshRefByUuid in internal/provider/schema_utils.go of terraform-provider-meshstack.
Source Files
¶
- api_key.go
- api_key_permissions.go
- building_block_definition.go
- building_block_definition_version.go
- building_block_definition_version_implementation.go
- building_block_run.go
- building_block_run_action.go
- building_block_runner.go
- building_block_v2.go
- buildingblock.go
- client.go
- client_kind.go
- event_log.go
- integration.go
- integration_config.go
- landingzone.go
- location.go
- mesh_info.go
- payment_method.go
- platform.go
- platform_config_aks.go
- platform_config_aws.go
- platform_config_azure.go
- platform_config_azurerg.go
- platform_config_custom.go
- platform_config_gcp.go
- platform_config_kubernetes.go
- platform_config_openshift.go
- platform_properties_aks.go
- platform_properties_aws.go
- platform_properties_azure.go
- platform_properties_azurerg.go
- platform_properties_custom.go
- platform_properties_gcp.go
- platform_properties_kubernetes.go
- platform_properties_openshift.go
- platform_type.go
- project.go
- project_binding.go
- project_group_binding.go
- project_user_binding.go
- raw.go
- refs.go
- service_instance.go
- tag_definition.go
- tenant_v4.go
- workspace.go
- workspace_binding.go
- workspace_group_binding.go
- workspace_user_binding.go
Directories
¶
| Path | Synopsis |
|---|---|
|
Package openapi reads the OpenAPI document meshStack publishes, and picks the operations of a request path, a method and a version out of it.
|
Package openapi reads the OpenAPI document meshStack publishes, and picks the operations of a request path, a method and a version out of it. |