@pulumi/gcp
Version:
A Pulumi package for creating and managing Google Cloud Platform resources.
419 lines (418 loc) • 15.1 kB
TypeScript
import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
* > **Warning:** `gcp.datacatalog.Tag` is deprecated and will be removed in a future major release. For steps to transition your Data Catalog users, workloads, and content to Dataplex Catalog, see https://cloud.google.com/dataplex/docs/transition-to-dataplex-catalog.
*
* Tags are used to attach custom metadata to Data Catalog resources. Tags conform to the specifications within their tag template.
*
* See [Data Catalog IAM](https://cloud.google.com/data-catalog/docs/concepts/iam) for information on the permissions needed to create or view tags.
*
* To get more information about Tag, see:
*
* * [API documentation](https://cloud.google.com/data-catalog/docs/reference/rest/v1/projects.locations.entryGroups.tags)
* * How-to Guides
* * [Official Documentation](https://cloud.google.com/data-catalog/docs)
*
* ## Example Usage
*
* ### Data Catalog Entry Tag Basic
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
*
* const entryGroup = new gcp.datacatalog.EntryGroup("entry_group", {entryGroupId: "my_entry_group"});
* const entry = new gcp.datacatalog.Entry("entry", {
* entryGroup: entryGroup.id,
* entryId: "my_entry",
* userSpecifiedType: "my_custom_type",
* userSpecifiedSystem: "SomethingExternal",
* });
* const tagTemplate = new gcp.datacatalog.TagTemplate("tag_template", {
* tagTemplateId: "my_template",
* region: "us-central1",
* displayName: "Demo Tag Template",
* fields: [
* {
* fieldId: "source",
* displayName: "Source of data asset",
* type: {
* primitiveType: "STRING",
* },
* isRequired: true,
* },
* {
* fieldId: "num_rows",
* displayName: "Number of rows in the data asset",
* type: {
* primitiveType: "DOUBLE",
* },
* },
* {
* fieldId: "pii_type",
* displayName: "PII type",
* type: {
* enumType: {
* allowedValues: [
* {
* displayName: "EMAIL",
* },
* {
* displayName: "SOCIAL SECURITY NUMBER",
* },
* {
* displayName: "NONE",
* },
* ],
* },
* },
* },
* ],
* forceDelete: false,
* });
* const basicTag = new gcp.datacatalog.Tag("basic_tag", {
* parent: entry.id,
* template: tagTemplate.id,
* fields: [{
* fieldName: "source",
* stringValue: "my-string",
* }],
* });
* ```
* ### Data Catalog Entry Group Tag
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
*
* const entryGroup = new gcp.datacatalog.EntryGroup("entry_group", {entryGroupId: "my_entry_group"});
* const firstEntry = new gcp.datacatalog.Entry("first_entry", {
* entryGroup: entryGroup.id,
* entryId: "first_entry",
* userSpecifiedType: "my_custom_type",
* userSpecifiedSystem: "SomethingExternal",
* });
* const secondEntry = new gcp.datacatalog.Entry("second_entry", {
* entryGroup: entryGroup.id,
* entryId: "second_entry",
* userSpecifiedType: "another_custom_type",
* userSpecifiedSystem: "SomethingElseExternal",
* });
* const tagTemplate = new gcp.datacatalog.TagTemplate("tag_template", {
* tagTemplateId: "my_template",
* region: "us-central1",
* displayName: "Demo Tag Template",
* fields: [
* {
* fieldId: "source",
* displayName: "Source of data asset",
* type: {
* primitiveType: "STRING",
* },
* isRequired: true,
* },
* {
* fieldId: "num_rows",
* displayName: "Number of rows in the data asset",
* type: {
* primitiveType: "DOUBLE",
* },
* },
* {
* fieldId: "pii_type",
* displayName: "PII type",
* type: {
* enumType: {
* allowedValues: [
* {
* displayName: "EMAIL",
* },
* {
* displayName: "SOCIAL SECURITY NUMBER",
* },
* {
* displayName: "NONE",
* },
* ],
* },
* },
* },
* ],
* forceDelete: false,
* });
* const entryGroupTag = new gcp.datacatalog.Tag("entry_group_tag", {
* parent: entryGroup.id,
* template: tagTemplate.id,
* fields: [{
* fieldName: "source",
* stringValue: "my-string",
* }],
* });
* ```
* ### Data Catalog Entry Tag Full
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
*
* const entryGroup = new gcp.datacatalog.EntryGroup("entry_group", {entryGroupId: "my_entry_group"});
* const entry = new gcp.datacatalog.Entry("entry", {
* entryGroup: entryGroup.id,
* entryId: "my_entry",
* userSpecifiedType: "my_custom_type",
* userSpecifiedSystem: "SomethingExternal",
* schema: `{
* "columns": [
* {
* "column": "first_name",
* "description": "First name",
* "mode": "REQUIRED",
* "type": "STRING"
* },
* {
* "column": "last_name",
* "description": "Last name",
* "mode": "REQUIRED",
* "type": "STRING"
* },
* {
* "column": "address",
* "description": "Address",
* "mode": "REPEATED",
* "subcolumns": [
* {
* "column": "city",
* "description": "City",
* "mode": "NULLABLE",
* "type": "STRING"
* },
* {
* "column": "state",
* "description": "State",
* "mode": "NULLABLE",
* "type": "STRING"
* }
* ],
* "type": "RECORD"
* }
* ]
* }
* `,
* });
* const tagTemplate = new gcp.datacatalog.TagTemplate("tag_template", {
* tagTemplateId: "my_template",
* region: "us-central1",
* displayName: "Demo Tag Template",
* fields: [
* {
* fieldId: "source",
* displayName: "Source of data asset",
* type: {
* primitiveType: "STRING",
* },
* isRequired: true,
* },
* {
* fieldId: "num_rows",
* displayName: "Number of rows in the data asset",
* type: {
* primitiveType: "DOUBLE",
* },
* },
* {
* fieldId: "pii_type",
* displayName: "PII type",
* type: {
* enumType: {
* allowedValues: [
* {
* displayName: "EMAIL",
* },
* {
* displayName: "SOCIAL SECURITY NUMBER",
* },
* {
* displayName: "NONE",
* },
* ],
* },
* },
* },
* ],
* forceDelete: false,
* });
* const basicTag = new gcp.datacatalog.Tag("basic_tag", {
* parent: entry.id,
* template: tagTemplate.id,
* fields: [
* {
* fieldName: "source",
* stringValue: "my-string",
* },
* {
* fieldName: "num_rows",
* doubleValue: 5,
* },
* {
* fieldName: "pii_type",
* enumValue: "EMAIL",
* },
* ],
* column: "address",
* });
* const second_tag = new gcp.datacatalog.Tag("second-tag", {
* parent: entry.id,
* template: tagTemplate.id,
* fields: [
* {
* fieldName: "source",
* stringValue: "my-string",
* },
* {
* fieldName: "pii_type",
* enumValue: "NONE",
* },
* ],
* column: "first_name",
* });
* ```
*
* ## Import
*
* Tag can be imported using any of these accepted formats:
*
* * `{{name}}`
*
* When using the `pulumi import` command, Tag can be imported using one of the formats above. For example:
*
* ```sh
* $ pulumi import gcp:datacatalog/tag:Tag default {{name}}
* ```
*/
export declare class Tag extends pulumi.CustomResource {
/**
* Get an existing Tag resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
static get(name: string, id: pulumi.Input<pulumi.ID>, state?: TagState, opts?: pulumi.CustomResourceOptions): Tag;
/**
* Returns true if the given object is an instance of Tag. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
static isInstance(obj: any): obj is Tag;
/**
* Resources like Entry can have schemas associated with them. This scope allows users to attach tags to an individual
* column based on that schema. For attaching a tag to a nested column, use '.' to separate the column names. Example:
* 'outer_column.inner_column'
*/
readonly column: pulumi.Output<string | undefined>;
/**
* This maps the ID of a tag field to the value of and additional information about that field.
* Valid field IDs are defined by the tag's template. A tag must have at least 1 field and at most 500 fields.
* Structure is documented below.
*/
readonly fields: pulumi.Output<outputs.datacatalog.TagField[]>;
/**
* The resource name of the tag in URL format. Example:
* projects/{project_id}/locations/{location}/entrygroups/{entryGroupId}/entries/{entryId}/tags/{tag_id} or
* projects/{project_id}/locations/{location}/entrygroups/{entryGroupId}/tags/{tag_id}
* where tagId is a system-generated identifier. Note that this Tag may not actually be stored in the location in this name.
*/
readonly name: pulumi.Output<string>;
/**
* The name of the parent this tag is attached to. This can be the name of an entry or an entry group. If an entry group,
* the tag will be attached to all entries in that group.
*/
readonly parent: pulumi.Output<string | undefined>;
/**
* The resource name of the tag template that this tag uses. Example:
* projects/{project_id}/locations/{location}/tagTemplates/{tagTemplateId}
* This field cannot be modified after creation.
*/
readonly template: pulumi.Output<string>;
/**
* The display name of the tag template.
*/
readonly templateDisplayname: pulumi.Output<string>;
/**
* Create a Tag resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: TagArgs, opts?: pulumi.CustomResourceOptions);
}
/**
* Input properties used for looking up and filtering Tag resources.
*/
export interface TagState {
/**
* Resources like Entry can have schemas associated with them. This scope allows users to attach tags to an individual
* column based on that schema. For attaching a tag to a nested column, use '.' to separate the column names. Example:
* 'outer_column.inner_column'
*/
column?: pulumi.Input<string>;
/**
* This maps the ID of a tag field to the value of and additional information about that field.
* Valid field IDs are defined by the tag's template. A tag must have at least 1 field and at most 500 fields.
* Structure is documented below.
*/
fields?: pulumi.Input<pulumi.Input<inputs.datacatalog.TagField>[]>;
/**
* The resource name of the tag in URL format. Example:
* projects/{project_id}/locations/{location}/entrygroups/{entryGroupId}/entries/{entryId}/tags/{tag_id} or
* projects/{project_id}/locations/{location}/entrygroups/{entryGroupId}/tags/{tag_id}
* where tagId is a system-generated identifier. Note that this Tag may not actually be stored in the location in this name.
*/
name?: pulumi.Input<string>;
/**
* The name of the parent this tag is attached to. This can be the name of an entry or an entry group. If an entry group,
* the tag will be attached to all entries in that group.
*/
parent?: pulumi.Input<string>;
/**
* The resource name of the tag template that this tag uses. Example:
* projects/{project_id}/locations/{location}/tagTemplates/{tagTemplateId}
* This field cannot be modified after creation.
*/
template?: pulumi.Input<string>;
/**
* The display name of the tag template.
*/
templateDisplayname?: pulumi.Input<string>;
}
/**
* The set of arguments for constructing a Tag resource.
*/
export interface TagArgs {
/**
* Resources like Entry can have schemas associated with them. This scope allows users to attach tags to an individual
* column based on that schema. For attaching a tag to a nested column, use '.' to separate the column names. Example:
* 'outer_column.inner_column'
*/
column?: pulumi.Input<string>;
/**
* This maps the ID of a tag field to the value of and additional information about that field.
* Valid field IDs are defined by the tag's template. A tag must have at least 1 field and at most 500 fields.
* Structure is documented below.
*/
fields: pulumi.Input<pulumi.Input<inputs.datacatalog.TagField>[]>;
/**
* The name of the parent this tag is attached to. This can be the name of an entry or an entry group. If an entry group,
* the tag will be attached to all entries in that group.
*/
parent?: pulumi.Input<string>;
/**
* The resource name of the tag template that this tag uses. Example:
* projects/{project_id}/locations/{location}/tagTemplates/{tagTemplateId}
* This field cannot be modified after creation.
*/
template: pulumi.Input<string>;
}