mirror of
https://github.com/bpg/terraform-provider-proxmox.git
synced 2025-07-01 11:02:59 +00:00
Additional certificate attributes
This commit is contained in:
parent
9de2bfbe98
commit
1eb0fe0a34
10
README.md
10
README.md
@ -261,7 +261,15 @@ This data source doesn't accept arguments.
|
||||
* `private_key` - (Required) The PEM encoded private key
|
||||
|
||||
###### Attributes
|
||||
This resource doesn't expose any additional attributes.
|
||||
* `expiration_date` - The expiration date (RFC 3339)
|
||||
* `file_name` - The file name
|
||||
* `issuer` - The issuer
|
||||
* `public_key_size` - The public key size
|
||||
* `public_key_type` - The public key type
|
||||
* `ssl_fingerprint` - The SSL fingerprint
|
||||
* `start_date` - The start date (RFC 3339)
|
||||
* `subject` - The subject
|
||||
* `subject_alternative_names` - The subject alternative names
|
||||
|
||||
##### DNS (proxmox_virtual_environment_dns)
|
||||
|
||||
|
@ -26,3 +26,39 @@ resource "tls_self_signed_cert" "proxmox_virtual_environment_certificate" {
|
||||
"server_auth",
|
||||
]
|
||||
}
|
||||
|
||||
output "resource_proxmox_virtual_environment_certificate_example_expiration_date" {
|
||||
value = "${proxmox_virtual_environment_certificate.example.expiration_date}"
|
||||
}
|
||||
|
||||
output "resource_proxmox_virtual_environment_certificate_example_file_name" {
|
||||
value = "${proxmox_virtual_environment_certificate.example.file_name}"
|
||||
}
|
||||
|
||||
output "resource_proxmox_virtual_environment_certificate_example_issuer" {
|
||||
value = "${proxmox_virtual_environment_certificate.example.issuer}"
|
||||
}
|
||||
|
||||
output "resource_proxmox_virtual_environment_certificate_example_public_key_size" {
|
||||
value = "${proxmox_virtual_environment_certificate.example.public_key_size}"
|
||||
}
|
||||
|
||||
output "resource_proxmox_virtual_environment_certificate_example_public_key_type" {
|
||||
value = "${proxmox_virtual_environment_certificate.example.public_key_type}"
|
||||
}
|
||||
|
||||
output "resource_proxmox_virtual_environment_certificate_example_ssl_fingerprint" {
|
||||
value = "${proxmox_virtual_environment_certificate.example.ssl_fingerprint}"
|
||||
}
|
||||
|
||||
output "resource_proxmox_virtual_environment_certificate_example_start_date" {
|
||||
value = "${proxmox_virtual_environment_certificate.example.start_date}"
|
||||
}
|
||||
|
||||
output "resource_proxmox_virtual_environment_certificate_example_subject" {
|
||||
value = "${proxmox_virtual_environment_certificate.example.subject}"
|
||||
}
|
||||
|
||||
output "resource_proxmox_virtual_environment_certificate_example_subject_alternative_names" {
|
||||
value = "${proxmox_virtual_environment_certificate.example.subject_alternative_names}"
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ package proxmoxtf
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/danitso/terraform-provider-proxmox/proxmox"
|
||||
"github.com/hashicorp/terraform/helper/schema"
|
||||
@ -16,11 +17,20 @@ const (
|
||||
dvResourceVirtualEnvironmentCertificateCertificateChain = ""
|
||||
dvResourceVirtualEnvironmentCertificateOverwrite = false
|
||||
|
||||
mkResourceVirtualEnvironmentCertificateCertificate = "certificate"
|
||||
mkResourceVirtualEnvironmentCertificateCertificateChain = "certificate_chain"
|
||||
mkResourceVirtualEnvironmentCertificateNodeName = "node_name"
|
||||
mkResourceVirtualEnvironmentCertificateOverwrite = "overwrite"
|
||||
mkResourceVirtualEnvironmentCertificatePrivateKey = "private_key"
|
||||
mkResourceVirtualEnvironmentCertificateCertificate = "certificate"
|
||||
mkResourceVirtualEnvironmentCertificateCertificateChain = "certificate_chain"
|
||||
mkResourceVirtualEnvironmentCertificateFileName = "file_name"
|
||||
mkResourceVirtualEnvironmentCertificateIssuer = "issuer"
|
||||
mkResourceVirtualEnvironmentCertificateNodeName = "node_name"
|
||||
mkResourceVirtualEnvironmentCertificateExpirationDate = "expiration_date"
|
||||
mkResourceVirtualEnvironmentCertificateOverwrite = "overwrite"
|
||||
mkResourceVirtualEnvironmentCertificatePrivateKey = "private_key"
|
||||
mkResourceVirtualEnvironmentCertificatePublicKeySize = "public_key_size"
|
||||
mkResourceVirtualEnvironmentCertificatePublicKeyType = "public_key_type"
|
||||
mkResourceVirtualEnvironmentCertificateSSLFingerprint = "ssl_fingerprint"
|
||||
mkResourceVirtualEnvironmentCertificateStartDate = "start_date"
|
||||
mkResourceVirtualEnvironmentCertificateSubject = "subject"
|
||||
mkResourceVirtualEnvironmentCertificateSubjectAlternativeNames = "subject_alternative_names"
|
||||
)
|
||||
|
||||
func resourceVirtualEnvironmentCertificate() *schema.Resource {
|
||||
@ -37,6 +47,21 @@ func resourceVirtualEnvironmentCertificate() *schema.Resource {
|
||||
Optional: true,
|
||||
Default: dvResourceVirtualEnvironmentCertificateCertificateChain,
|
||||
},
|
||||
mkResourceVirtualEnvironmentCertificateExpirationDate: &schema.Schema{
|
||||
Type: schema.TypeString,
|
||||
Description: "The expiration date",
|
||||
Computed: true,
|
||||
},
|
||||
mkResourceVirtualEnvironmentCertificateFileName: &schema.Schema{
|
||||
Type: schema.TypeString,
|
||||
Description: "The file name",
|
||||
Computed: true,
|
||||
},
|
||||
mkResourceVirtualEnvironmentCertificateIssuer: &schema.Schema{
|
||||
Type: schema.TypeString,
|
||||
Description: "The issuer",
|
||||
Computed: true,
|
||||
},
|
||||
mkResourceVirtualEnvironmentCertificateNodeName: &schema.Schema{
|
||||
Type: schema.TypeString,
|
||||
Description: "The node name",
|
||||
@ -55,6 +80,37 @@ func resourceVirtualEnvironmentCertificate() *schema.Resource {
|
||||
Required: true,
|
||||
Sensitive: true,
|
||||
},
|
||||
mkResourceVirtualEnvironmentCertificatePublicKeySize: &schema.Schema{
|
||||
Type: schema.TypeInt,
|
||||
Description: "The public key size",
|
||||
Computed: true,
|
||||
},
|
||||
mkResourceVirtualEnvironmentCertificatePublicKeyType: &schema.Schema{
|
||||
Type: schema.TypeString,
|
||||
Description: "The public key type",
|
||||
Computed: true,
|
||||
},
|
||||
mkResourceVirtualEnvironmentCertificateSSLFingerprint: &schema.Schema{
|
||||
Type: schema.TypeString,
|
||||
Description: "The SSL fingerprint",
|
||||
Computed: true,
|
||||
},
|
||||
mkResourceVirtualEnvironmentCertificateStartDate: &schema.Schema{
|
||||
Type: schema.TypeString,
|
||||
Description: "The start date",
|
||||
Computed: true,
|
||||
},
|
||||
mkResourceVirtualEnvironmentCertificateSubject: &schema.Schema{
|
||||
Type: schema.TypeString,
|
||||
Description: "The subject",
|
||||
Computed: true,
|
||||
},
|
||||
mkResourceVirtualEnvironmentCertificateSubjectAlternativeNames: &schema.Schema{
|
||||
Type: schema.TypeList,
|
||||
Description: "The subject alternative names",
|
||||
Computed: true,
|
||||
Elem: &schema.Schema{Type: schema.TypeString},
|
||||
},
|
||||
},
|
||||
Create: resourceVirtualEnvironmentCertificateCreate,
|
||||
Read: resourceVirtualEnvironmentCertificateRead,
|
||||
@ -147,6 +203,74 @@ func resourceVirtualEnvironmentCertificateRead(d *schema.ResourceData, m interfa
|
||||
d.Set(mkResourceVirtualEnvironmentCertificateCertificate, newCertificate)
|
||||
d.Set(mkResourceVirtualEnvironmentCertificateCertificateChain, newCertificateChain)
|
||||
}
|
||||
|
||||
d.Set(mkResourceVirtualEnvironmentCertificateFileName, *c.FileName)
|
||||
|
||||
if c.NotAfter != nil {
|
||||
t := time.Time(*c.NotAfter)
|
||||
|
||||
d.Set(mkResourceVirtualEnvironmentCertificateExpirationDate, t.UTC().Format(time.RFC3339))
|
||||
} else {
|
||||
d.Set(mkResourceVirtualEnvironmentCertificateExpirationDate, "")
|
||||
}
|
||||
|
||||
if c.Issuer != nil {
|
||||
d.Set(mkResourceVirtualEnvironmentCertificateIssuer, *c.Issuer)
|
||||
} else {
|
||||
d.Set(mkResourceVirtualEnvironmentCertificateIssuer, "")
|
||||
}
|
||||
|
||||
if c.PublicKeyBits != nil {
|
||||
d.Set(mkResourceVirtualEnvironmentCertificatePublicKeySize, *c.PublicKeyBits)
|
||||
} else {
|
||||
d.Set(mkResourceVirtualEnvironmentCertificatePublicKeySize, 0)
|
||||
}
|
||||
|
||||
if c.PublicKeyType != nil {
|
||||
pkType := *c.PublicKeyType
|
||||
|
||||
for _, pkt := range []string{"ecdsa", "dsa", "rsa"} {
|
||||
if strings.Contains(pkType, pkt) {
|
||||
pkType = pkt
|
||||
}
|
||||
}
|
||||
|
||||
d.Set(mkResourceVirtualEnvironmentCertificatePublicKeyType, pkType)
|
||||
} else {
|
||||
d.Set(mkResourceVirtualEnvironmentCertificatePublicKeyType, "")
|
||||
}
|
||||
|
||||
if c.Fingerprint != nil {
|
||||
d.Set(mkResourceVirtualEnvironmentCertificateSSLFingerprint, *c.Fingerprint)
|
||||
} else {
|
||||
d.Set(mkResourceVirtualEnvironmentCertificateSSLFingerprint, "")
|
||||
}
|
||||
|
||||
if c.NotBefore != nil {
|
||||
t := time.Time(*c.NotBefore)
|
||||
|
||||
d.Set(mkResourceVirtualEnvironmentCertificateStartDate, t.UTC().Format(time.RFC3339))
|
||||
} else {
|
||||
d.Set(mkResourceVirtualEnvironmentCertificateStartDate, "")
|
||||
}
|
||||
|
||||
if c.Subject != nil {
|
||||
d.Set(mkResourceVirtualEnvironmentCertificateSubject, *c.Subject)
|
||||
} else {
|
||||
d.Set(mkResourceVirtualEnvironmentCertificateSubject, "")
|
||||
}
|
||||
|
||||
if c.SubjectAlternativeNames != nil {
|
||||
sanList := make([]interface{}, len(*c.SubjectAlternativeNames))
|
||||
|
||||
for i, san := range *c.SubjectAlternativeNames {
|
||||
sanList[i] = san
|
||||
}
|
||||
|
||||
d.Set(mkResourceVirtualEnvironmentCertificateSubjectAlternativeNames, sanList)
|
||||
} else {
|
||||
d.Set(mkResourceVirtualEnvironmentCertificateSubjectAlternativeNames, []interface{}{})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -33,15 +33,45 @@ func TestResourceVirtualEnvironmentCertificateSchema(t *testing.T) {
|
||||
mkResourceVirtualEnvironmentCertificateCertificateChain,
|
||||
})
|
||||
|
||||
testComputedAttributes(t, s, []string{
|
||||
mkResourceVirtualEnvironmentCertificateExpirationDate,
|
||||
mkResourceVirtualEnvironmentCertificateFileName,
|
||||
mkResourceVirtualEnvironmentCertificateIssuer,
|
||||
mkResourceVirtualEnvironmentCertificatePublicKeySize,
|
||||
mkResourceVirtualEnvironmentCertificatePublicKeyType,
|
||||
mkResourceVirtualEnvironmentCertificateSSLFingerprint,
|
||||
mkResourceVirtualEnvironmentCertificateStartDate,
|
||||
mkResourceVirtualEnvironmentCertificateSubject,
|
||||
mkResourceVirtualEnvironmentCertificateSubjectAlternativeNames,
|
||||
})
|
||||
|
||||
testSchemaValueTypes(t, s, []string{
|
||||
mkResourceVirtualEnvironmentCertificateCertificate,
|
||||
mkResourceVirtualEnvironmentCertificateCertificateChain,
|
||||
mkResourceVirtualEnvironmentCertificateExpirationDate,
|
||||
mkResourceVirtualEnvironmentCertificateFileName,
|
||||
mkResourceVirtualEnvironmentCertificateIssuer,
|
||||
mkResourceVirtualEnvironmentCertificateNodeName,
|
||||
mkResourceVirtualEnvironmentCertificatePrivateKey,
|
||||
mkResourceVirtualEnvironmentCertificatePublicKeySize,
|
||||
mkResourceVirtualEnvironmentCertificatePublicKeyType,
|
||||
mkResourceVirtualEnvironmentCertificateSSLFingerprint,
|
||||
mkResourceVirtualEnvironmentCertificateStartDate,
|
||||
mkResourceVirtualEnvironmentCertificateSubject,
|
||||
mkResourceVirtualEnvironmentCertificateSubjectAlternativeNames,
|
||||
}, []schema.ValueType{
|
||||
schema.TypeString,
|
||||
schema.TypeString,
|
||||
schema.TypeString,
|
||||
schema.TypeString,
|
||||
schema.TypeString,
|
||||
schema.TypeString,
|
||||
schema.TypeString,
|
||||
schema.TypeInt,
|
||||
schema.TypeString,
|
||||
schema.TypeString,
|
||||
schema.TypeString,
|
||||
schema.TypeString,
|
||||
schema.TypeList,
|
||||
})
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user