in controllers/sdkutil/spec_sdk_converters.go [382:432]
func CreateModelSpecFromDescription(description *sagemaker.DescribeModelOutput) (*modelv1.ModelSpec, error) {
transformedContainersEnvironment := [][]*commonv1.KeyValuePair{}
transformedContainerEnvironment := []*commonv1.KeyValuePair{}
transformedPrimaryContainerEnvironment := []*commonv1.KeyValuePair{}
if description.Containers != nil {
// Go through each container
for _, container := range description.Containers {
transformedContainerEnvironment = ConvertMapToKeyValuePairSlice(container.Environment)
transformedContainersEnvironment = append(transformedContainersEnvironment, transformedContainerEnvironment)
}
}
if description.PrimaryContainer != nil {
transformedPrimaryContainerEnvironment = ConvertMapToKeyValuePairSlice(description.PrimaryContainer.Environment)
}
marshalled, err := json.Marshal(description)
if err != nil {
return nil, err
}
// Replace map of environments with list of environment.
// gabs makes this easier.
obj, err := gabs.ParseJSON(marshalled)
if err != nil {
return nil, err
}
if description.Containers != nil {
for i, _ := range description.Containers {
if _, err := obj.SetP(transformedContainersEnvironment[i], "Containers."+strconv.Itoa(i)+".Environment"); err != nil {
return nil, err
}
}
}
if description.PrimaryContainer != nil {
if _, err := obj.SetP(transformedPrimaryContainerEnvironment, "PrimaryContainer.Environment"); err != nil {
return nil, err
}
}
var unmarshalled modelv1.ModelSpec
if err := json.Unmarshal(obj.Bytes(), &unmarshalled); err != nil {
return nil, err
}
return &unmarshalled, nil
}