func()

in server/internal/server/CreateStorageAccount.go [48:85]


func (s *Server) CreateStorageAccount(ctx context.Context, in *pb.CreateStorageAccountRequest) (*pb.CreateStorageAccountResponse, error) {
	logger := ctxlogger.GetLogger(ctx)
	if s.AccountsClient == nil {
		logger.Error("AccountsClient is nil in CreateStorageAccount(), azuresdk feature is likely disabled")
		return nil, status.Errorf(codes.Unimplemented, "AccountsClient is nil in CreateStorageAccount(), azuresdk feature is likely disabled")
	}

	name, checkErr := s.generateUniqueStorageAccountName()
	if checkErr != nil {
		logger.Error("CheckNameAvailability() error: " + checkErr.Error())
		return nil, HandleError(checkErr, "CheckNameAvailability()")
	}

	params := armstorage.AccountCreateParameters{
		Location: to.Ptr(in.GetRegion()),
		SKU: &armstorage.SKU{
			Name: to.Ptr(armstorage.SKUNameStandardGRS),
		},
		Kind: to.Ptr(armstorage.KindStorageV2),
		Properties: &armstorage.AccountPropertiesCreateParameters{
			AllowBlobPublicAccess: to.Ptr(false),
		},
	}
	poller, err := s.AccountsClient.BeginCreate(context.Background(), in.GetRgName(), name, params, nil)
	if err != nil {
		logger.Error("BeginCreate() error: " + err.Error())
		return nil, HandleError(err, "BeginCreate()")
	}

	_, err = poller.PollUntilDone(context.Background(), nil)
	if err != nil {
		logger.Error("PollUntilDone() error: " + err.Error())
		return nil, HandleError(err, "PollUntilDone()")
	}

	logger.Info("Created storage account: " + name)
	return &pb.CreateStorageAccountResponse{Name: name}, nil
}