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