providers/azuread/azuread_service.go (107 lines of code) (raw):

// Copyright 2019 The Terraformer Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package azuread import ( "context" "fmt" "log" "github.com/GoogleCloudPlatform/terraformer/terraformutils" "github.com/manicminer/hamilton/auth" "github.com/manicminer/hamilton/environments" "github.com/manicminer/hamilton/msgraph" ) type AzureADService struct { //nolint terraformutils.Service } type ServiceGenerator interface { terraformutils.ServiceGenerator GetResourceConnections() map[string][]string } func (az *AzureADService) getAuthorizer() (auth.Authorizer, error) { environment := environments.Global ctx := context.Background() tenantID := az.Args["tenant_id"].(string) clientID := az.Args["client_id"].(string) clientSecret := az.Args["client_secret"].(string) config := &auth.Config{ Environment: environment, TenantID: tenantID, ClientID: clientID, ClientSecret: clientSecret, EnableClientSecretAuth: true, } authorizer, err := config.NewAuthorizer(ctx, config.Environment.MsGraph) if err != nil { fmt.Println(err.Error()) log.Println(err.Error()) return nil, err } return authorizer, nil } func (az *AzureADService) getUserClient() (*msgraph.UsersClient, error) { authorizer, err := az.getAuthorizer() if err != nil { fmt.Println(err.Error()) log.Println(err.Error()) return nil, err } tenantID := az.Args["tenant_id"].(string) client := msgraph.NewUsersClient(tenantID) client.BaseClient.Authorizer = authorizer return client, nil } func (az *AzureADService) getApplicationsClient() (*msgraph.ApplicationsClient, error) { authorizer, err := az.getAuthorizer() if err != nil { fmt.Println(err.Error()) log.Println(err.Error()) return nil, err } tenantID := az.Args["tenant_id"].(string) client := msgraph.NewApplicationsClient(tenantID) client.BaseClient.Authorizer = authorizer return client, nil } func (az *AzureADService) getGroupsClient() (*msgraph.GroupsClient, error) { authorizer, err := az.getAuthorizer() if err != nil { fmt.Println(err.Error()) log.Println(err.Error()) return nil, err } tenantID := az.Args["tenant_id"].(string) client := msgraph.NewGroupsClient(tenantID) client.BaseClient.Authorizer = authorizer return client, nil } func (az *AzureADService) getServicePrincipalsClient() (*msgraph.ServicePrincipalsClient, error) { authorizer, err := az.getAuthorizer() if err != nil { fmt.Println(err.Error()) log.Println(err.Error()) return nil, err } tenantID := az.Args["tenant_id"].(string) client := msgraph.NewServicePrincipalsClient(tenantID) client.BaseClient.Authorizer = authorizer return client, nil } func (az *AzureADService) getAppRoleAssignmentsClient() (*msgraph.AppRoleAssignedToClient, error) { authorizer, err := az.getAuthorizer() if err != nil { fmt.Println(err.Error()) log.Println(err.Error()) return nil, err } tenantID := az.Args["tenant_id"].(string) client := msgraph.NewAppRoleAssignedToClient(tenantID) client.BaseClient.Authorizer = authorizer return client, nil } func (az *AzureADService) GetResourceConnections() map[string][]string { return nil } func (az *AzureADService) appendSimpleResource(id string, resourceName string, resourceType string) { newResource := terraformutils.NewResource(id, resourceName, resourceType, az.ProviderName, map[string]string{ "id": id, }, []string{}, map[string]interface{}{}) az.Resources = append(az.Resources, newResource) }