func CreateVersion()

in internal/client/integrations/integrations.go [271:336]


func CreateVersion(name string, content []byte, overridesContent []byte, snapshot string,
	userlabel string, grantPermission bool, basicInfo bool,
) (respBody []byte, err error) {
	iversion := integrationVersion{}
	if err = json.Unmarshal(content, &iversion); err != nil {
		return nil, err
	}

	// remove any internal elements if exists
	eversion := convertInternalToExternal(iversion)

	// merge overrides if overrides were provided
	if len(overridesContent) > 0 {
		o := overrides{
			IntegrationOverrides: integrationoverrides{
				RunAsServiceAccount:       nil,
				DatabasePersistencePolicy: "DATABASE_PERSISTENCE_POLICY_UNSPECIFIED",
				EnableVariableMasking:     false,
				CloudLoggingDetails: cloudLoggingDetails{
					EnableCloudLogging:   false,
					CloudLoggingSeverity: "CLOUD_LOGGING_SEVERITY_UNSPECIFIED",
				},
			},
		}

		if err = json.Unmarshal(overridesContent, &o); err != nil {
			return nil, err
		}
		if eversion, err = mergeOverrides(eversion, o, grantPermission); err != nil {
			return nil, err
		}
	}

	if snapshot != "" {
		eversion.SnapshotNumber = snapshot
	}

	if userlabel != "" {
		eversion.UserLabel = new(string)
		*eversion.UserLabel = userlabel
	}

	if content, err = json.Marshal(eversion); err != nil {
		return nil, err
	}

	if basicInfo {
		apiclient.ClientPrintHttpResponse.Set(false)
	}

	u, _ := url.Parse(apiclient.GetBaseIntegrationURL())
	u.Path = path.Join(u.Path, "integrations", name, "versions")
	respBody, err = apiclient.HttpClient(u.String(), string(content))

	if basicInfo {
		var respBasicBody []byte
		apiclient.ClientPrintHttpResponse.Set(apiclient.GetCmdPrintHttpResponseSetting())
		if respBasicBody, err = getBasicInfo(respBody); err != nil {
			return nil, err
		}
		apiclient.PrettyPrint(respBasicBody)
		return respBasicBody, nil
	}

	return respBody, err
}