loadbalancerservercertificate.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. // Copyright 2019 Yunion
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. package aliyun
  15. import (
  16. "fmt"
  17. "strings"
  18. "time"
  19. "yunion.io/x/cloudmux/pkg/apis"
  20. "yunion.io/x/cloudmux/pkg/multicloud"
  21. )
  22. type SubjectAlternativeNames struct {
  23. SubjectAlternativeName []string
  24. }
  25. type SLoadbalancerServerCertificate struct {
  26. multicloud.SResourceBase
  27. AliyunTags
  28. region *SRegion
  29. ServerCertificateId string // 服务器证书ID。
  30. ServerCertificateName string // 服务器证书名称。
  31. Fingerprint string // 服务器证书的指纹。
  32. CreateTime string // 服务器证书上传的时间。
  33. CreateTimeStamp uint64 // 服务器证书上传的时间戳。
  34. IsAliCloudCertificate int // 是否是阿里云证书。0代表不是阿里云证书。
  35. AliCloudCertificateName string // 阿里云证书名称。
  36. AliCloudCertificateId string // 阿里云证书ID。
  37. ExpireTime time.Time // 过期时间。
  38. ExpireTimeStamp uint64 // 过期时间戳。
  39. CommonName string // 域名,对应证书的CommonName字段。
  40. SubjectAlternativeNames SubjectAlternativeNames // 数组格式,返回证书的备用域名列表,对应证书的Subject Alternative Name字段,详情请参见SubjectAlternativeNames。
  41. ResourceGroupId string // 实例的企业资源组ID
  42. RegionId string // 负载均衡实例的地域。
  43. }
  44. func (certificate *SLoadbalancerServerCertificate) GetPublickKey() string {
  45. return ""
  46. }
  47. func (certificate *SLoadbalancerServerCertificate) GetPrivateKey() string {
  48. return ""
  49. }
  50. func (certificate *SLoadbalancerServerCertificate) GetName() string {
  51. return certificate.ServerCertificateName
  52. }
  53. func (certificate *SLoadbalancerServerCertificate) GetId() string {
  54. return certificate.ServerCertificateId
  55. }
  56. func (certificate *SLoadbalancerServerCertificate) GetGlobalId() string {
  57. return certificate.GetId()
  58. }
  59. func (certificate *SLoadbalancerServerCertificate) GetStatus() string {
  60. return apis.STATUS_AVAILABLE
  61. }
  62. func (certificate *SLoadbalancerServerCertificate) GetCommonName() string {
  63. return certificate.CommonName
  64. }
  65. func (certificate *SLoadbalancerServerCertificate) GetSubjectAlternativeNames() string {
  66. return strings.Join(certificate.SubjectAlternativeNames.SubjectAlternativeName, ",")
  67. }
  68. func (certificate *SLoadbalancerServerCertificate) GetFingerprint() string {
  69. return fmt.Sprintf("sha1:%s", strings.Replace(certificate.Fingerprint, ":", "", -1))
  70. }
  71. func (certificate *SLoadbalancerServerCertificate) GetExpireTime() time.Time {
  72. return certificate.ExpireTime
  73. }
  74. func (certificate *SLoadbalancerServerCertificate) Refresh() error {
  75. return nil
  76. }
  77. func (region *SRegion) UpdateServerCertificateName(certId, name string) error {
  78. params := map[string]string{}
  79. params["RegionId"] = region.RegionId
  80. params["ServerCertificateId"] = certId
  81. params["ServerCertificateName"] = name
  82. _, err := region.lbRequest("SetServerCertificateName", params)
  83. return err
  84. }
  85. func (certificate *SLoadbalancerServerCertificate) Delete() error {
  86. return certificate.region.DeleteServerCertificate(certificate.ServerCertificateId)
  87. }
  88. func (region *SRegion) DeleteServerCertificate(certId string) error {
  89. params := map[string]string{}
  90. params["RegionId"] = region.RegionId
  91. params["ServerCertificateId"] = certId
  92. _, err := region.lbRequest("DeleteServerCertificate", params)
  93. return err
  94. }
  95. func (region *SRegion) GetLoadbalancerServerCertificates() ([]SLoadbalancerServerCertificate, error) {
  96. params := map[string]string{}
  97. params["RegionId"] = region.RegionId
  98. body, err := region.lbRequest("DescribeServerCertificates", params)
  99. if err != nil {
  100. return nil, err
  101. }
  102. certificates := []SLoadbalancerServerCertificate{}
  103. return certificates, body.Unmarshal(&certificates, "ServerCertificates", "ServerCertificate")
  104. }
  105. func (certificate *SLoadbalancerServerCertificate) GetProjectId() string {
  106. return certificate.ResourceGroupId
  107. }