gcloud asset list --project=xxxxxx >assets.yml
ruby import.rb <assets.yml >assets.json
pulumi import --file assets.json
require 'yaml' | |
require 'json' | |
assets = YAML.load_stream(STDIN.read) | |
type_map = { | |
'compute.googleapis.com/BackendService' => 'gcp:compute/backendService:BackendService', | |
'compute.googleapis.com/NetworkEndpointGroup' => 'gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup', | |
'compute.googleapis.com/UrlMap' => 'gcp:compute/uRLMap:URLMap', | |
'iam.googleapis.com/ServiceAccount' => 'gcp:serviceAccount/account:Account', | |
'run.googleapis.com/DomainMapping' => 'gcp:cloudrun/domainMapping:DomainMapping', | |
'run.googleapis.com/Service' => 'gcp:cloudrun/service:Service', | |
'sqladmin.googleapis.com/Instance' => 'gcp:sql/database:Database', | |
'storage.googleapis.com/Bucket' => 'gcp:storage/bucket:Bucket', | |
} | |
output = assets.filter { |asset| type_map[asset['assetType']] }.map do |asset| | |
pulumi_type = type_map[asset['assetType']] | |
asset_name = asset['name'].split('/') | |
asset_name = case pulumi_type | |
when 'gcp:cloudrun/service:Service', 'gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup' | |
"#{asset_name[6]}/#{asset_name[8]}" | |
else | |
asset_name.last | |
end | |
{ | |
'type' => pulumi_type, | |
'name' => asset_name, | |
'id' => asset_name | |
} | |
end | |
puts JSON.pretty_generate({'resources' => output}) |