1package alicloud 2 3import ( 4 "time" 5 6 "github.com/hashicorp/go-sockaddr" 7 "github.com/hashicorp/vault/sdk/helper/tokenutil" 8) 9 10type roleEntry struct { 11 tokenutil.TokenParams 12 13 ARN *arn `json:"arn"` 14 Policies []string `json:"policies"` 15 TTL time.Duration `json:"ttl"` 16 MaxTTL time.Duration `json:"max_ttl"` 17 Period time.Duration `json:"period"` 18 BoundCIDRs []*sockaddr.SockAddrMarshaler `json:"bound_cidrs"` 19} 20 21func (r *roleEntry) ToResponseData() map[string]interface{} { 22 cidrs := make([]string, len(r.BoundCIDRs)) 23 for i, cidr := range r.BoundCIDRs { 24 cidrs[i] = cidr.String() 25 } 26 d := map[string]interface{}{ 27 "arn": r.ARN.String(), 28 } 29 r.PopulateTokenData(d) 30 31 if len(r.Policies) > 0 { 32 d["policies"] = d["token_policies"] 33 } 34 if len(r.BoundCIDRs) > 0 { 35 d["bound_cidrs"] = d["token_bound_cidrs"] 36 } 37 if r.TTL > 0 { 38 d["ttl"] = int64(r.TTL.Seconds()) 39 } 40 if r.MaxTTL > 0 { 41 d["max_ttl"] = int64(r.MaxTTL.Seconds()) 42 } 43 if r.Period > 0 { 44 d["period"] = int64(r.Period.Seconds()) 45 } 46 47 return d 48} 49