Releases: crossplane/upjet
Releases · crossplane/upjet
v0.7.0
This is the first public release of Upjet!
What's Changed
- types: do not require go binary to be present during configuration by @muvaf in #63
- crd: remove field transformation struct and its usages by @muvaf in #46
- Filter sensitive fields in debug level logs by @sergenyalcin in #62
- Add field&resource descriptions to CRD manifests from scraped metadata by @sergenyalcin in #64
- Fix field comments by @sergenyalcin in #72
- types: remove terraform-plugin-sdk v1 support since it reached EOL by @muvaf in #73
- Fix external-name annotation configuration for examples by @ulucinar in #76
- types.references: ref and selector fields should tell users which type they use by @muvaf in #85
- terraform: do not print tf file name in the errors by @muvaf in #83
- Add marketplace annotation to generated example manifests by @ezgidemirel in #75
- Do not print skip-list for excluded resources by @ulucinar in #86
- Add comment-marker for generated reference-type comment lines by @ulucinar in #87
- Do not override annotations of generated example manifests by @ulucinar in #88
- terraform: accept extra client metadata for ID calculations by @muvaf in #79
- Manipulator function for every schema field by @sergenyalcin in #89
- Make UseAsync=true by default by @ezgidemirel in #90
- Filter terraform keyword in documentation by @sergenyalcin in #93
- Generate hierarchical names under argumentDocs in scraped provider metadata by @ulucinar in #92
- Support parent extraction from header blocks by @ulucinar in #94
- terraform: make sure that the tfstate is re-produced in case we end up with empty tfstate by @muvaf in #97
- terraform: do not fill the empty tfstate if the resource is being deleted by @muvaf in #101
- Bump Go version to 1.19 by @ulucinar in #102
- add legal notice for MPL usages by @muvaf in #103
- add Apache 2.0 license by @muvaf in #104
- Move OP docs by @ezgidemirel in #109
- docs: add contribution guide and edit outdated parts of README by @muvaf in #111
New Contributors
- @sergenyalcin made their first contribution in #62
Full Changelog: v0.6.0...v0.7.0
v0.6.0
v0.6.0 contains example generation pipelines that can scrape Terraform registry documentation pages and generate managed resource example manifests together with their dependencies. These pipelines also incorporate automatic reference injection. The scraped metadata currently looks like the following for a resource:
azurerm_disk_encryption_set:
subCategory: Compute
description: Manages a Disk Encryption Set.
name: azurerm_disk_encryption_set
title: azurerm_disk_encryption_set
examples:
- name: example
manifest: |-
{
"identity": [
{
"type": "SystemAssigned"
}
],
"key_vault_key_id": "${azurerm_key_vault_key.example.id}",
"location": "${azurerm_resource_group.example.location}",
"name": "des",
"resource_group_name": "${azurerm_resource_group.example.name}"
}
references:
key_vault_key_id: azurerm_key_vault_key.example.id
location: azurerm_resource_group.example.location
resource_group_name: azurerm_resource_group.example.name
dependencies:
azurerm_key_vault.example: |-
{
"enabled_for_disk_encryption": true,
"location": "${azurerm_resource_group.example.location}",
"name": "des-example-keyvault",
"purge_protection_enabled": true,
"resource_group_name": "${azurerm_resource_group.example.name}",
"sku_name": "premium",
"tenant_id": "${data.azurerm_client_config.current.tenant_id}"
}
azurerm_key_vault_access_policy.example-disk: |-
{
"key_permissions": [
"Get",
"WrapKey",
"UnwrapKey"
],
"key_vault_id": "${azurerm_key_vault.example.id}",
"object_id": "${azurerm_disk_encryption_set.example.identity.0.principal_id}",
"tenant_id": "${azurerm_disk_encryption_set.example.identity.0.tenant_id}"
}
azurerm_key_vault_access_policy.example-user: |-
{
"key_permissions": [
"get",
"create",
"delete"
],
"key_vault_id": "${azurerm_key_vault.example.id}",
"object_id": "${data.azurerm_client_config.current.object_id}",
"tenant_id": "${data.azurerm_client_config.current.tenant_id}"
}
azurerm_key_vault_key.example: |-
{
"depends_on": [
"${azurerm_key_vault_access_policy.example-user}"
],
"key_opts": [
"decrypt",
"encrypt",
"sign",
"unwrapKey",
"verify",
"wrapKey"
],
"key_size": 2048,
"key_type": "RSA",
"key_vault_id": "${azurerm_key_vault.example.id}",
"name": "des-example-key"
}
azurerm_resource_group.example: |-
{
"location": "West Europe",
"name": "example-resources"
}
argumentDocs:
auto_key_rotation_enabled: '- (Optional) Boolean flag to specify whether Azure Disk Encryption Set automatically rotates encryption Key to latest version. Defaults to false.'
create: '- (Defaults to 60 minutes) Used when creating the Disk Encryption Set.'
delete: '- (Defaults to 60 minutes) Used when deleting the Disk Encryption Set.'
encryption_type: '- (Optional) The type of key used to encrypt the data of the disk. Possible values are EncryptionAtRestWithCustomerKey, EncryptionAtRestWithPlatformAndCustomerKeys and ConfidentialVmEncryptedWithCustomerKey. Defaults to EncryptionAtRestWithCustomerKey.'
id: '- The ID of the Disk Encryption Set.'
identity: '- (Required) An identity block as defined below.'
key_vault_key_id: '- (Required) Specifies the URL to a Key Vault Key (either from a Key Vault Key, or the Key URL for the Key Vault Secret).'
location: '- (Required) Specifies the Azure Region where the Disk Encryption Set exists. Changing this forces a new resource to be created.'
name: '- (Required) The name of the Disk Encryption Set. Changing this forces a new resource to be created.'
principal_id: '- The (Client) ID of the Service Principal.'
read: '- (Defaults to 5 minutes) Used when retrieving the Disk Encryption Set.'
resource_group_name: '- (Required) Specifies the name of the Resource Group where the Disk Encryption Set should exist. Changing this forces a new resource to be created.'
tags: '- (Optional) A mapping of tags to assign to the Disk Encryption Set.'
tenant_id: '- The ID of the Tenant the Service Principal is assigned in.'
type: '- (Required) The type of Managed Service Identity that is configured on this Disk Encryption Set. The only possible value is SystemAssigned.'
update: '- (Defaults to 60 minutes) Used when updating the Disk Encryption Set.'
importStatements:
- terraform import azurerm_disk_encryption_set.example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.Compute/diskEncryptionSets/encryptionSet1The generated example manifests for this resource then looks like the following:
apiVersion: compute.azure.upbound.io/v1beta1
kind: DiskEncryptionSet
metadata:
labels:
testing.upbound.io/example-name: example
name: example
spec:
forProvider:
identity:
- type: SystemAssigned
keyVaultKeyIdSelector:
matchLabels:
testing.upbound.io/example-name: example
location: West Europe
resourceGroupNameSelector:
matchLabels:
testing.upbound.io/example-name: example
---
apiVersion: keyvault.azure.upbound.io/v1beta1
kind: Vault
metadata:
labels:
testing.upbound.io/example-name: example
name: example
spec:
forProvider:
enabledForDiskEncryption: true
location: West Europe
purgeProtectionEnabled: true
resourceGroupNameSelector:
matchLabels:
testing.upbound.io/example-name: example
skuName: premium
tenantId: ${data.azurerm_client_config.current.tenant_id}
---
apiVersion: keyvault.azure.upbound.io/v1beta1
kind: AccessPolicy
metadata:
labels:
testing.upbound.io/example-name: example-disk
name: example-disk
spec:
forProvider:
keyPermissions:
- Get
- WrapKey
- UnwrapKey
keyVaultIdSelector:
matchLabels:
testing.upbound.io/example-name: example
objectId: ${azurerm_disk_encryption_set.example.identity.0.principal_id}
tenantId: ${azurerm_disk_encryption_set.example.identity.0.tenant_id}
---
apiVersion: keyvault.azure.upbound.io/v1beta1
kind: AccessPolicy
metadata:
labels:
testing.upbound.io/example-name: example-user
name: example-user
spec:
forProvider:
keyPermissions:
- get
- create
- delete
keyVaultIdSelector:
matchLabels:
testing.upbound.io/example-name: example
objectId: ${data.azurerm_client_config.current.object_id}
tenantId: ${data.azurerm_client_config.current.tenant_id}
---
apiVersion: keyvault.azure.upbound.io/v1beta1
kind: Key
metadata:
labels:
testing.upbound.io/example-name: example
name: example
spec:
forProvider:
keyOpts:
- decrypt
- encrypt
- sign
- unwrapKey
- verify
- wrapKey
keySize: 2048
keyType: RSA
keyVaultIdSelector:
matchLabels:
testing.upbound.io/example-name: example
---
apiVersion: azure.upbound.io/v1beta1
kind: ResourceGroup
metadata:
labels:
testing.upbound.io/example-name: example
name: example
spec:
forProvider:
location: West Europe
---