mirror of
https://github.com/bpg/terraform-provider-proxmox.git
synced 2025-07-04 04:22: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
|
* `private_key` - (Required) The PEM encoded private key
|
||||||
|
|
||||||
###### Attributes
|
###### 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)
|
##### DNS (proxmox_virtual_environment_dns)
|
||||||
|
|
||||||
|
@ -26,3 +26,39 @@ resource "tls_self_signed_cert" "proxmox_virtual_environment_certificate" {
|
|||||||
"server_auth",
|
"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 (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/danitso/terraform-provider-proxmox/proxmox"
|
"github.com/danitso/terraform-provider-proxmox/proxmox"
|
||||||
"github.com/hashicorp/terraform/helper/schema"
|
"github.com/hashicorp/terraform/helper/schema"
|
||||||
@ -16,11 +17,20 @@ const (
|
|||||||
dvResourceVirtualEnvironmentCertificateCertificateChain = ""
|
dvResourceVirtualEnvironmentCertificateCertificateChain = ""
|
||||||
dvResourceVirtualEnvironmentCertificateOverwrite = false
|
dvResourceVirtualEnvironmentCertificateOverwrite = false
|
||||||
|
|
||||||
mkResourceVirtualEnvironmentCertificateCertificate = "certificate"
|
mkResourceVirtualEnvironmentCertificateCertificate = "certificate"
|
||||||
mkResourceVirtualEnvironmentCertificateCertificateChain = "certificate_chain"
|
mkResourceVirtualEnvironmentCertificateCertificateChain = "certificate_chain"
|
||||||
mkResourceVirtualEnvironmentCertificateNodeName = "node_name"
|
mkResourceVirtualEnvironmentCertificateFileName = "file_name"
|
||||||
mkResourceVirtualEnvironmentCertificateOverwrite = "overwrite"
|
mkResourceVirtualEnvironmentCertificateIssuer = "issuer"
|
||||||
mkResourceVirtualEnvironmentCertificatePrivateKey = "private_key"
|
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 {
|
func resourceVirtualEnvironmentCertificate() *schema.Resource {
|
||||||
@ -37,6 +47,21 @@ func resourceVirtualEnvironmentCertificate() *schema.Resource {
|
|||||||
Optional: true,
|
Optional: true,
|
||||||
Default: dvResourceVirtualEnvironmentCertificateCertificateChain,
|
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{
|
mkResourceVirtualEnvironmentCertificateNodeName: &schema.Schema{
|
||||||
Type: schema.TypeString,
|
Type: schema.TypeString,
|
||||||
Description: "The node name",
|
Description: "The node name",
|
||||||
@ -55,6 +80,37 @@ func resourceVirtualEnvironmentCertificate() *schema.Resource {
|
|||||||
Required: true,
|
Required: true,
|
||||||
Sensitive: 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,
|
Create: resourceVirtualEnvironmentCertificateCreate,
|
||||||
Read: resourceVirtualEnvironmentCertificateRead,
|
Read: resourceVirtualEnvironmentCertificateRead,
|
||||||
@ -147,6 +203,74 @@ func resourceVirtualEnvironmentCertificateRead(d *schema.ResourceData, m interfa
|
|||||||
d.Set(mkResourceVirtualEnvironmentCertificateCertificate, newCertificate)
|
d.Set(mkResourceVirtualEnvironmentCertificateCertificate, newCertificate)
|
||||||
d.Set(mkResourceVirtualEnvironmentCertificateCertificateChain, newCertificateChain)
|
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,
|
mkResourceVirtualEnvironmentCertificateCertificateChain,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
testComputedAttributes(t, s, []string{
|
||||||
|
mkResourceVirtualEnvironmentCertificateExpirationDate,
|
||||||
|
mkResourceVirtualEnvironmentCertificateFileName,
|
||||||
|
mkResourceVirtualEnvironmentCertificateIssuer,
|
||||||
|
mkResourceVirtualEnvironmentCertificatePublicKeySize,
|
||||||
|
mkResourceVirtualEnvironmentCertificatePublicKeyType,
|
||||||
|
mkResourceVirtualEnvironmentCertificateSSLFingerprint,
|
||||||
|
mkResourceVirtualEnvironmentCertificateStartDate,
|
||||||
|
mkResourceVirtualEnvironmentCertificateSubject,
|
||||||
|
mkResourceVirtualEnvironmentCertificateSubjectAlternativeNames,
|
||||||
|
})
|
||||||
|
|
||||||
testSchemaValueTypes(t, s, []string{
|
testSchemaValueTypes(t, s, []string{
|
||||||
mkResourceVirtualEnvironmentCertificateCertificate,
|
mkResourceVirtualEnvironmentCertificateCertificate,
|
||||||
mkResourceVirtualEnvironmentCertificateCertificateChain,
|
mkResourceVirtualEnvironmentCertificateCertificateChain,
|
||||||
|
mkResourceVirtualEnvironmentCertificateExpirationDate,
|
||||||
|
mkResourceVirtualEnvironmentCertificateFileName,
|
||||||
|
mkResourceVirtualEnvironmentCertificateIssuer,
|
||||||
mkResourceVirtualEnvironmentCertificateNodeName,
|
mkResourceVirtualEnvironmentCertificateNodeName,
|
||||||
mkResourceVirtualEnvironmentCertificatePrivateKey,
|
mkResourceVirtualEnvironmentCertificatePrivateKey,
|
||||||
|
mkResourceVirtualEnvironmentCertificatePublicKeySize,
|
||||||
|
mkResourceVirtualEnvironmentCertificatePublicKeyType,
|
||||||
|
mkResourceVirtualEnvironmentCertificateSSLFingerprint,
|
||||||
|
mkResourceVirtualEnvironmentCertificateStartDate,
|
||||||
|
mkResourceVirtualEnvironmentCertificateSubject,
|
||||||
|
mkResourceVirtualEnvironmentCertificateSubjectAlternativeNames,
|
||||||
}, []schema.ValueType{
|
}, []schema.ValueType{
|
||||||
schema.TypeString,
|
schema.TypeString,
|
||||||
schema.TypeString,
|
schema.TypeString,
|
||||||
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