Skip to content

Commit afaccea

Browse files
committed
idp-1
1 parent 38499ae commit afaccea

File tree

3 files changed

+162
-0
lines changed

3 files changed

+162
-0
lines changed

codefresh/data_idp.go

+153
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
package codefresh
2+
3+
import (
4+
"fmt"
5+
cfClient "github.com/codefresh-io/terraform-provider-codefresh/client"
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
7+
)
8+
9+
func dataSourceIdps() *schema.Resource {
10+
return &schema.Resource{
11+
Read: dataSourceIdpRead,
12+
Schema: IdpSchema(),
13+
}
14+
}
15+
16+
//IdpSchema -
17+
func IdpSchema() map[string]*schema.Schema {
18+
return map[string]*schema.Schema{
19+
"_id": {
20+
Type: schema.TypeString,
21+
Optional: true,
22+
},
23+
"display_name": {
24+
Type: schema.TypeString,
25+
Optional: true,
26+
},
27+
"client_type": {
28+
Type: schema.TypeString,
29+
Optional: true,
30+
},
31+
"client_host": {
32+
Type: schema.TypeString,
33+
Computed: true,
34+
},
35+
"access_token": {
36+
Type: schema.TypeString,
37+
Computed: true,
38+
},
39+
"client_id": {
40+
Type: schema.TypeString,
41+
Computed: true,
42+
},
43+
"client_secret": {
44+
Type: schema.TypeString,
45+
Computed: true,
46+
},
47+
"app_id": {
48+
Type: schema.TypeString,
49+
Computed: true,
50+
},
51+
"cookie_key": {
52+
Type: schema.TypeString,
53+
Computed: true,
54+
},
55+
"cookie_iv": {
56+
Type: schema.TypeString,
57+
Computed: true,
58+
},
59+
"tenant": {
60+
Type: schema.TypeString,
61+
Computed: true,
62+
},
63+
"scopes": {
64+
Type: schema.TypeList,
65+
Computed: true,
66+
Elem: &schema.Schema{
67+
Type: schema.TypeString,
68+
},
69+
},
70+
"accounts": {
71+
Type: schema.TypeList,
72+
Computed: true,
73+
Elem: &schema.Schema{
74+
Type: schema.TypeString,
75+
},
76+
},
77+
}
78+
}
79+
80+
func dataSourceIdpRead(d *schema.ResourceData, meta interface{}) error {
81+
82+
client := meta.(*cfClient.Client)
83+
84+
idps, err := client.GetIDPs()
85+
if err != nil {
86+
return err
87+
}
88+
89+
_id, _idOk := d.GetOk("_id")
90+
displayName, displayNameOk := d.GetOk("displayName")
91+
clientType, clientTypeOk := d.GetOk("clientType")
92+
93+
if !(_idOk || displayNameOk || clientTypeOk) {
94+
return fmt.Errorf("[EROOR] Idp data_source - no parameters specified")
95+
}
96+
for _, idp := range *idps {
97+
if _idOk && _id.(string) != idp.ID {
98+
continue
99+
}
100+
if displayNameOk && displayName.(string) != idp.DisplayName {
101+
continue
102+
}
103+
if clientTypeOk && clientType.(string) != idp.ClientType {
104+
continue
105+
}
106+
err = mapDataIdpToResource(idp, d)
107+
if err != nil {
108+
return err
109+
}
110+
}
111+
112+
if d.Id() == "" {
113+
return fmt.Errorf("[EROOR] Idp wasn't found")
114+
}
115+
116+
return nil
117+
}
118+
119+
func mapDataIdpToResource(idp cfClient.IDP, d *schema.ResourceData) error {
120+
121+
d.SetId(idp.ID)
122+
123+
d.Set("access_token", idp.Access_token)// string `json:"access_token,omitempty"`
124+
125+
126+
d.Set("accounts", flattenStringArr(idp.Accounts)) //
127+
//d.Set("apiHost", idp.ApiHost) // string `json:"apiHost,omitempty"`
128+
//d.Set("apiPathPrefix", idp.ApiPathPrefix) // string `json:"apiPathPrefix,omitempty"`
129+
//d.Set("apiURL", idp.ApiURL) // string `json:"apiURL,omitempty"`
130+
//d.Set("appId", idp.AppId) // string `json:"appId,omitempty"`
131+
//d.Set("authURL", idp.AuthURL) // string `json:"authURL,omitempty"`
132+
d.Set("client_host", idp.ClientHost) // string `json:"clientHost,omitempty"`
133+
d.Set("client_id", idp.ClientId) // string `json:"clientId,omitempty"`
134+
d.Set("client_name", idp.ClientName) // string `json:"clientName,omitempty"`
135+
d.Set("client_secret",idp.ClientSecret) // string `json:"clientSecret,omitempty"`
136+
d.Set("client_type", idp.ClientType) // string `json:"clientType,omitempty"`
137+
d.Set("cookie_iv", idp.CookieIv) // string `json:"cookieIv,omitempty"`
138+
d.Set("cookie_key", idp.CookieKey) // string `json:"cookieKey,omitempty"`
139+
d.Set("display_name", idp.DisplayName) // string `json:"displayName,omitempty"`
140+
d.Set("_id", idp.ID) // string `json:"_id,omitempty"`
141+
//d.Set("IDPLoginUrl", idp.IDPLoginUrl) // string `json:"IDPLoginUrl,omitempty"`
142+
//d.Set("loginUrl", idp.LoginUrl) // string `json:"loginUrl,omitempty"`
143+
//d.Set("redirectUiUrl", idp.RedirectUiUrl) // string `json:"redirectUiUrl,omitempty"`
144+
//d.Set("redirectUrl", idp.RedirectUrl) // string `json:"redirectUrl,omitempty"`
145+
//d.Set("refreshTokenURL", idp.RefreshTokenURL) // string `json:"refreshTokenURL,omitempty"`
146+
d.Set("scopes", flattenStringArr(idp.Scopes)) // []string `json:"scopes,omitempty"`
147+
d.Set("tenant", idp.Tenant) // string `json:"tenant,omitempty"`
148+
//d.Set("tokenSecret", idp.TokenSecret) // string `json:"tokenSecret,omitempty"`
149+
//d.Set("tokenURL", idp.TokenURL) // string `json:"tokenURL,omitempty"`
150+
//d.Set("userProfileURL", idp.UserProfileURL) // string `json:"userProfileURL,omitempty"`
151+
152+
return nil
153+
}

codefresh/provider.go

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ func Provider() *schema.Provider {
2929
DataSourcesMap: map[string]*schema.Resource{
3030
"codefresh_users": dataSourceUsers(),
3131
"codefresh_user": dataSourceUser(),
32+
"codefresh_idps": dataSourceIdps(),
3233
},
3334
ResourcesMap: map[string]*schema.Resource{
3435
"codefresh_project": resourceProject(),

codefresh/utils.go

+8
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,11 @@ func convertVariables(vars []cfClient.Variable) map[string]string {
2626
}
2727
return res
2828
}
29+
30+
func flattenStringArr(sArr []string) []interface{} {
31+
iArr := []interface{}{}
32+
for _, s := range sArr {
33+
iArr = append(iArr, s)
34+
}
35+
return iArr
36+
}

0 commit comments

Comments
 (0)