mirror of https://github.com/kubernetes/kops.git
Refactor to reduce vfs -> terraformWriter dependency
This commit is contained in:
parent
aeca5f9b54
commit
c2810a5c96
|
@ -94,7 +94,7 @@ func (t *TerraformWriter) AddFileBytes(resourceType string, resourceName string,
|
|||
return LiteralFunctionExpression(fn, path), nil
|
||||
}
|
||||
|
||||
func (t *TerraformWriter) EnsureTerraformProvider(tfProvider *TerraformProvider) {
|
||||
func (t *TerraformWriter) EnsureTerraformProvider(name string, arguments map[string]string) *TerraformProvider {
|
||||
t.mutex.Lock()
|
||||
defer t.mutex.Unlock()
|
||||
|
||||
|
@ -102,17 +102,23 @@ func (t *TerraformWriter) EnsureTerraformProvider(tfProvider *TerraformProvider)
|
|||
t.Providers = make(map[string]*TerraformProvider)
|
||||
}
|
||||
|
||||
tfProvider := &TerraformProvider{
|
||||
Name: name,
|
||||
Arguments: arguments,
|
||||
}
|
||||
|
||||
key := tfProvider.Name
|
||||
|
||||
existing := t.Providers[key]
|
||||
if existing != nil {
|
||||
if reflect.DeepEqual(tfProvider, existing) {
|
||||
// already exists and matches
|
||||
return
|
||||
return existing
|
||||
}
|
||||
klog.Fatalf("attempt to add different tfProvider with key %q", key)
|
||||
}
|
||||
t.Providers[key] = tfProvider
|
||||
return tfProvider
|
||||
}
|
||||
|
||||
func (t *TerraformWriter) AddFilePath(resourceType string, resourceName string, key string, data []byte, base64 bool) (*Literal, error) {
|
||||
|
|
|
@ -119,15 +119,6 @@ func (p *GSPath) String() string {
|
|||
return p.Path()
|
||||
}
|
||||
|
||||
// TerraformProvider returns the provider name and necessary arguments
|
||||
func (p *GSPath) TerraformProvider() (*terraformWriter.TerraformProvider, error) {
|
||||
provider := &terraformWriter.TerraformProvider{
|
||||
Name: "google",
|
||||
Arguments: map[string]string{}, // GCS doesn't need the project and region specified
|
||||
}
|
||||
return provider, nil
|
||||
}
|
||||
|
||||
func (p *GSPath) Remove() error {
|
||||
ctx := context.TODO()
|
||||
done, err := RetryWithBackoff(gcsWriteBackoff, func() (bool, error) {
|
||||
|
@ -434,11 +425,8 @@ func (p *GSPath) RenderTerraform(w *terraformWriter.TerraformWriter, name string
|
|||
return fmt.Errorf("reading data: %v", err)
|
||||
}
|
||||
|
||||
tfProvider, err := p.TerraformProvider()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
w.EnsureTerraformProvider(tfProvider)
|
||||
tfProviderArguments := map[string]string{} // GCS doesn't need the project and region specified
|
||||
w.EnsureTerraformProvider("google", tfProviderArguments)
|
||||
|
||||
content, err := w.AddFilePath("google_storage_bucket_object", name, "content", bytes, false)
|
||||
if err != nil {
|
||||
|
|
|
@ -211,17 +211,6 @@ func (p *MemFSPath) IsPublic() (bool, error) {
|
|||
return isPublic, nil
|
||||
}
|
||||
|
||||
// Terraform support for integration tests.
|
||||
|
||||
func (p *MemFSPath) TerraformProvider() (*terraformWriter.TerraformProvider, error) {
|
||||
return &terraformWriter.TerraformProvider{
|
||||
Name: "aws",
|
||||
Arguments: map[string]string{
|
||||
"region": "us-test-1",
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
|
||||
type terraformMemFSFile struct {
|
||||
Bucket string `json:"bucket" cty:"bucket"`
|
||||
Key string `json:"key" cty:"key"`
|
||||
|
@ -237,11 +226,10 @@ func (p *MemFSPath) RenderTerraform(w *terraformWriter.TerraformWriter, name str
|
|||
return fmt.Errorf("reading data: %v", err)
|
||||
}
|
||||
|
||||
tfProvider, err := p.TerraformProvider()
|
||||
if err != nil {
|
||||
return err
|
||||
tfProviderArguments := map[string]string{
|
||||
"region": "us-test-1",
|
||||
}
|
||||
w.EnsureTerraformProvider(tfProvider)
|
||||
w.EnsureTerraformProvider("aws", tfProviderArguments)
|
||||
|
||||
content, err := w.AddFileBytes("aws_s3_object", name, "content", bytes, false)
|
||||
if err != nil {
|
||||
|
|
|
@ -89,24 +89,6 @@ func (p *S3Path) String() string {
|
|||
return p.Path()
|
||||
}
|
||||
|
||||
// TerraformProvider returns the provider name and necessary arguments
|
||||
func (p *S3Path) TerraformProvider() (*terraformWriter.TerraformProvider, error) {
|
||||
ctx := context.TODO()
|
||||
|
||||
bucketDetails, err := p.getBucketDetails(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
provider := &terraformWriter.TerraformProvider{
|
||||
Name: "aws",
|
||||
Arguments: map[string]string{
|
||||
"region": bucketDetails.region,
|
||||
},
|
||||
}
|
||||
return provider, nil
|
||||
}
|
||||
|
||||
func (p *S3Path) Remove() error {
|
||||
ctx := context.TODO()
|
||||
|
||||
|
@ -605,11 +587,15 @@ func (p *S3Path) RenderTerraform(w *terraformWriter.TerraformWriter, name string
|
|||
return fmt.Errorf("reading data: %v", err)
|
||||
}
|
||||
|
||||
tfProvider, err := p.TerraformProvider()
|
||||
bucketDetails, err := p.getBucketDetails(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
w.EnsureTerraformProvider(tfProvider)
|
||||
|
||||
tfProviderArguments := map[string]string{
|
||||
"region": bucketDetails.region,
|
||||
}
|
||||
w.EnsureTerraformProvider("aws", tfProviderArguments)
|
||||
|
||||
content, err := w.AddFileBytes("aws_s3_object", name, "content", bytes, false)
|
||||
if err != nil {
|
||||
|
|
|
@ -79,9 +79,6 @@ type TerraformPath interface {
|
|||
Path
|
||||
// RenderTerraform renders the file to a TerraformWriter.
|
||||
RenderTerraform(writer *terraformWriter.TerraformWriter, name string, data io.Reader, acl ACL) error
|
||||
|
||||
// TerraformProvider returns provider information
|
||||
TerraformProvider() (*terraformWriter.TerraformProvider, error)
|
||||
}
|
||||
|
||||
type HasHash interface {
|
||||
|
|
Loading…
Reference in New Issue