in providers/ibm/ibm_kp.go [100:176]
func (g *KPGenerator) InitResources() error {
region := g.Args["region"].(string)
bmxConfig := &bluemix.Config{
BluemixAPIKey: os.Getenv("IC_API_KEY"),
}
sess, err := session.New(bmxConfig)
if err != nil {
return err
}
catalogClient, err := catalog.New(sess)
if err != nil {
return err
}
controllerClient, err := controllerv2.New(sess)
if err != nil {
return err
}
serviceID, err := catalogClient.ResourceCatalog().FindByName("kms", true)
if err != nil {
return err
}
query := controllerv2.ServiceInstanceQuery{
ServiceID: serviceID[0].ID,
}
kpInstances, err := controllerClient.ResourceServiceInstanceV2().ListInstances(query)
if err != nil {
return err
}
kpurl := fmt.Sprintf("https://%s.kms.cloud.ibm.com", region)
options := kp.ClientConfig{
BaseURL: envFallBack([]string{"IBMCLOUD_KP_API_ENDPOINT"}, kpurl),
APIKey: os.Getenv("IC_API_KEY"),
Verbose: kp.VerboseFailOnly,
}
client, err := kp.New(options, kp.DefaultTransport())
if err != nil {
return err
}
fnObjt := g.loadKP()
for _, kpInstance := range kpInstances {
g.Resources = append(g.Resources, fnObjt(kpInstance.ID, kpInstance.Name))
resourceName := g.Resources[len(g.Resources)-1:][0].ResourceName
client.Config.InstanceID = kpInstance.Guid
output, err := client.GetKeys(context.Background(), 100, 0)
if err != nil {
return err
}
fnObjt := g.loadkPKeys()
for _, key := range output.Keys {
var dependsOn []string
dependsOn = append(dependsOn,
"ibm_resource_instance."+resourceName)
g.Resources = append(g.Resources, fnObjt(key.CRN, key.Name, dependsOn))
resourceName := g.Resources[len(g.Resources)-1:][0].ResourceName
fnObjt := g.loadkPKeyAliases()
dependsOn = append(dependsOn,
"ibm_kms_key."+resourceName)
for _, alias := range key.Aliases {
g.Resources = append(g.Resources, fnObjt(key.CRN, alias, dependsOn))
}
policies, _ := client.GetPolicies(context.Background(), key.ID)
funObjt := g.loadKpKeyPolicies()
for range policies {
g.Resources = append(g.Resources, funObjt(key.CRN, dependsOn))
}
}
}
return nil
}