Skip to content

Commit 3c0f5d9

Browse files
Vault service impl (#105)
1 parent 94e68e9 commit 3c0f5d9

File tree

15 files changed

+3485
-452
lines changed

15 files changed

+3485
-452
lines changed

api/converter/converter.go

Lines changed: 105 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ type NetworkSecurityGroupConverter struct {
206206
}
207207

208208
func (v NetworkSecurityGroupConverter) NewArg() proto.Message {
209-
return &resources.CloudSpecificRouteTableArgs{}
209+
return &resources.CloudSpecificNetworkSecurityGroupArgs{}
210210
}
211211

212212
func (v NetworkSecurityGroupConverter) ConvertToMultyResource(resourceId string, m proto.Message, otherResources map[string]common_resources.CloudSpecificResource) (common_resources.CloudSpecificResource, error) {
@@ -271,7 +271,7 @@ type DatabaseConverter struct {
271271
}
272272

273273
func (v DatabaseConverter) NewArg() proto.Message {
274-
return &resources.CloudSpecificRouteTableArgs{}
274+
return &resources.CloudSpecificDatabaseArgs{}
275275
}
276276

277277
func (v DatabaseConverter) ConvertToMultyResource(resourceId string, m proto.Message, otherResources map[string]common_resources.CloudSpecificResource) (common_resources.CloudSpecificResource, error) {
@@ -314,7 +314,7 @@ type ObjectStorageConverter struct {
314314
}
315315

316316
func (v ObjectStorageConverter) NewArg() proto.Message {
317-
return &resources.CloudSpecificRouteTableArgs{}
317+
return &resources.CloudSpecificObjectStorageArgs{}
318318
}
319319

320320
func (v ObjectStorageConverter) ConvertToMultyResource(resourceId string, m proto.Message, otherResources map[string]common_resources.CloudSpecificResource) (common_resources.CloudSpecificResource, error) {
@@ -341,7 +341,7 @@ type ObjectStorageObjectConverter struct {
341341
}
342342

343343
func (v ObjectStorageObjectConverter) NewArg() proto.Message {
344-
return &resources.CloudSpecificRouteTableArgs{}
344+
return &resources.CloudSpecificObjectStorageObjectArgs{}
345345
}
346346

347347
func (v ObjectStorageObjectConverter) ConvertToMultyResource(resourceId string, m proto.Message, otherResources map[string]common_resources.CloudSpecificResource) (common_resources.CloudSpecificResource, error) {
@@ -379,7 +379,7 @@ type PublicIpConverter struct {
379379
}
380380

381381
func (v PublicIpConverter) NewArg() proto.Message {
382-
return &resources.CloudSpecificRouteTableArgs{}
382+
return &resources.CloudSpecificPublicIpArgs{}
383383
}
384384

385385
func (v PublicIpConverter) ConvertToMultyResource(resourceId string, m proto.Message, otherResources map[string]common_resources.CloudSpecificResource) (common_resources.CloudSpecificResource, error) {
@@ -413,7 +413,7 @@ type KubernetesClusterConverter struct {
413413
}
414414

415415
func (v KubernetesClusterConverter) NewArg() proto.Message {
416-
return &resources.CloudSpecificRouteTableArgs{}
416+
return &resources.CloudSpecificKubernetesClusterArgs{}
417417
}
418418

419419
func (v KubernetesClusterConverter) ConvertToMultyResource(resourceId string, m proto.Message, otherResources map[string]common_resources.CloudSpecificResource) (common_resources.CloudSpecificResource, error) {
@@ -450,7 +450,7 @@ type KubernetesNodePoolConverter struct {
450450
}
451451

452452
func (v KubernetesNodePoolConverter) NewArg() proto.Message {
453-
return &resources.CloudSpecificRouteTableArgs{}
453+
return &resources.CloudSpecificKubernetesNodePoolArgs{}
454454
}
455455

456456
func zeroToNil(a int32) *int {
@@ -509,7 +509,7 @@ type LambdaConverter struct {
509509
}
510510

511511
func (v LambdaConverter) NewArg() proto.Message {
512-
return &resources.CloudSpecificRouteTableArgs{}
512+
return &resources.CloudSpecificLambdaArgs{}
513513
}
514514

515515
func (v LambdaConverter) ConvertToMultyResource(resourceId string, m proto.Message, otherResources map[string]common_resources.CloudSpecificResource) (common_resources.CloudSpecificResource, error) {
@@ -539,3 +539,100 @@ func (v LambdaConverter) ConvertToMultyResource(resourceId string, m proto.Messa
539539
ImplicitlyCreated: false,
540540
}, nil
541541
}
542+
543+
type VaultConverter struct {
544+
}
545+
546+
func (v VaultConverter) NewArg() proto.Message {
547+
return &resources.CloudSpecificVaultArgs{}
548+
}
549+
550+
func (v VaultConverter) ConvertToMultyResource(resourceId string, m proto.Message, otherResources map[string]common_resources.CloudSpecificResource) (common_resources.CloudSpecificResource, error) {
551+
arg := m.(*resources.CloudSpecificVaultArgs)
552+
c := cloud_providers.CloudProvider(strings.ToLower(arg.CommonParameters.CloudProvider.String()))
553+
vault := types.Vault{
554+
CommonResourceParams: &common_resources.CommonResourceParams{
555+
ResourceId: resourceId,
556+
ResourceGroupId: arg.CommonParameters.ResourceGroupId,
557+
Location: strings.ToLower(arg.CommonParameters.Location.String()),
558+
Clouds: []string{string(c)},
559+
},
560+
Name: arg.Name,
561+
}
562+
563+
return common_resources.CloudSpecificResource{
564+
Cloud: c,
565+
Resource: &vault,
566+
ImplicitlyCreated: false,
567+
}, nil
568+
}
569+
570+
type VaultAccessPolicyConverter struct {
571+
}
572+
573+
func (v VaultAccessPolicyConverter) NewArg() proto.Message {
574+
return &resources.CloudSpecificVaultAccessPolicyArgs{}
575+
}
576+
577+
func (v VaultAccessPolicyConverter) ConvertToMultyResource(resourceId string, m proto.Message, otherResources map[string]common_resources.CloudSpecificResource) (common_resources.CloudSpecificResource, error) {
578+
arg := m.(*resources.CloudSpecificVaultAccessPolicyArgs)
579+
c := cloud_providers.CloudProvider(strings.ToLower(arg.CommonParameters.CloudProvider.String()))
580+
vap := types.VaultAccessPolicy{
581+
CommonResourceParams: &common_resources.CommonResourceParams{
582+
ResourceId: resourceId,
583+
ResourceGroupId: arg.CommonParameters.ResourceGroupId,
584+
Location: strings.ToLower(arg.CommonParameters.Location.String()),
585+
Clouds: []string{string(c)},
586+
},
587+
Identity: arg.Identity,
588+
Access: strings.ToLower(arg.Access.String()),
589+
}
590+
591+
if v, ok := otherResources[common_resources.GetResourceIdForCloud(arg.VaultId, c)]; ok {
592+
// Connect to vn in the same cloud
593+
vap.Vault = v.Resource.(*types.Vault)
594+
} else {
595+
return common_resources.CloudSpecificResource{}, fmt.Errorf("vault with id %s not found in %s", arg.VaultId, c)
596+
}
597+
598+
return common_resources.CloudSpecificResource{
599+
Cloud: c,
600+
Resource: &vap,
601+
ImplicitlyCreated: false,
602+
}, nil
603+
}
604+
605+
type VaultSecretConverter struct {
606+
}
607+
608+
func (v VaultSecretConverter) NewArg() proto.Message {
609+
return &resources.CloudSpecificVaultSecretArgs{}
610+
}
611+
612+
func (v VaultSecretConverter) ConvertToMultyResource(resourceId string, m proto.Message, otherResources map[string]common_resources.CloudSpecificResource) (common_resources.CloudSpecificResource, error) {
613+
arg := m.(*resources.CloudSpecificVaultSecretArgs)
614+
c := cloud_providers.CloudProvider(strings.ToLower(arg.CommonParameters.CloudProvider.String()))
615+
vs := types.VaultSecret{
616+
CommonResourceParams: &common_resources.CommonResourceParams{
617+
ResourceId: resourceId,
618+
ResourceGroupId: arg.CommonParameters.ResourceGroupId,
619+
Location: strings.ToLower(arg.CommonParameters.Location.String()),
620+
Clouds: []string{string(c)},
621+
},
622+
Name: arg.Name,
623+
Value: arg.Value,
624+
}
625+
626+
if v, ok := otherResources[common_resources.GetResourceIdForCloud(arg.VaultId, c)]; ok {
627+
// Connect to vn in the same cloud
628+
vs.Vault = v.Resource.(*types.Vault)
629+
} else {
630+
return common_resources.CloudSpecificResource{}, fmt.Errorf("vault with id %s not found in %s", arg.VaultId, c)
631+
}
632+
633+
return common_resources.CloudSpecificResource{
634+
Cloud: c,
635+
Resource: &vs,
636+
ImplicitlyCreated: false,
637+
}, nil
638+
}

api/deploy/deploy.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,21 @@ func Deploy(c *config.Config, resourceId string) error {
9696
if err != nil {
9797
return err
9898
}
99+
} else if resourceMessage.MessageIs(&resources.CloudSpecificVaultArgs{}) {
100+
err := addMultyResource(r, translated, &converter.VaultConverter{})
101+
if err != nil {
102+
return err
103+
}
104+
} else if resourceMessage.MessageIs(&resources.CloudSpecificVaultAccessPolicyArgs{}) {
105+
err := addMultyResource(r, translated, &converter.VaultAccessPolicyConverter{})
106+
if err != nil {
107+
return err
108+
}
109+
} else if resourceMessage.MessageIs(&resources.CloudSpecificVaultSecretArgs{}) {
110+
err := addMultyResource(r, translated, &converter.VaultSecretConverter{})
111+
if err != nil {
112+
return err
113+
}
99114
} else {
100115
return fmt.Errorf("unknown resource type %s", resourceMessage.MessageName())
101116
}

0 commit comments

Comments
 (0)