2024-09-23 10:42:34 +00:00
|
|
|
package tfdyn
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/databricks/cli/bundle/config/resources"
|
|
|
|
"github.com/databricks/cli/bundle/internal/tf/schema"
|
|
|
|
"github.com/databricks/cli/libs/dyn"
|
|
|
|
"github.com/databricks/cli/libs/dyn/convert"
|
|
|
|
"github.com/databricks/databricks-sdk-go/service/compute"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestConvertCluster(t *testing.T) {
|
|
|
|
var src = resources.Cluster{
|
|
|
|
ClusterSpec: &compute.ClusterSpec{
|
|
|
|
NumWorkers: 3,
|
|
|
|
SparkVersion: "13.3.x-scala2.12",
|
|
|
|
ClusterName: "cluster",
|
|
|
|
SparkConf: map[string]string{
|
|
|
|
"spark.executor.memory": "2g",
|
|
|
|
},
|
|
|
|
AwsAttributes: &compute.AwsAttributes{
|
|
|
|
Availability: "ON_DEMAND",
|
|
|
|
},
|
|
|
|
AzureAttributes: &compute.AzureAttributes{
|
|
|
|
Availability: "SPOT",
|
|
|
|
},
|
|
|
|
DataSecurityMode: "USER_ISOLATION",
|
|
|
|
NodeTypeId: "m5.xlarge",
|
|
|
|
Autoscale: &compute.AutoScale{
|
|
|
|
MinWorkers: 1,
|
|
|
|
MaxWorkers: 10,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
Permissions: []resources.Permission{
|
|
|
|
{
|
|
|
|
Level: "CAN_RUN",
|
|
|
|
UserName: "jack@gmail.com",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Level: "CAN_MANAGE",
|
|
|
|
ServicePrincipalName: "sp",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
vin, err := convert.FromTyped(src, dyn.NilValue)
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
ctx := context.Background()
|
|
|
|
out := schema.NewResources()
|
|
|
|
err = clusterConverter{}.Convert(ctx, "my_cluster", vin, out)
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
cluster := out.Cluster["my_cluster"]
|
|
|
|
assert.Equal(t, map[string]any{
|
|
|
|
"num_workers": int64(3),
|
|
|
|
"spark_version": "13.3.x-scala2.12",
|
|
|
|
"cluster_name": "cluster",
|
|
|
|
"spark_conf": map[string]any{
|
|
|
|
"spark.executor.memory": "2g",
|
|
|
|
},
|
|
|
|
"aws_attributes": map[string]any{
|
|
|
|
"availability": "ON_DEMAND",
|
|
|
|
},
|
|
|
|
"azure_attributes": map[string]any{
|
|
|
|
"availability": "SPOT",
|
|
|
|
},
|
|
|
|
"data_security_mode": "USER_ISOLATION",
|
|
|
|
"no_wait": true,
|
|
|
|
"node_type_id": "m5.xlarge",
|
|
|
|
"autoscale": map[string]any{
|
|
|
|
"min_workers": int64(1),
|
|
|
|
"max_workers": int64(10),
|
|
|
|
},
|
|
|
|
}, cluster)
|
|
|
|
|
|
|
|
// Assert equality on the permissions
|
|
|
|
assert.Equal(t, &schema.ResourcePermissions{
|
2024-10-10 14:10:16 +00:00
|
|
|
ClusterId: "${databricks_cluster.my_cluster.id}",
|
2024-09-23 10:42:34 +00:00
|
|
|
AccessControl: []schema.ResourcePermissionsAccessControl{
|
|
|
|
{
|
|
|
|
PermissionLevel: "CAN_RUN",
|
|
|
|
UserName: "jack@gmail.com",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
PermissionLevel: "CAN_MANAGE",
|
|
|
|
ServicePrincipalName: "sp",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}, out.Permissions["cluster_my_cluster"])
|
|
|
|
|
|
|
|
}
|