diff --git a/examples/ibm-atracker/README.md b/examples/ibm-atracker/README.md index d2177505bbc..d4e46ee8839 100644 --- a/examples/ibm-atracker/README.md +++ b/examples/ibm-atracker/README.md @@ -35,6 +35,7 @@ resource "ibm_atracker_target" "atracker_target_instance" { cos_endpoint = var.atracker_target_cos_endpoint eventstreams_endpoint = var.atracker_target_eventstreams_endpoint cloudlogs_endpoint = var.atracker_target_cloudlogs_endpoint + managed_by = var.atracker_target_managed_by } ``` @@ -49,6 +50,7 @@ resource "ibm_atracker_target" "atracker_target_instance" { | cos_endpoint | Property values for a Cloud Object Storage Endpoint in responses. | `` | false | | eventstreams_endpoint | Property values for the Event Streams Endpoint in responses. | `` | false | | cloudlogs_endpoint | Property values for the IBM Cloud Logs endpoint in responses. | `` | false | +| managed_by | Identifies who manages the target. | `string` | false | #### Outputs @@ -67,6 +69,7 @@ resource "ibm_atracker_target" "atracker_target_instance" { resource "ibm_atracker_route" "atracker_route_instance" { name = var.atracker_route_name rules = var.atracker_route_rules + managed_by = var.atracker_route_managed_by } ``` @@ -77,6 +80,7 @@ resource "ibm_atracker_route" "atracker_route_instance" { | ibmcloud\_api\_key | IBM Cloud API key | `string` | true | | name | The name of the route. | `string` | true | | rules | The routing rules that will be evaluated in their order of the array. Once a rule is matched, the remaining rules in the route definition will be skipped. | `list()` | true | +| managed_by | Present when the route is enterprise-managed (`managed_by: enterprise`). | `string` | false | #### Outputs @@ -106,7 +110,7 @@ resource "ibm_atracker_settings" "atracker_settings_instance" { | Name | Description | Type | Required | |------|-------------|------|---------| | ibmcloud\_api\_key | IBM Cloud API key | `string` | true | -| default_targets | The target ID List. In the event that no routing rule causes the event to be sent to a target, these targets will receive the event. | `list(string)` | false | +| default_targets | The target ID List. In the event that no routing rule causes the event to be sent to a target, these targets will receive the event. Enterprise-managed targets are not supported. | `list(string)` | false | | permitted_target_regions | If present then only these regions may be used to define a target. | `list(string)` | false | | metadata_region_primary | To store all your meta data in a single region. | `string` | true | | metadata_region_backup | To store all your meta data in a backup region. | `string` | false | diff --git a/examples/ibm-atracker/main.tf b/examples/ibm-atracker/main.tf index 668c79699f6..bf77278cd80 100644 --- a/examples/ibm-atracker/main.tf +++ b/examples/ibm-atracker/main.tf @@ -4,32 +4,36 @@ provider "ibm" { // Provision atracker_target resource instance resource "ibm_atracker_target" "atracker_target_instance" { - name = var.atracker_target_name + name = var.atracker_target_name target_type = var.atracker_target_target_type + region = var.atracker_target_region + cos_endpoint { - endpoint = "s3.private.us-east.cloud-object-storage.appdomain.cloud" - target_crn = "crn:v1:bluemix:public:cloud-object-storage:global:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::" - bucket = "my-atracker-bucket" - api_key = "xxxxxxxxxxxxxx" + endpoint = "s3.private.us-east.cloud-object-storage.appdomain.cloud" + target_crn = "crn:v1:bluemix:public:cloud-object-storage:global:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::" + bucket = "my-atracker-bucket" + service_to_service_enabled = true } - region = var.atracker_target_region + + managed_by = var.atracker_target_managed_by + } -resource "ibm_atracker_target" atracker_target_eventstreams_instance { - name = var.atracker_target_name +resource "ibm_atracker_target" "atracker_target_eventstreams_instance" { + name = var.atracker_target_name target_type = "event_streams" eventstreams_endpoint { - target_crn = "crn:v1:bluemix:public:messagehub:us-south:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::" - brokers = [ "kafka-x:9094" ] - topic = "my-topic" - api_key = "xxxxxxxxxxxxxx" + target_crn = "crn:v1:bluemix:public:messagehub:us-south:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::" + brokers = ["kafka-x:9094"] + topic = "my-topic" + api_key = "xxxxxxxxxxxxxx" service_to_service_enabled = false } region = var.atracker_target_region } -resource "ibm_atracker_target" atracker_target_cloudlogs_instance { - name = var.atracker_target_name +resource "ibm_atracker_target" "atracker_target_cloudlogs_instance" { + name = var.atracker_target_name target_type = "cloud_logs" cloudlogs_endpoint { target_crn = "crn:v1:bluemix:public:logs:eu-es:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::" @@ -41,26 +45,36 @@ resource "ibm_atracker_target" atracker_target_cloudlogs_instance { resource "ibm_atracker_route" "atracker_route_instance" { name = var.atracker_route_name rules { - target_ids = [ ibm_atracker_target.atracker_target_instance.id ] - locations = [ "us-south" ] + target_ids = [ibm_atracker_target.atracker_target_instance.id] + locations = ["us-south"] } + managed_by = var.atracker_route_managed_by } // Provision atracker_settings resource instance resource "ibm_atracker_settings" "atracker_settings_instance" { - default_targets = var.atracker_settings_default_targets - permitted_target_regions = var.atracker_settings_permitted_target_regions - metadata_region_primary = var.atracker_settings_metadata_region_primary - metadata_region_backup = var.atracker_settings_metadata_region_backup + default_targets = var.atracker_settings_default_targets + permitted_target_regions = var.atracker_settings_permitted_target_regions + metadata_region_primary = var.atracker_settings_metadata_region_primary + metadata_region_backup = var.atracker_settings_metadata_region_backup private_api_endpoint_only = var.atracker_settings_private_api_endpoint_only } +// Data source is not linked to a resource instance +// Uncomment if an existing data source instance exists +/* // Create atracker_targets data source data "ibm_atracker_targets" "atracker_targets_instance" { + region = var.atracker_targets_region name = var.atracker_targets_name } +*/ +// Data source is not linked to a resource instance +// Uncomment if an existing data source instance exists +/* // Create atracker_routes data source data "ibm_atracker_routes" "atracker_routes_instance" { name = var.atracker_routes_name } +*/ diff --git a/examples/ibm-atracker/variables.tf b/examples/ibm-atracker/variables.tf index c3a4a48ce6a..454df913560 100644 --- a/examples/ibm-atracker/variables.tf +++ b/examples/ibm-atracker/variables.tf @@ -5,7 +5,7 @@ variable "ibmcloud_api_key" { // Resource arguments for atracker_target variable "atracker_target_name" { - description = "The name of the target. The name must be 1000 characters or less, and cannot include any special characters other than `(space) - . _ :`." + description = "The name of the target resource." type = string default = "my-cos-target" } @@ -14,19 +14,17 @@ variable "atracker_target_target_type" { type = string default = "cloud_object_storage" } - variable "atracker_target_region" { description = "Included this optional field if you used it to create a target in a different region other than the one you are connected." type = string default = "us-south" } - -// Resource arguments for atracker_route -variable "atracker_route_name" { - description = "The name of the route. The name must be 1000 characters or less and cannot include any special characters other than `(space) - . _ :`." +variable "atracker_target_managed_by" { + description = "Identifies who manages the target." type = string - default = "my-route" + default = "enterprise" } + variable "atracker_route_receive_global_events" { description = "Indicates whether or not all global events should be forwarded to this region." type = bool @@ -40,46 +38,60 @@ variable "atracker_route_rules" { })) default = [ ] } - -// Data source arguments for atracker_targets -variable "atracker_targets_name" { - description = "The name of the target resource." - type = string - default = "a-cos-target-us-south" -} - -// Data source arguments for atracker_routes -variable "atracker_routes_name" { +// Resource arguments for atracker_route +variable "atracker_route_name" { description = "The name of the route." type = string default = "my-route" } +variable "atracker_route_managed_by" { + description = "Present when the route is enterprise-managed (`managed_by: enterprise`)." + type = string + default = "enterprise" +} + // Resource arguments for atracker_settings +variable "atracker_settings_default_targets" { + description = "The target ID List. In the event that no routing rule causes the event to be sent to a target, these targets will receive the event. Enterprise-managed targets are not supported." + type = list(string) + default = [ "c3af557f-fb0e-4476-85c3-0889e7fe7bc4" ] +} +variable "atracker_settings_permitted_target_regions" { + description = "If present then only these regions may be used to define a target." + type = list(string) + default = [ "us-south" ] +} variable "atracker_settings_metadata_region_primary" { description = "To store all your meta data in a single region." type = string default = "us-south" } - variable "atracker_settings_metadata_region_backup" { - description = "To store all your meta data in a single region." + description = "To store all your meta data in a backup region." type = string - default = "us-east" + default = "eu-de" } - variable "atracker_settings_private_api_endpoint_only" { description = "If you set this true then you cannot access api through public network." type = bool default = false } -variable "atracker_settings_default_targets" { - description = "The target ID List. In the event that no routing rule causes the event to be sent to a target, these targets will receive the event." - type = list(string) - default = [ "c3af557f-fb0e-4476-85c3-0889e7fe7bc4" ] + +// Data source arguments for atracker_targets +variable "atracker_targets_region" { + description = "Limit the query to the specified region." + type = string + default = "placeholder" } -variable "atracker_settings_permitted_target_regions" { - description = "If present then only these regions may be used to define a target." - type = list(string) - default = [ "us-south" ] +variable "atracker_targets_name" { + description = "The name of the target resource." + type = string + default = "a-cos-target-us-south" +} + +// Data source arguments for atracker_routes +variable "atracker_routes_name" { + description = "The name of the route." + type = string + default = "my-route" } -// Data source arguments for atracker_endpoints diff --git a/examples/ibm-atracker/versions.tf b/examples/ibm-atracker/versions.tf index 4049a000435..54c9d03e8df 100644 --- a/examples/ibm-atracker/versions.tf +++ b/examples/ibm-atracker/versions.tf @@ -6,4 +6,4 @@ terraform { version = "1.52.0-beta0" } } -} \ No newline at end of file +} diff --git a/go.mod b/go.mod index 6edf0b84eee..f4c1f3aea13 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,7 @@ require ( github.com/IBM/continuous-delivery-go-sdk/v2 v2.0.6 github.com/IBM/event-notifications-go-admin-sdk v0.21.0 github.com/IBM/eventstreams-go-sdk v1.4.0 - github.com/IBM/go-sdk-core/v5 v5.21.0 + github.com/IBM/go-sdk-core/v5 v5.21.2 github.com/IBM/ibm-backup-recovery-sdk-go v1.0.5 github.com/IBM/ibm-cos-sdk-go v1.12.2 github.com/IBM/ibm-cos-sdk-go-config/v2 v2.3.0 @@ -30,7 +30,7 @@ require ( github.com/IBM/logs-router-go-sdk v1.0.8 github.com/IBM/mqcloud-go-sdk v0.4.0 github.com/IBM/networking-go-sdk v0.51.14 - github.com/IBM/platform-services-go-sdk v0.90.0 + github.com/IBM/platform-services-go-sdk v0.90.4 github.com/IBM/project-go-sdk v0.4.0 github.com/IBM/push-notifications-go-sdk v0.0.0-20210310100607-5790b96c47f5 github.com/IBM/sarama v1.45.0 @@ -46,7 +46,7 @@ require ( github.com/akamai/AkamaiOPEN-edgegrid-golang/v5 v5.0.0 github.com/apache/openwhisk-client-go v0.0.0-20200201143223-a804fb82d105 github.com/apparentlymart/go-cidr v1.1.0 - github.com/go-openapi/strfmt v0.24.1-0.20250928163735-5c9b6bdeb47c + github.com/go-openapi/strfmt v0.25.0 github.com/golang-jwt/jwt/v5 v5.2.2 github.com/google/go-cmp v0.7.0 github.com/google/uuid v1.6.0 @@ -95,13 +95,13 @@ require ( github.com/evanphx/json-patch/v5 v5.9.0 // indirect github.com/fatih/color v1.16.0 // indirect github.com/fxamacker/cbor/v2 v2.7.0 // indirect - github.com/gabriel-vasile/mimetype v1.4.9 // indirect + github.com/gabriel-vasile/mimetype v1.4.11 // indirect github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 // indirect github.com/go-jose/go-jose/v4 v4.1.1 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/analysis v0.23.0 // indirect - github.com/go-openapi/errors v0.22.3 // indirect + github.com/go-openapi/errors v0.22.4 // indirect github.com/go-openapi/jsonpointer v0.21.1 // indirect github.com/go-openapi/jsonreference v0.21.0 // indirect github.com/go-openapi/loads v0.22.0 // indirect @@ -112,7 +112,7 @@ require ( github.com/go-ozzo/ozzo-validation/v4 v4.3.0 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect - github.com/go-playground/validator/v10 v10.27.0 // indirect + github.com/go-playground/validator/v10 v10.28.0 // indirect github.com/go-test/deep v1.1.0 // indirect github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect @@ -138,10 +138,10 @@ require ( github.com/hashicorp/hcl v1.0.1-vault-7 // indirect github.com/hashicorp/hcl/v2 v2.24.0 // indirect github.com/hashicorp/logutils v1.0.0 // indirect - github.com/hashicorp/terraform-exec v0.23.1 // indirect - github.com/hashicorp/terraform-json v0.27.1 // indirect + github.com/hashicorp/terraform-exec v0.24.0 // indirect + github.com/hashicorp/terraform-json v0.27.2 // indirect github.com/hashicorp/terraform-plugin-go v0.29.0 // indirect - github.com/hashicorp/terraform-plugin-log v0.9.0 // indirect + github.com/hashicorp/terraform-plugin-log v0.10.0 // indirect github.com/hashicorp/terraform-registry-address v0.4.0 // indirect github.com/hashicorp/terraform-svchost v0.1.1 // indirect github.com/hashicorp/vault/api v1.16.0 // indirect @@ -194,7 +194,7 @@ require ( github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/zclconf/go-cty v1.17.0 // indirect - go.mongodb.org/mongo-driver v1.17.4 // indirect + go.mongodb.org/mongo-driver v1.17.6 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/otel v1.37.0 // indirect go.opentelemetry.io/otel/metric v1.37.0 // indirect @@ -202,7 +202,7 @@ require ( go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/ratelimit v0.2.0 // indirect go.uber.org/zap v1.27.0 // indirect - go.yaml.in/yaml/v2 v2.4.2 // indirect + go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/mod v0.29.0 // indirect golang.org/x/net v0.47.0 // indirect golang.org/x/oauth2 v0.30.0 // indirect diff --git a/go.sum b/go.sum index 4265895aaa2..6c6f85067fa 100644 --- a/go.sum +++ b/go.sum @@ -125,8 +125,8 @@ github.com/IBM/go-sdk-core/v5 v5.6.3/go.mod h1:tt/B9rxLkRtglE7pvqLuYikgCXaZFL3bt github.com/IBM/go-sdk-core/v5 v5.9.5/go.mod h1:YlOwV9LeuclmT/qi/LAK2AsobbAP42veV0j68/rlZsE= github.com/IBM/go-sdk-core/v5 v5.10.2/go.mod h1:WZPFasUzsKab/2mzt29xPcfruSk5js2ywAPwW4VJjdI= github.com/IBM/go-sdk-core/v5 v5.17.4/go.mod h1:KsAAI7eStAWwQa4F96MLy+whYSh39JzNjklZRbN/8ns= -github.com/IBM/go-sdk-core/v5 v5.21.0 h1:DUnYhvC4SoC8T84rx5omnhY3+xcQg/Whyoa3mDPIMkk= -github.com/IBM/go-sdk-core/v5 v5.21.0/go.mod h1:Q3BYO6iDA2zweQPDGbNTtqft5tDcEpm6RTuqMlPcvbw= +github.com/IBM/go-sdk-core/v5 v5.21.2 h1:mJ5QbLPOm4g5qhZiVB6wbSllfpeUExftGoyPek2hk4M= +github.com/IBM/go-sdk-core/v5 v5.21.2/go.mod h1:ngpMgwkjur1VNUjqn11LPk3o5eCyOCRbcfg/0YAY7Hc= github.com/IBM/ibm-backup-recovery-sdk-go v1.0.5 h1:bVf67pkGi5dp8SQXMcam8c1JrEwNRkXVcz3FkaalmYg= github.com/IBM/ibm-backup-recovery-sdk-go v1.0.5/go.mod h1:m+7lHOrXJwYPbrdxMmKl96tT7OJMMhpyKnQgnaCcy+w= github.com/IBM/ibm-cos-sdk-go v1.12.2 h1:71A4tDl8u6BZ548h71ecEe7fw5bBA7ECTVqYmeSQWQA= @@ -148,8 +148,8 @@ github.com/IBM/mqcloud-go-sdk v0.4.0 h1:BuZNXA6iYEg5OEPr13CMGrhH0ew4rH/4L56b1nFt github.com/IBM/mqcloud-go-sdk v0.4.0/go.mod h1:7zigCUz6k3eRrNE8KOcDkY72oPppEmoQifF+SB0NPRM= github.com/IBM/networking-go-sdk v0.51.14 h1:WYUdTmFZKeEDYctOk4YpNHNtjN3OOvV8/JDcrmglh4A= github.com/IBM/networking-go-sdk v0.51.14/go.mod h1:TAXWyBUk3C3R7aS1m84EfKdnDcBMZMAClwLfDj/SYZc= -github.com/IBM/platform-services-go-sdk v0.90.0 h1:hsUkgZZBGYK+szFb0tF9Q7uy1VjMY+VlYAPgPwFPMrg= -github.com/IBM/platform-services-go-sdk v0.90.0/go.mod h1:aGD045m6I8pfcB77wft8w2cHqWOJjcM3YSSV55BX0Js= +github.com/IBM/platform-services-go-sdk v0.90.4 h1:60oLi1S/9C23/BidRSC1MWNlQVEezk+x4giOb9NkEPQ= +github.com/IBM/platform-services-go-sdk v0.90.4/go.mod h1:KAnBhxKaYsu9It2aVXV6oCPEj78imvTs2qSG0ScZKpM= github.com/IBM/project-go-sdk v0.4.0 h1:72pEtVHJn434+MYRawER7Hk/kblapdfotoLBBhjv/jo= github.com/IBM/project-go-sdk v0.4.0/go.mod h1:FOJM9ihQV3EEAY6YigcWiTNfVCThtdY8bLC/nhQHFvo= github.com/IBM/push-notifications-go-sdk v0.0.0-20210310100607-5790b96c47f5 h1:NPUhkoOCRuv3OFWt19PmwjXGGTKlvmbuPg9fUrBUNe4= @@ -361,8 +361,8 @@ github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8 github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= -github.com/gabriel-vasile/mimetype v1.4.9 h1:5k+WDwEsD9eTLL8Tz3L0VnmVh9QxGjRmjBvAG7U/oYY= -github.com/gabriel-vasile/mimetype v1.4.9/go.mod h1:WnSQhFKJuBlRyLiKohA/2DtIlPFAbguNaG7QCHcyGok= +github.com/gabriel-vasile/mimetype v1.4.11 h1:AQvxbp830wPhHTqc1u7nzoLT+ZFxGY7emj5DR5DYFik= +github.com/gabriel-vasile/mimetype v1.4.11/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s= github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -413,8 +413,8 @@ github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpX github.com/go-openapi/errors v0.20.0/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/errors v0.21.0/go.mod h1:jxNTMUxRCKj65yb/okJGEtahVd7uvWnuWfj53bse4ho= -github.com/go-openapi/errors v0.22.3 h1:k6Hxa5Jg1TUyZnOwV2Lh81j8ayNw5VVYLvKrp4zFKFs= -github.com/go-openapi/errors v0.22.3/go.mod h1:+WvbaBBULWCOna//9B9TbLNGSFOfF8lY9dw4hGiEiKQ= +github.com/go-openapi/errors v0.22.4 h1:oi2K9mHTOb5DPW2Zjdzs/NIvwi2N3fARKaTJLdNabaM= +github.com/go-openapi/errors v0.22.4/go.mod h1:z9S8ASTUqx7+CP1Q8dD8ewGH/1JWFFLX/2PmAYNQLgk= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= @@ -459,8 +459,8 @@ github.com/go-openapi/strfmt v0.20.1/go.mod h1:43urheQI9dNtE5lTZQfuFJvjYJKPrxicA github.com/go-openapi/strfmt v0.21.1/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k= github.com/go-openapi/strfmt v0.21.3/go.mod h1:k+RzNO0Da+k3FrrynSNN8F7n/peCmQQqbbXjtDfvmGg= github.com/go-openapi/strfmt v0.22.1/go.mod h1:OfVoytIXJasDkkGvkb1Cceb3BPyMOwk1FgmyyEw7NYg= -github.com/go-openapi/strfmt v0.24.1-0.20250928163735-5c9b6bdeb47c h1:2qXCCFMLfKkjdZF/87VmmKUYafETRXdSE/OxrghKAfA= -github.com/go-openapi/strfmt v0.24.1-0.20250928163735-5c9b6bdeb47c/go.mod h1:MXNXmOAf2skBOkUyTR/pzp5/DYMJTE/VHx8zA8kPq1c= +github.com/go-openapi/strfmt v0.25.0 h1:7R0RX7mbKLa9EYCTHRcCuIPcaqlyQiWNPTXwClK0saQ= +github.com/go-openapi/strfmt v0.25.0/go.mod h1:nNXct7OzbwrMY9+5tLX4I21pzcmE6ccMGXl3jFdPfn8= github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= @@ -468,6 +468,8 @@ github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.23.1 h1:lpsStH0n2ittzTnbaSloVZLuB5+fvSY/+hnagBjSNZU= github.com/go-openapi/swag v0.23.1/go.mod h1:STZs8TbRvEQQKUA+JZNAm3EWlgaOBGpyFDqQnDHMef0= +github.com/go-openapi/testify/v2 v2.0.2 h1:X999g3jeLcoY8qctY/c/Z8iBHTbwLz7R2WXd6Ub6wls= +github.com/go-openapi/testify/v2 v2.0.2/go.mod h1:HCPmvFFnheKK2BuwSA0TbbdxJ3I16pjwMkYkP4Ywn54= github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= github.com/go-openapi/validate v0.19.5/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= @@ -486,8 +488,8 @@ github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= github.com/go-playground/validator/v10 v10.19.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= -github.com/go-playground/validator/v10 v10.27.0 h1:w8+XrWVMhGkxOaaowyKH35gFydVHOvC0/uWoy2Fzwn4= -github.com/go-playground/validator/v10 v10.27.0/go.mod h1:I5QpIEbmr8On7W0TktmJAumgzX4CA1XNl4ZmDuVHKKo= +github.com/go-playground/validator/v10 v10.28.0 h1:Q7ibns33JjyW48gHkuFT91qX48KG0ktULL6FgHdG688= +github.com/go-playground/validator/v10 v10.28.0/go.mod h1:GoI6I1SjPBh9p7ykNE/yj3fFYbyDOpwMn5KXd+m2hUU= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= @@ -743,14 +745,14 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0= github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= -github.com/hashicorp/terraform-exec v0.23.1 h1:diK5NSSDXDKqHEOIQefBMu9ny+FhzwlwV0xgUTB7VTo= -github.com/hashicorp/terraform-exec v0.23.1/go.mod h1:e4ZEg9BJDRaSalGm2z8vvrPONt0XWG0/tXpmzYTf+dM= -github.com/hashicorp/terraform-json v0.27.1 h1:zWhEracxJW6lcjt/JvximOYyc12pS/gaKSy/wzzE7nY= -github.com/hashicorp/terraform-json v0.27.1/go.mod h1:GzPLJ1PLdUG5xL6xn1OXWIjteQRT2CNT9o/6A9mi9hE= +github.com/hashicorp/terraform-exec v0.24.0 h1:mL0xlk9H5g2bn0pPF6JQZk5YlByqSqrO5VoaNtAf8OE= +github.com/hashicorp/terraform-exec v0.24.0/go.mod h1:lluc/rDYfAhYdslLJQg3J0oDqo88oGQAdHR+wDqFvo4= +github.com/hashicorp/terraform-json v0.27.2 h1:BwGuzM6iUPqf9JYM/Z4AF1OJ5VVJEEzoKST/tRDBJKU= +github.com/hashicorp/terraform-json v0.27.2/go.mod h1:GzPLJ1PLdUG5xL6xn1OXWIjteQRT2CNT9o/6A9mi9hE= github.com/hashicorp/terraform-plugin-go v0.29.0 h1:1nXKl/nSpaYIUBU1IG/EsDOX0vv+9JxAltQyDMpq5mU= github.com/hashicorp/terraform-plugin-go v0.29.0/go.mod h1:vYZbIyvxyy0FWSmDHChCqKvI40cFTDGSb3D8D70i9GM= -github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0= -github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow= +github.com/hashicorp/terraform-plugin-log v0.10.0 h1:eu2kW6/QBVdN4P3Ju2WiB2W3ObjkAsyfBsL3Wh1fj3g= +github.com/hashicorp/terraform-plugin-log v0.10.0/go.mod h1:/9RR5Cv2aAbrqcTSdNmY1NRHP4E3ekrXRGjqORpXyB0= github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.1 h1:mlAq/OrMlg04IuJT7NpefI1wwtdpWudnEmjuQs04t/4= github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.1/go.mod h1:GQhpKVvvuwzD79e8/NZ+xzj+ZpWovdPAe8nfV/skwNU= github.com/hashicorp/terraform-registry-address v0.4.0 h1:S1yCGomj30Sao4l5BMPjTGZmCNzuv7/GDTDX99E9gTk= @@ -1237,8 +1239,8 @@ go.mongodb.org/mongo-driver v1.7.0/go.mod h1:Q4oFMbo1+MSNqICAdYMlC/zSTrwCogR4R8N go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8= go.mongodb.org/mongo-driver v1.14.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c= -go.mongodb.org/mongo-driver v1.17.4 h1:jUorfmVzljjr0FLzYQsGP8cgN/qzzxlY9Vh0C9KFXVw= -go.mongodb.org/mongo-driver v1.17.4/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= +go.mongodb.org/mongo-driver v1.17.6 h1:87JUG1wZfWsr6rIz3ZmpH90rL5tea7O3IHuSwHUpsss= +go.mongodb.org/mongo-driver v1.17.6/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -1274,8 +1276,8 @@ go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= +go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20180820150726-614d502a4dac/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= diff --git a/ibm/service/atracker/README.md b/ibm/service/atracker/README.md index 991be98e5f6..cee9a755f99 100644 --- a/ibm/service/atracker/README.md +++ b/ibm/service/atracker/README.md @@ -1,15 +1,11 @@ -# Terraform IBM Provider Activity Tracker +# Terraform IBM Provider This area is primarily for IBM provider contributors and maintainers. For information on _using_ Terraform and the IBM provider, see the links below. -## Environment variables to set for the tests -* COS_API_KEY : API Key used for creating COS targets -* IES_API_KEY : Event streams password used for creating Event streams targets - ## Handy Links * [Find out about contributing](../../../CONTRIBUTING.md) to the IBM provider! * IBM Provider Docs: [Home](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs) -* IBM Provider Docs: [One of the Activity Tracker resources](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/atracker_route) +* IBM Provider Docs: [One of the resources](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/atracker_target) * IBM API Docs: [IBM API Docs for Activity Tracker](https://cloud.ibm.com/apidocs/atracker) -* IBM Activity Tracker SDK: [IBM SDK for Activity Tracker](https://github.com/IBM/platform-services-go-sdk/tree/main/atrackerv2) +* IBM SDK: [IBM SDK for ](https://github.com/IBM/appconfiguration-go-admin-sdk/tree/master/atrackerv2) diff --git a/ibm/service/atracker/data_source_ibm_atracker_routes.go b/ibm/service/atracker/data_source_ibm_atracker_routes.go index 221f0dbfb12..c0e04e594c3 100644 --- a/ibm/service/atracker/data_source_ibm_atracker_routes.go +++ b/ibm/service/atracker/data_source_ibm_atracker_routes.go @@ -2,7 +2,7 @@ // Licensed under the Mozilla Public License v2.0 /* - * IBM OpenAPI Terraform Generator Version: 3.101.0-62624c1e-20250225-192301 + * IBM OpenAPI Terraform Generator Version: 3.108.0-56772134-20251111-102802 */ package atracker @@ -102,6 +102,11 @@ func DataSourceIBMAtrackerRoutes() *schema.Resource { Computed: true, Description: "An optional message containing information about the route.", }, + "managed_by": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Present when the route is enterprise-managed (`managed_by: enterprise`).", + }, }, }, }, @@ -175,15 +180,9 @@ func dataSourceIBMAtrackerRoutesID(d *schema.ResourceData) string { func DataSourceIBMAtrackerRoutesRouteToMap(model *atrackerv2.Route) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) - if model.ID != nil { - modelMap["id"] = *model.ID - } - if model.Name != nil { - modelMap["name"] = *model.Name - } - if model.CRN != nil { - modelMap["crn"] = *model.CRN - } + modelMap["id"] = *model.ID + modelMap["name"] = *model.Name + modelMap["crn"] = *model.CRN if model.Version != nil { modelMap["version"] = flex.IntValue(model.Version) } @@ -196,30 +195,21 @@ func DataSourceIBMAtrackerRoutesRouteToMap(model *atrackerv2.Route) (map[string] rules = append(rules, rulesItemMap) } modelMap["rules"] = rules - if model.CreatedAt != nil { - modelMap["created_at"] = model.CreatedAt.String() - } - if model.UpdatedAt != nil { - modelMap["updated_at"] = model.UpdatedAt.String() - } - if model.APIVersion != nil { - modelMap["api_version"] = flex.IntValue(model.APIVersion) - } else { - modelMap["api_version"] = 1 - } + modelMap["created_at"] = model.CreatedAt.String() + modelMap["updated_at"] = model.UpdatedAt.String() + modelMap["api_version"] = flex.IntValue(model.APIVersion) if model.Message != nil { modelMap["message"] = *model.Message } + if model.ManagedBy != nil { + modelMap["managed_by"] = *model.ManagedBy + } return modelMap, nil } func DataSourceIBMAtrackerRoutesRuleToMap(model *atrackerv2.Rule) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) - if model.TargetIds != nil { - modelMap["target_ids"] = model.TargetIds - } - if model.Locations != nil { - modelMap["locations"] = model.Locations - } + modelMap["target_ids"] = model.TargetIds + modelMap["locations"] = model.Locations return modelMap, nil } diff --git a/ibm/service/atracker/data_source_ibm_atracker_routes_test.go b/ibm/service/atracker/data_source_ibm_atracker_routes_test.go index 9f53cd32d8e..0a506d54904 100644 --- a/ibm/service/atracker/data_source_ibm_atracker_routes_test.go +++ b/ibm/service/atracker/data_source_ibm_atracker_routes_test.go @@ -2,7 +2,7 @@ // Licensed under the Mozilla Public License v2.0 /* - * IBM OpenAPI Terraform Generator Version: 3.101.0-62624c1e-20250225-192301 + * IBM OpenAPI Terraform Generator Version: 3.108.0-56772134-20251111-102802 */ package atracker_test @@ -41,6 +41,35 @@ func TestAccIBMAtrackerRoutesDataSourceBasic(t *testing.T) { }) } +func TestAccIBMAtrackerRoutesDataSourceAllArgs(t *testing.T) { + routeName := fmt.Sprintf("tf_name_%d", acctest.RandIntRange(10, 100)) + routeManagedBy := "enterprise" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccCheckIBMAtrackerRoutesDataSourceConfig(routeName, routeManagedBy), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("data.ibm_atracker_routes.atracker_routes_instance", "id"), + resource.TestCheckResourceAttrSet("data.ibm_atracker_routes.atracker_routes_instance", "name"), + resource.TestCheckResourceAttrSet("data.ibm_atracker_routes.atracker_routes_instance", "routes.#"), + resource.TestCheckResourceAttrSet("data.ibm_atracker_routes.atracker_routes_instance", "routes.0.id"), + resource.TestCheckResourceAttr("data.ibm_atracker_routes.atracker_routes_instance", "routes.0.name", routeName), + resource.TestCheckResourceAttrSet("data.ibm_atracker_routes.atracker_routes_instance", "routes.0.crn"), + resource.TestCheckResourceAttrSet("data.ibm_atracker_routes.atracker_routes_instance", "routes.0.version"), + resource.TestCheckResourceAttrSet("data.ibm_atracker_routes.atracker_routes_instance", "routes.0.created_at"), + resource.TestCheckResourceAttrSet("data.ibm_atracker_routes.atracker_routes_instance", "routes.0.updated_at"), + resource.TestCheckResourceAttrSet("data.ibm_atracker_routes.atracker_routes_instance", "routes.0.api_version"), + // resource.TestCheckResourceAttrSet("data.ibm_atracker_routes.atracker_routes_instance", "routes.0.message"), + resource.TestCheckResourceAttr("data.ibm_atracker_routes.atracker_routes_instance", "routes.0.managed_by", routeManagedBy), + ), + }, + }, + }) +} + func testAccCheckIBMAtrackerRoutesDataSourceConfigBasic(routeName string) string { return fmt.Sprintf(` resource "ibm_atracker_target" "atracker_target_instance" { @@ -53,6 +82,7 @@ func testAccCheckIBMAtrackerRoutesDataSourceConfigBasic(routeName string) string bucket = "my-atracker-bucket" api_key = "xxxxxxxxxxxxxx" } + managed_by = "enterprise" } resource "ibm_atracker_route" "atracker_route_instance" { @@ -61,6 +91,7 @@ func testAccCheckIBMAtrackerRoutesDataSourceConfigBasic(routeName string) string target_ids = [ ibm_atracker_target.atracker_target_instance.id ] locations = [ "us-south" ] } + managed_by = "enterprise" } data "ibm_atracker_routes" "atracker_routes_instance" { @@ -69,6 +100,35 @@ func testAccCheckIBMAtrackerRoutesDataSourceConfigBasic(routeName string) string `, routeName) } +func testAccCheckIBMAtrackerRoutesDataSourceConfig(routeName string, routeManagedBy string) string { + return fmt.Sprintf(` + resource "ibm_atracker_target" "atracker_target_instance" { + name = "my-cos-target" + target_type = "cloud_object_storage" + cos_endpoint { + endpoint = "s3.private.us-east.cloud-object-storage.appdomain.cloud" + target_crn = "crn:v1:bluemix:public:cloud-object-storage:global:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::" + bucket = "my-atracker-bucket" + api_key = "xxxxxxxxxxxxxx" + } + managed_by = "enterprise" + } + + resource "ibm_atracker_route" "atracker_route_instance" { + name = "%s" + rules { + target_ids = [ ibm_atracker_target.atracker_target_instance.id ] + locations = [ "us-south" ] + } + managed_by = "%s" + } + + data "ibm_atracker_routes" "atracker_routes_instance" { + name = ibm_atracker_route.atracker_route_instance.name + } + `, routeName, routeManagedBy) +} + func TestDataSourceIBMAtrackerRoutesRouteToMap(t *testing.T) { checkResult := func(result map[string]interface{}) { ruleModel := make(map[string]interface{}) @@ -85,6 +145,7 @@ func TestDataSourceIBMAtrackerRoutesRouteToMap(t *testing.T) { model["updated_at"] = "2021-05-18T20:15:12.353Z" model["api_version"] = int(2) model["message"] = "Route was created successfully." + model["managed_by"] = "enterprise" assert.Equal(t, result, model) } @@ -103,6 +164,7 @@ func TestDataSourceIBMAtrackerRoutesRouteToMap(t *testing.T) { model.UpdatedAt = CreateMockDateTime("2021-05-18T20:15:12.353Z") model.APIVersion = core.Int64Ptr(int64(2)) model.Message = core.StringPtr("Route was created successfully.") + model.ManagedBy = core.StringPtr("enterprise") result, err := atracker.DataSourceIBMAtrackerRoutesRouteToMap(model) assert.Nil(t, err) diff --git a/ibm/service/atracker/data_source_ibm_atracker_targets.go b/ibm/service/atracker/data_source_ibm_atracker_targets.go index 6ca97863159..bd0ae12c2cc 100644 --- a/ibm/service/atracker/data_source_ibm_atracker_targets.go +++ b/ibm/service/atracker/data_source_ibm_atracker_targets.go @@ -2,7 +2,7 @@ // Licensed under the Mozilla Public License v2.0 /* - * IBM OpenAPI Terraform Generator Version: 3.101.0-62624c1e-20250225-192301 + * IBM OpenAPI Terraform Generator Version: 3.108.0-56772134-20251111-102802 */ package atracker @@ -88,12 +88,6 @@ func DataSourceIBMAtrackerTargets() *schema.Resource { Computed: true, Description: "The bucket name under the Cloud Object Storage instance.", }, - "api_key": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Sensitive: true, - Description: "The IAM API key that has writer access to the Cloud Object Storage instance. This credential is masked in the response. This is required if service_to_service is not enabled.", - }, "service_to_service_enabled": &schema.Schema{ Type: schema.TypeBool, Computed: true, @@ -129,8 +123,7 @@ func DataSourceIBMAtrackerTargets() *schema.Resource { "api_key": &schema.Schema{ Type: schema.TypeString, Computed: true, - Sensitive: true, - Description: "The user password (api key) for the message hub topic in the Event Streams instance. This is required if service_to_service is not enabled.", + Description: "The user password (api key) for the message hub topic in the Event Streams instance.", }, "service_to_service_enabled": &schema.Schema{ Type: schema.TypeBool, @@ -198,6 +191,11 @@ func DataSourceIBMAtrackerTargets() *schema.Resource { Computed: true, Description: "The API version of the target.", }, + "managed_by": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Identifies who manages the target.", + }, }, }, }, @@ -275,18 +273,10 @@ func dataSourceIBMAtrackerTargetsID(d *schema.ResourceData) string { func DataSourceIBMAtrackerTargetsTargetToMap(model *atrackerv2.Target) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) - if model.ID != nil { - modelMap["id"] = *model.ID - } - if model.Name != nil { - modelMap["name"] = *model.Name - } - if model.CRN != nil { - modelMap["crn"] = *model.CRN - } - if model.TargetType != nil { - modelMap["target_type"] = *model.TargetType - } + modelMap["id"] = *model.ID + modelMap["name"] = *model.Name + modelMap["crn"] = *model.CRN + modelMap["target_type"] = *model.TargetType if model.Region != nil { modelMap["region"] = *model.Region } @@ -311,55 +301,37 @@ func DataSourceIBMAtrackerTargetsTargetToMap(model *atrackerv2.Target) (map[stri } modelMap["cloudlogs_endpoint"] = []map[string]interface{}{cloudlogsEndpointMap} } - if model.WriteStatus != nil { - writeStatusMap, err := DataSourceIBMAtrackerTargetsWriteStatusToMap(model.WriteStatus) - if err != nil { - return modelMap, err - } - modelMap["write_status"] = []map[string]interface{}{writeStatusMap} - } - if model.CreatedAt != nil { - modelMap["created_at"] = model.CreatedAt.String() - } - if model.UpdatedAt != nil { - modelMap["updated_at"] = model.UpdatedAt.String() + writeStatusMap, err := DataSourceIBMAtrackerTargetsWriteStatusToMap(model.WriteStatus) + if err != nil { + return modelMap, err } - if model.APIVersion != nil { - modelMap["api_version"] = *model.APIVersion + modelMap["write_status"] = []map[string]interface{}{writeStatusMap} + modelMap["created_at"] = model.CreatedAt.String() + modelMap["updated_at"] = model.UpdatedAt.String() + if model.Message != nil { + modelMap["message"] = *model.Message } + modelMap["api_version"] = flex.IntValue(model.APIVersion) + modelMap["managed_by"] = *model.ManagedBy return modelMap, nil } func DataSourceIBMAtrackerTargetsCosEndpointToMap(model *atrackerv2.CosEndpoint) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) - if model.Endpoint != nil { - modelMap["endpoint"] = *model.Endpoint - } - if model.TargetCRN != nil { - modelMap["target_crn"] = *model.TargetCRN - } - if model.Bucket != nil { - modelMap["bucket"] = *model.Bucket - } - if model.ServiceToServiceEnabled != nil { - modelMap["service_to_service_enabled"] = *model.ServiceToServiceEnabled - } + modelMap["endpoint"] = *model.Endpoint + modelMap["target_crn"] = *model.TargetCRN + modelMap["bucket"] = *model.Bucket + modelMap["service_to_service_enabled"] = *model.ServiceToServiceEnabled return modelMap, nil } func DataSourceIBMAtrackerTargetsEventstreamsEndpointToMap(model *atrackerv2.EventstreamsEndpoint) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) - if model.TargetCRN != nil { - modelMap["target_crn"] = *model.TargetCRN - } - if model.Brokers != nil { - modelMap["brokers"] = model.Brokers - } - if model.Topic != nil { - modelMap["topic"] = *model.Topic - } + modelMap["target_crn"] = *model.TargetCRN + modelMap["brokers"] = model.Brokers + modelMap["topic"] = *model.Topic if model.APIKey != nil { - modelMap["api_key"] = *model.APIKey // pragma: allowlist secret + modelMap["api_key"] = *model.APIKey } if model.ServiceToServiceEnabled != nil { modelMap["service_to_service_enabled"] = *model.ServiceToServiceEnabled @@ -369,17 +341,13 @@ func DataSourceIBMAtrackerTargetsEventstreamsEndpointToMap(model *atrackerv2.Eve func DataSourceIBMAtrackerTargetsCloudLogsEndpointToMap(model *atrackerv2.CloudLogsEndpoint) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) - if model.TargetCRN != nil { - modelMap["target_crn"] = *model.TargetCRN - } + modelMap["target_crn"] = *model.TargetCRN return modelMap, nil } func DataSourceIBMAtrackerTargetsWriteStatusToMap(model *atrackerv2.WriteStatus) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) - if model.Status != nil { - modelMap["status"] = *model.Status - } + modelMap["status"] = *model.Status if model.LastFailure != nil { modelMap["last_failure"] = model.LastFailure.String() } diff --git a/ibm/service/atracker/data_source_ibm_atracker_targets_test.go b/ibm/service/atracker/data_source_ibm_atracker_targets_test.go index 586c911338a..98ff437fd10 100644 --- a/ibm/service/atracker/data_source_ibm_atracker_targets_test.go +++ b/ibm/service/atracker/data_source_ibm_atracker_targets_test.go @@ -2,7 +2,7 @@ // Licensed under the Mozilla Public License v2.0 /* - * IBM OpenAPI Terraform Generator Version: 3.101.0-62624c1e-20250225-192301 + * IBM OpenAPI Terraform Generator Version: 3.108.0-56772134-20251111-102802 */ package atracker_test @@ -15,6 +15,11 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/atracker" + . "github.com/IBM-Cloud/terraform-provider-ibm/ibm/unittest" + "github.com/IBM/go-sdk-core/v5/core" + "github.com/IBM/platform-services-go-sdk/atrackerv2" + "github.com/stretchr/testify/assert" ) func TestAccIBMAtrackerTargetsDataSourceBasic(t *testing.T) { @@ -42,13 +47,14 @@ func TestAccIBMAtrackerTargetsDataSourceAllArgs(t *testing.T) { targetName := fmt.Sprintf("tf_name_%d", acctest.RandIntRange(10, 100)) targetTargetType := "cloud_object_storage" targetRegion := "us-south" + targetManagedBy := "enterprise" resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, Steps: []resource.TestStep{ resource.TestStep{ - Config: testAccCheckIBMAtrackerTargetsDataSourceConfig(targetName, targetTargetType, targetRegion), + Config: testAccCheckIBMAtrackerTargetsDataSourceConfig(targetName, targetTargetType, targetRegion, targetManagedBy), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("data.ibm_atracker_targets.atracker_targets_instance", "id"), resource.TestCheckResourceAttrSet("data.ibm_atracker_targets.atracker_targets_instance", "name"), @@ -61,6 +67,7 @@ func TestAccIBMAtrackerTargetsDataSourceAllArgs(t *testing.T) { resource.TestCheckResourceAttrSet("data.ibm_atracker_targets.atracker_targets_instance", "targets.0.created_at"), resource.TestCheckResourceAttrSet("data.ibm_atracker_targets.atracker_targets_instance", "targets.0.updated_at"), resource.TestCheckResourceAttr("data.ibm_atracker_targets.atracker_targets_instance", "targets.0.api_version", "2"), + resource.TestCheckResourceAttr("data.ibm_atracker_targets.atracker_targets_instance", "targets.0.managed_by", targetManagedBy), ), }, }, @@ -80,6 +87,7 @@ func testAccCheckIBMAtrackerTargetsDataSourceConfigBasic(targetName string, targ api_key = "%s" // pragma: allowlist secret service_to_service_enabled = true } + managed_by = "enterprise" } data "ibm_atracker_targets" "atracker_targets_instance" { @@ -88,7 +96,7 @@ func testAccCheckIBMAtrackerTargetsDataSourceConfigBasic(targetName string, targ `, targetName, targetTargetType, acc.COSApiKey) } -func testAccCheckIBMAtrackerTargetsDataSourceConfig(targetName string, targetTargetType string, targetRegion string) string { +func testAccCheckIBMAtrackerTargetsDataSourceConfig(targetName string, targetTargetType string, targetRegion string, targetManagedBy string) string { return fmt.Sprintf(` resource "ibm_atracker_target" "atracker_target_instance" { name = "%s" @@ -111,10 +119,177 @@ func testAccCheckIBMAtrackerTargetsDataSourceConfig(targetName string, targetTar cloudlogs_endpoint { target_crn = "crn:v1:bluemix:public:logs:eu-es:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::" } + managed_by = "%s" } + data "ibm_atracker_targets" "atracker_targets_instance" { name = ibm_atracker_target.atracker_target_instance.name } - - `, targetName, targetTargetType, targetRegion, acc.COSApiKey, acc.IesApiKey) + `, targetName, targetTargetType, targetRegion, acc.COSApiKey, acc.IesApiKey, targetManagedBy) +} + +func TestDataSourceIBMAtrackerTargetsTargetToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + cosEndpointModel := make(map[string]interface{}) + cosEndpointModel["endpoint"] = "s3.private.us-east.cloud-object-storage.appdomain.cloud" + cosEndpointModel["target_crn"] = "crn:v1:bluemix:public:cloud-object-storage:global:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::" + cosEndpointModel["bucket"] = "my-atracker-bucket" + cosEndpointModel["service_to_service_enabled"] = true + + eventstreamsEndpointModel := make(map[string]interface{}) + eventstreamsEndpointModel["target_crn"] = "crn:v1:bluemix:public:messagehub:us-south:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::" + eventstreamsEndpointModel["brokers"] = []string{"kafka-x:9094"} + eventstreamsEndpointModel["topic"] = "my-topic" + eventstreamsEndpointModel["api_key"] = "xxxxxxxxxxxxxx" + eventstreamsEndpointModel["service_to_service_enabled"] = false + + cloudLogsEndpointModel := make(map[string]interface{}) + cloudLogsEndpointModel["target_crn"] = "crn:v1:bluemix:public:eu-es:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::" + + writeStatusModel := make(map[string]interface{}) + writeStatusModel["status"] = "success" + writeStatusModel["last_failure"] = "2021-05-18T20:15:12.353Z" + writeStatusModel["reason_for_last_failure"] = "Provided API key could not be found" + + model := make(map[string]interface{}) + model["id"] = "f7dcfae6-e7c5-08ca-451b-fdfa696c9bb6" + model["name"] = "a-cos-target-us-south" + model["crn"] = "crn:v1:bluemix:public:atracker:us-south:a/11111111111111111111111111111111:b6eec08b-5201-08ca-451b-cd71523e3626:target:f7dcfae6-e7c5-08ca-451b-fdfa696c9bb6" + model["target_type"] = "cloud_object_storage" + model["region"] = "us-south" + model["cos_endpoint"] = []map[string]interface{}{cosEndpointModel} + model["eventstreams_endpoint"] = []map[string]interface{}{eventstreamsEndpointModel} + model["cloudlogs_endpoint"] = []map[string]interface{}{cloudLogsEndpointModel} + model["write_status"] = []map[string]interface{}{writeStatusModel} + model["created_at"] = "2021-05-18T20:15:12.353Z" + model["updated_at"] = "2021-05-18T20:15:12.353Z" + model["message"] = "This is a valid target. However, there is another target already defined with the same target endpoint." + model["api_version"] = int(2) + model["managed_by"] = "enterprise" + + assert.Equal(t, result, model) + } + + cosEndpointModel := new(atrackerv2.CosEndpoint) + cosEndpointModel.Endpoint = core.StringPtr("s3.private.us-east.cloud-object-storage.appdomain.cloud") + cosEndpointModel.TargetCRN = core.StringPtr("crn:v1:bluemix:public:cloud-object-storage:global:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::") + cosEndpointModel.Bucket = core.StringPtr("my-atracker-bucket") + cosEndpointModel.ServiceToServiceEnabled = core.BoolPtr(true) + + eventstreamsEndpointModel := new(atrackerv2.EventstreamsEndpoint) + eventstreamsEndpointModel.TargetCRN = core.StringPtr("crn:v1:bluemix:public:messagehub:us-south:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::") + eventstreamsEndpointModel.Brokers = []string{"kafka-x:9094"} + eventstreamsEndpointModel.Topic = core.StringPtr("my-topic") + eventstreamsEndpointModel.APIKey = core.StringPtr("xxxxxxxxxxxxxx") + eventstreamsEndpointModel.ServiceToServiceEnabled = core.BoolPtr(false) + + cloudLogsEndpointModel := new(atrackerv2.CloudLogsEndpoint) + cloudLogsEndpointModel.TargetCRN = core.StringPtr("crn:v1:bluemix:public:eu-es:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::") + + writeStatusModel := new(atrackerv2.WriteStatus) + writeStatusModel.Status = core.StringPtr("success") + writeStatusModel.LastFailure = CreateMockDateTime("2021-05-18T20:15:12.353Z") + writeStatusModel.ReasonForLastFailure = core.StringPtr("Provided API key could not be found") + + model := new(atrackerv2.Target) + model.ID = core.StringPtr("f7dcfae6-e7c5-08ca-451b-fdfa696c9bb6") + model.Name = core.StringPtr("a-cos-target-us-south") + model.CRN = core.StringPtr("crn:v1:bluemix:public:atracker:us-south:a/11111111111111111111111111111111:b6eec08b-5201-08ca-451b-cd71523e3626:target:f7dcfae6-e7c5-08ca-451b-fdfa696c9bb6") + model.TargetType = core.StringPtr("cloud_object_storage") + model.Region = core.StringPtr("us-south") + model.CosEndpoint = cosEndpointModel + model.EventstreamsEndpoint = eventstreamsEndpointModel + model.CloudlogsEndpoint = cloudLogsEndpointModel + model.WriteStatus = writeStatusModel + model.CreatedAt = CreateMockDateTime("2021-05-18T20:15:12.353Z") + model.UpdatedAt = CreateMockDateTime("2021-05-18T20:15:12.353Z") + model.Message = core.StringPtr("This is a valid target. However, there is another target already defined with the same target endpoint.") + model.APIVersion = core.Int64Ptr(int64(2)) + model.ManagedBy = core.StringPtr("enterprise") + + result, err := atracker.DataSourceIBMAtrackerTargetsTargetToMap(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestDataSourceIBMAtrackerTargetsCosEndpointToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + model := make(map[string]interface{}) + model["endpoint"] = "s3.private.us-east.cloud-object-storage.appdomain.cloud" + model["target_crn"] = "crn:v1:bluemix:public:cloud-object-storage:global:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::" + model["bucket"] = "my-atracker-bucket" + model["service_to_service_enabled"] = true + + assert.Equal(t, result, model) + } + + model := new(atrackerv2.CosEndpoint) + model.Endpoint = core.StringPtr("s3.private.us-east.cloud-object-storage.appdomain.cloud") + model.TargetCRN = core.StringPtr("crn:v1:bluemix:public:cloud-object-storage:global:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::") + model.Bucket = core.StringPtr("my-atracker-bucket") + model.ServiceToServiceEnabled = core.BoolPtr(true) + + result, err := atracker.DataSourceIBMAtrackerTargetsCosEndpointToMap(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestDataSourceIBMAtrackerTargetsEventstreamsEndpointToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + model := make(map[string]interface{}) + model["target_crn"] = "crn:v1:bluemix:public:messagehub:us-south:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::" + model["brokers"] = []string{"kafka-x:9094"} + model["topic"] = "my-topic" + model["api_key"] = "xxxxxxxxxxxxxx" + model["service_to_service_enabled"] = false + + assert.Equal(t, result, model) + } + + model := new(atrackerv2.EventstreamsEndpoint) + model.TargetCRN = core.StringPtr("crn:v1:bluemix:public:messagehub:us-south:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::") + model.Brokers = []string{"kafka-x:9094"} + model.Topic = core.StringPtr("my-topic") + model.APIKey = core.StringPtr("xxxxxxxxxxxxxx") + model.ServiceToServiceEnabled = core.BoolPtr(false) + + result, err := atracker.DataSourceIBMAtrackerTargetsEventstreamsEndpointToMap(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestDataSourceIBMAtrackerTargetsCloudLogsEndpointToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + model := make(map[string]interface{}) + model["target_crn"] = "crn:v1:bluemix:public:eu-es:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::" + + assert.Equal(t, result, model) + } + + model := new(atrackerv2.CloudLogsEndpoint) + model.TargetCRN = core.StringPtr("crn:v1:bluemix:public:eu-es:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::") + + result, err := atracker.DataSourceIBMAtrackerTargetsCloudLogsEndpointToMap(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestDataSourceIBMAtrackerTargetsWriteStatusToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + model := make(map[string]interface{}) + model["status"] = "success" + model["last_failure"] = "2021-05-18T20:15:12.353Z" + model["reason_for_last_failure"] = "Provided API key could not be found" + + assert.Equal(t, result, model) + } + + model := new(atrackerv2.WriteStatus) + model.Status = core.StringPtr("success") + model.LastFailure = CreateMockDateTime("2021-05-18T20:15:12.353Z") + model.ReasonForLastFailure = core.StringPtr("Provided API key could not be found") + + result, err := atracker.DataSourceIBMAtrackerTargetsWriteStatusToMap(model) + assert.Nil(t, err) + checkResult(result) } diff --git a/ibm/service/atracker/resource_ibm_atracker_route.go b/ibm/service/atracker/resource_ibm_atracker_route.go index 8778d5ad086..b848e0552c5 100644 --- a/ibm/service/atracker/resource_ibm_atracker_route.go +++ b/ibm/service/atracker/resource_ibm_atracker_route.go @@ -2,7 +2,7 @@ // Licensed under the Mozilla Public License v2.0 /* - * IBM OpenAPI Terraform Generator Version: 3.101.0-62624c1e-20250225-192301 + * IBM OpenAPI Terraform Generator Version: 3.108.0-56772134-20251111-102802 */ package atracker @@ -58,6 +58,14 @@ func ResourceIBMAtrackerRoute() *schema.Resource { }, }, }, + "managed_by": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + ForceNew: true, + Default: "account", + ValidateFunc: validate.InvokeValidator("ibm_atracker_route", "managed_by"), + Description: "Present when the route is enterprise-managed (`managed_by: enterprise`).", + }, "crn": &schema.Schema{ Type: schema.TypeString, Computed: true, @@ -104,6 +112,13 @@ func ResourceIBMAtrackerRouteValidator() *validate.ResourceValidator { MinValueLength: 1, MaxValueLength: 1000, }, + validate.ValidateSchema{ + Identifier: "managed_by", + ValidateFunctionIdentifier: validate.ValidateAllowedStringValue, + Type: validate.TypeString, + Optional: true, + AllowedValues: "account, enterprise", + }, ) resourceValidator := validate.ResourceValidator{ResourceName: "ibm_atracker_route", Schema: validateSchema} @@ -131,6 +146,9 @@ func resourceIBMAtrackerRouteCreate(context context.Context, d *schema.ResourceD rules = append(rules, *rulesItem) } createRouteOptions.SetRules(rules) + if _, ok := d.GetOk("managed_by"); ok { + createRouteOptions.SetManagedBy(d.Get("managed_by").(string)) + } route, _, err := atrackerClient.CreateRouteWithContext(context, createRouteOptions) if err != nil { @@ -184,6 +202,12 @@ func resourceIBMAtrackerRouteRead(context context.Context, d *schema.ResourceDat err = fmt.Errorf("Error setting rules: %s", err) return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_atracker_route", "read", "set-rules").GetDiag() } + if !core.IsNil(route.ManagedBy) { + if err = d.Set("managed_by", route.ManagedBy); err != nil { + err = fmt.Errorf("Error setting managed_by: %s", err) + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_atracker_route", "read", "set-managed_by").GetDiag() + } + } if err = d.Set("crn", route.CRN); err != nil { err = fmt.Errorf("Error setting crn: %s", err) return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_atracker_route", "read", "set-crn").GetDiag() @@ -238,6 +262,9 @@ func resourceIBMAtrackerRouteUpdate(context context.Context, d *schema.ResourceD rules = append(rules, *rulesItem) } replaceRouteOptions.SetRules(rules) + if _, ok := d.GetOk("managed_by"); ok { + replaceRouteOptions.SetManagedBy(d.Get("managed_by").(string)) + } _, _, err = atrackerClient.ReplaceRouteWithContext(context, replaceRouteOptions) if err != nil { diff --git a/ibm/service/atracker/resource_ibm_atracker_route_test.go b/ibm/service/atracker/resource_ibm_atracker_route_test.go index babc993a0bf..f60b19054f3 100644 --- a/ibm/service/atracker/resource_ibm_atracker_route_test.go +++ b/ibm/service/atracker/resource_ibm_atracker_route_test.go @@ -54,6 +54,7 @@ func TestAccIBMAtrackerRouteBasicMultipleRules(t *testing.T) { var conf atrackerv2.Route name := fmt.Sprintf("tf_name_%d", acctest.RandIntRange(10, 100)) nameUpdate := fmt.Sprintf("tf_name_%d", acctest.RandIntRange(10, 100)) + managedBy := "enterprise" resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -61,14 +62,15 @@ func TestAccIBMAtrackerRouteBasicMultipleRules(t *testing.T) { CheckDestroy: testAccCheckIBMAtrackerRouteDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMAtrackerRouteConfigBasicMultipleRules(name), + Config: testAccCheckIBMAtrackerRouteConfigBasicMultipleRules(name, managedBy), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMAtrackerRouteExists("ibm_atracker_route.atracker_route_instance", conf), resource.TestCheckResourceAttr("ibm_atracker_route.atracker_route_instance", "name", name), + resource.TestCheckResourceAttr("ibm_atracker_route.atracker_route_instance", "managed_by", managedBy), ), }, { - Config: testAccCheckIBMAtrackerRouteConfigBasicMultipleRules(nameUpdate), + Config: testAccCheckIBMAtrackerRouteConfigBasicMultipleRules(nameUpdate, managedBy), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("ibm_atracker_route.atracker_route_instance", "name", nameUpdate), ), @@ -95,6 +97,7 @@ func testAccCheckIBMAtrackerRouteConfigBasic(name string) string { api_key = "xxxxxxxxxxxxxx" service_to_service_enabled = false } + managed_by = "enterprise" } resource "ibm_atracker_route" "atracker_route_instance" { @@ -103,11 +106,12 @@ func testAccCheckIBMAtrackerRouteConfigBasic(name string) string { target_ids = [ ibm_atracker_target.atracker_target_instance.id ] locations = [ "us-south" ] } + managed_by = "enterprise" } `, name) } -func testAccCheckIBMAtrackerRouteConfigBasicMultipleRules(name string) string { +func testAccCheckIBMAtrackerRouteConfigBasicMultipleRules(name string, managedBy string) string { return fmt.Sprintf(` resource "ibm_atracker_target" "atracker_target_instance" { name = "my-cos-target" @@ -119,6 +123,7 @@ func testAccCheckIBMAtrackerRouteConfigBasicMultipleRules(name string) string { bucket = "my-atracker-bucket" api_key = "xxxxxxxxxxxxxx" } + managed_by = "enterprise" } resource "ibm_atracker_route" "atracker_route_instance" { @@ -131,8 +136,9 @@ func testAccCheckIBMAtrackerRouteConfigBasicMultipleRules(name string) string { target_ids = [ ibm_atracker_target.atracker_target_instance.id ] locations = [ "us-east" ] } + managed_by = "%s" } - `, name) + `, name, managedBy) } func testAccCheckIBMAtrackerRouteExists(n string, obj atrackerv2.Route) resource.TestCheckFunc { diff --git a/ibm/service/atracker/resource_ibm_atracker_settings.go b/ibm/service/atracker/resource_ibm_atracker_settings.go index dea69a99fbf..619889ced2c 100644 --- a/ibm/service/atracker/resource_ibm_atracker_settings.go +++ b/ibm/service/atracker/resource_ibm_atracker_settings.go @@ -2,7 +2,7 @@ // Licensed under the Mozilla Public License v2.0 /* - * IBM OpenAPI Terraform Generator Version: 3.101.0-62624c1e-20250225-192301 + * IBM OpenAPI Terraform Generator Version: 3.108.0-56772134-20251111-102802 */ package atracker @@ -34,7 +34,7 @@ func ResourceIBMAtrackerSettings() *schema.Resource { "default_targets": &schema.Schema{ Type: schema.TypeList, Optional: true, - Description: "The target ID List. In the event that no routing rule causes the event to be sent to a target, these targets will receive the event.", + Description: "The target ID List. In the event that no routing rule causes the event to be sent to a target, these targets will receive the event. Enterprise-managed targets are not supported.", Elem: &schema.Schema{Type: schema.TypeString}, }, "permitted_target_regions": &schema.Schema{ @@ -263,8 +263,8 @@ func resourceIBMAtrackerSettingsDelete(context context.Context, d *schema.Resour } putSettingsOptions := &atrackerv2.PutSettingsOptions{} - putSettingsOptions.MetadataRegionPrimary = settings.MetadataRegionPrimary - putSettingsOptions.PrivateAPIEndpointOnly = settings.PrivateAPIEndpointOnly + putSettingsOptions.SetMetadataRegionPrimary(*settings.MetadataRegionPrimary) + putSettingsOptions.SetPrivateAPIEndpointOnly(*settings.PrivateAPIEndpointOnly) putSettingsOptions.PermittedTargetRegions = []string{} putSettingsOptions.DefaultTargets = []string{} diff --git a/ibm/service/atracker/resource_ibm_atracker_settings_test.go b/ibm/service/atracker/resource_ibm_atracker_settings_test.go index dcf89891c84..f2bdd9a7c28 100644 --- a/ibm/service/atracker/resource_ibm_atracker_settings_test.go +++ b/ibm/service/atracker/resource_ibm_atracker_settings_test.go @@ -106,6 +106,7 @@ func testAccCheckIBMAtrackerSettingsConfig(metadataRegionPrimary string, metadat api_key = "xxxxxxxxxxxxxx" # pragma: whitelist secret service_to_service_enabled = false } + managed_by = "account" } resource "ibm_atracker_settings" "atracker_settings" { diff --git a/ibm/service/atracker/resource_ibm_atracker_target.go b/ibm/service/atracker/resource_ibm_atracker_target.go index b0dbcb9f00a..68ae8f94c2c 100644 --- a/ibm/service/atracker/resource_ibm_atracker_target.go +++ b/ibm/service/atracker/resource_ibm_atracker_target.go @@ -2,7 +2,7 @@ // Licensed under the Mozilla Public License v2.0 /* - * IBM OpenAPI Terraform Generator Version: 3.101.0-62624c1e-20250225-192301 + * IBM OpenAPI Terraform Generator Version: 3.108.0-56772134-20251111-102802 */ package atracker @@ -138,6 +138,14 @@ func ResourceIBMAtrackerTarget() *schema.Resource { }, }, }, + "managed_by": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Default: "account", + ForceNew: true, + ValidateFunc: validate.InvokeValidator("ibm_atracker_target", "managed_by"), + Description: "Identifies who manages the target.", + }, "region": &schema.Schema{ Type: schema.TypeString, Optional: true, @@ -229,6 +237,13 @@ func ResourceIBMAtrackerTargetValidator() *validate.ResourceValidator { MinValueLength: 3, MaxValueLength: 1000, }, + validate.ValidateSchema{ + Identifier: "managed_by", + ValidateFunctionIdentifier: validate.ValidateAllowedStringValue, + Type: validate.TypeString, + Optional: true, + AllowedValues: "account, enterprise", + }, ) resourceValidator := validate.ResourceValidator{ResourceName: "ibm_atracker_target", Schema: validateSchema} @@ -271,6 +286,9 @@ func resourceIBMAtrackerTargetCreate(context context.Context, d *schema.Resource if _, ok := d.GetOk("region"); ok { createTargetOptions.SetRegion(d.Get("region").(string)) } + if _, ok := d.GetOk("managed_by"); ok { + createTargetOptions.SetManagedBy(d.Get("managed_by").(string)) + } target, _, err := atrackerClient.CreateTargetWithContext(context, createTargetOptions) if err != nil { @@ -323,10 +341,10 @@ func resourceIBMAtrackerTargetRead(context context.Context, d *schema.ResourceDa } if cosInterface, ok := d.GetOk("cos_endpoint.0"); ok { targetCrnExisting := cosInterface.(map[string]interface{})["target_crn"].(string) - targetCrnIncoming := cosEndpointMap["target_crn"].(*string) - if len(targetCrnExisting) > 0 && targetCrnIncoming != nil { + targetCrnIncoming := cosEndpointMap["target_crn"].(string) + if len(targetCrnExisting) > 0 && targetCrnIncoming != "" { targetCrnExistingParts := strings.Split(targetCrnExisting, ":") - targetCrnIncomingParts := strings.Split(*targetCrnIncoming, ":") + targetCrnIncomingParts := strings.Split(targetCrnIncoming, ":") isDifferent := false for i := 0; i < COS_CRN_PARTS && len(targetCrnExistingParts) > COS_CRN_PARTS-1 && len(targetCrnIncomingParts) > COS_CRN_PARTS-1; i++ { if targetCrnExistingParts[i] != targetCrnIncomingParts[i] { @@ -364,6 +382,13 @@ func resourceIBMAtrackerTargetRead(context context.Context, d *schema.ResourceDa } } + if !core.IsNil(target.ManagedBy) { + if err = d.Set("managed_by", target.ManagedBy); err != nil { + err = fmt.Errorf("Error setting managed_by: %s", err) + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_atracker_target", "read", "set-managed_by").GetDiag() + } + } + if !core.IsNil(target.CRN) { if err = d.Set("crn", target.CRN); err != nil { err = fmt.Errorf("Error setting crn: %s", err) @@ -530,40 +555,43 @@ func ResourceIBMAtrackerTargetMapToCloudLogsEndpointPrototype(modelMap map[strin func ResourceIBMAtrackerTargetCosEndpointToMap(model *atrackerv2.CosEndpoint) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) - modelMap["endpoint"] = model.Endpoint - modelMap["target_crn"] = model.TargetCRN - modelMap["bucket"] = model.Bucket + modelMap["endpoint"] = *model.Endpoint + modelMap["target_crn"] = *model.TargetCRN + modelMap["bucket"] = *model.Bucket // TODO: remove after deprecation modelMap["api_key"] = REDACTED_TEXT // pragma: whitelist secret - modelMap["service_to_service_enabled"] = model.ServiceToServiceEnabled + modelMap["service_to_service_enabled"] = *model.ServiceToServiceEnabled return modelMap, nil } func ResourceIBMAtrackerTargetEventstreamsEndpointToMap(model *atrackerv2.EventstreamsEndpoint) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) - modelMap["target_crn"] = model.TargetCRN + modelMap["target_crn"] = *model.TargetCRN modelMap["brokers"] = model.Brokers - modelMap["topic"] = model.Topic - // TODO: remove after deprecation - modelMap["api_key"] = REDACTED_TEXT // pragma: whitelist secret - modelMap["service_to_service_enabled"] = model.ServiceToServiceEnabled + modelMap["topic"] = *model.Topic + if model.APIKey != nil { + modelMap["api_key"] = *model.APIKey + } + if model.ServiceToServiceEnabled != nil { + modelMap["service_to_service_enabled"] = *model.ServiceToServiceEnabled + } return modelMap, nil } func ResourceIBMAtrackerTargetCloudLogsEndpointToMap(model *atrackerv2.CloudLogsEndpoint) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) - modelMap["target_crn"] = model.TargetCRN + modelMap["target_crn"] = *model.TargetCRN return modelMap, nil } func ResourceIBMAtrackerTargetWriteStatusToMap(model *atrackerv2.WriteStatus) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) - modelMap["status"] = model.Status + modelMap["status"] = *model.Status if model.LastFailure != nil { modelMap["last_failure"] = model.LastFailure.String() } if model.ReasonForLastFailure != nil { - modelMap["reason_for_last_failure"] = model.ReasonForLastFailure + modelMap["reason_for_last_failure"] = *model.ReasonForLastFailure } return modelMap, nil } diff --git a/ibm/service/atracker/resource_ibm_atracker_target_test.go b/ibm/service/atracker/resource_ibm_atracker_target_test.go index 755a9d1ebde..e7ed963f0d0 100644 --- a/ibm/service/atracker/resource_ibm_atracker_target_test.go +++ b/ibm/service/atracker/resource_ibm_atracker_target_test.go @@ -38,7 +38,7 @@ func TestAccIBMAtrackerTargetBasic(t *testing.T) { resource.TestCheckResourceAttr("ibm_atracker_target.atracker_target_instance", "target_type", targetType), ), }, - { + resource.TestStep{ Config: testAccCheckIBMAtrackerTargetConfigBasic(nameUpdate, targetType), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("ibm_atracker_target.atracker_target_instance", "name", nameUpdate), @@ -54,6 +54,7 @@ func TestAccIBMAtrackerTargetAllArgs(t *testing.T) { name := fmt.Sprintf("tf_all_name_1") targetType := "cloud_object_storage" region := fmt.Sprintf("us-south") + managedBy := "enterprise" // targetType and region cannot be changed nameUpdate := fmt.Sprintf("tf_all_name_2") @@ -63,20 +64,22 @@ func TestAccIBMAtrackerTargetAllArgs(t *testing.T) { CheckDestroy: testAccCheckIBMAtrackerTargetDestroy, Steps: []resource.TestStep{ resource.TestStep{ - Config: testAccCheckIBMAtrackerTargetConfig(name, targetType, region), + Config: testAccCheckIBMAtrackerTargetConfig(name, targetType, region, managedBy), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMAtrackerTargetExists("ibm_atracker_target.atracker_target_instance", conf), resource.TestCheckResourceAttr("ibm_atracker_target.atracker_target_instance", "name", name), resource.TestCheckResourceAttr("ibm_atracker_target.atracker_target_instance", "target_type", targetType), resource.TestCheckResourceAttr("ibm_atracker_target.atracker_target_instance", "region", region), + resource.TestCheckResourceAttr("ibm_atracker_target.atracker_target_instance", "managed_by", managedBy), ), }, resource.TestStep{ - Config: testAccCheckIBMAtrackerTargetConfig(nameUpdate, targetType, region), + Config: testAccCheckIBMAtrackerTargetConfig(nameUpdate, targetType, region, managedBy), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("ibm_atracker_target.atracker_target_instance", "name", nameUpdate), resource.TestCheckResourceAttr("ibm_atracker_target.atracker_target_instance", "target_type", targetType), resource.TestCheckResourceAttr("ibm_atracker_target.atracker_target_instance", "region", region), + resource.TestCheckResourceAttr("ibm_atracker_target.atracker_target_instance", "managed_by", managedBy), ), }, resource.TestStep{ @@ -104,8 +107,9 @@ func testAccCheckIBMAtrackerTargetConfigBasic(name string, targetType string) st `, name, targetType) } -func testAccCheckIBMAtrackerTargetConfig(name string, targetType string, region string) string { +func testAccCheckIBMAtrackerTargetConfig(name string, targetType string, region string, managedBy string) string { return fmt.Sprintf(` + resource "ibm_atracker_target" "atracker_target_instance" { name = "%s" target_type = "%s" @@ -117,8 +121,9 @@ func testAccCheckIBMAtrackerTargetConfig(name string, targetType string, region api_key = "xxxxxxxxxxxxxx" service_to_service_enabled = true } + managed_by = "%s" } - `, name, targetType, region) + `, name, targetType, region, managedBy) } func testAccCheckIBMAtrackerTargetExists(n string, obj atrackerv2.Target) resource.TestCheckFunc { @@ -168,7 +173,7 @@ func testAccCheckIBMAtrackerTargetDestroy(s *terraform.State) error { if err == nil { return fmt.Errorf("Activity Tracker Target still exists: %s", rs.Primary.ID) } else if response.StatusCode != 404 { - return fmt.Errorf("[ERROR] Error checking for Activity Tracker Target (%s) has been destroyed: %s", rs.Primary.ID, err) + return fmt.Errorf("Error checking for atracker_target (%s) has been destroyed: %s", rs.Primary.ID, err) } } @@ -178,10 +183,10 @@ func testAccCheckIBMAtrackerTargetDestroy(s *terraform.State) error { func TestResourceIBMAtrackerTargetCosEndpointToMap(t *testing.T) { checkResult := func(result map[string]interface{}) { model := make(map[string]interface{}) - model["endpoint"] = core.StringPtr("s3.private.us-east.cloud-object-storage.appdomain.cloud") - model["target_crn"] = core.StringPtr("crn:v1:bluemix:public:cloud-object-storage:global:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::") - model["bucket"] = core.StringPtr("my-atracker-bucket") - model["service_to_service_enabled"] = core.BoolPtr(true) + model["endpoint"] = "s3.private.us-east.cloud-object-storage.appdomain.cloud" + model["target_crn"] = "crn:v1:bluemix:public:cloud-object-storage:global:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::" + model["bucket"] = "my-atracker-bucket" + model["service_to_service_enabled"] = true model["api_key"] = "REDACTED" assert.Equal(t, result, model) @@ -201,11 +206,11 @@ func TestResourceIBMAtrackerTargetCosEndpointToMap(t *testing.T) { func TestResourceIBMAtrackerTargetEventstreamsEndpointToMap(t *testing.T) { checkResult := func(result map[string]interface{}) { model := make(map[string]interface{}) - model["target_crn"] = core.StringPtr("crn:v1:bluemix:public:messagehub:us-south:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::") + model["target_crn"] = "crn:v1:bluemix:public:messagehub:us-south:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::" model["brokers"] = []string{"kafka-x:9094"} - model["topic"] = core.StringPtr("my-topic") - model["api_key"] = "REDACTED" - model["service_to_service_enabled"] = core.BoolPtr(false) + model["topic"] = "my-topic" + model["api_key"] = "xxxxxxxxxxxxxx" + model["service_to_service_enabled"] = false assert.Equal(t, result, model) } @@ -225,13 +230,13 @@ func TestResourceIBMAtrackerTargetEventstreamsEndpointToMap(t *testing.T) { func TestResourceIBMAtrackerTargetCloudLogsEndpointToMap(t *testing.T) { checkResult := func(result map[string]interface{}) { model := make(map[string]interface{}) - model["target_crn"] = core.StringPtr("crn:v1:bluemix:public:logs:eu-es:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::") + model["target_crn"] = "crn:v1:bluemix:public:eu-es:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::" assert.Equal(t, result, model) } model := new(atrackerv2.CloudLogsEndpoint) - model.TargetCRN = core.StringPtr("crn:v1:bluemix:public:logs:eu-es:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::") + model.TargetCRN = core.StringPtr("crn:v1:bluemix:public:eu-es:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::") result, err := atracker.ResourceIBMAtrackerTargetCloudLogsEndpointToMap(model) assert.Nil(t, err) @@ -241,9 +246,9 @@ func TestResourceIBMAtrackerTargetCloudLogsEndpointToMap(t *testing.T) { func TestResourceIBMAtrackerTargetWriteStatusToMap(t *testing.T) { checkResult := func(result map[string]interface{}) { model := make(map[string]interface{}) - model["status"] = core.StringPtr("success") + model["status"] = "success" model["last_failure"] = "2021-05-18T20:15:12.353Z" - model["reason_for_last_failure"] = core.StringPtr("Provided API key could not be found") + model["reason_for_last_failure"] = "Provided API key could not be found" assert.Equal(t, result, model) } diff --git a/website/docs/d/atracker_routes.html.markdown b/website/docs/d/atracker_routes.html.markdown index d6ecc69a0ef..7f58abf7b3f 100644 --- a/website/docs/d/atracker_routes.html.markdown +++ b/website/docs/d/atracker_routes.html.markdown @@ -3,7 +3,7 @@ layout: "ibm" page_title: "IBM : ibm_atracker_routes" description: |- Get information about atracker_routes -subcategory: "Activity Tracker Event Routing" +subcategory: "Activity Tracker API Version 2" --- # ibm_atracker_routes @@ -12,9 +12,9 @@ Provides a read-only data source to retrieve information about atracker_routes. ## Example Usage -```terraform +```hcl data "ibm_atracker_routes" "atracker_routes" { - name = "my-route" + name = ibm_atracker_route.atracker_route_instance.name } ``` @@ -37,15 +37,18 @@ Nested schema for **routes**: * `created_at` - (String) The timestamp of the route creation time. * `crn` - (String) The crn of the route resource. * `id` - (String) The uuid of the route resource. + * `managed_by` - (String) Present when the route is enterprise-managed (`managed_by: enterprise`). + * Constraints: Allowable values are: `enterprise`, `account`. * `message` - (String) An optional message containing information about the route. * `name` - (String) The name of the route. * `rules` - (List) The routing rules that will be evaluated in their order of the array. Once a rule is matched, the remaining rules in the route definition will be skipped. * Constraints: The maximum length is `10` items. The minimum length is `1` item. Nested schema for **rules**: - * `target_ids` - (List) The target ID List. All the events will be send to all targets listed in the rule. You can include targets from other regions. - * Constraints: The list items must match regular expression `/^[a-zA-Z0-9 -._:]+$/`. * `locations` - (List) Logs from these locations will be sent to the targets specified. Locations is a superset of regions including global and *. * Constraints: The list items must match regular expression `/^[a-zA-Z0-9 -._:]+$/`. - * `created_at` - (String) The timestamp of the route creation time. + * `target_ids` - (List) The target ID List. All the events will be send to all targets listed in the rule. You can include targets from other regions. + * Constraints: The list items must match regular expression `/^[a-zA-Z0-9 -._:]+$/`. * `updated_at` - (String) The timestamp of the route last updated time. * `version` - (Integer) The version of the route. + * Constraints: The maximum value is `99999`. The minimum value is `0`. + diff --git a/website/docs/d/atracker_targets.html.markdown b/website/docs/d/atracker_targets.html.markdown index a84afd525aa..97febf8b5c8 100644 --- a/website/docs/d/atracker_targets.html.markdown +++ b/website/docs/d/atracker_targets.html.markdown @@ -3,7 +3,7 @@ layout: "ibm" page_title: "IBM : ibm_atracker_targets" description: |- Get information about atracker_targets -subcategory: "Activity Tracker Event Routing" +subcategory: "Activity Tracker API Version 2" --- # ibm_atracker_targets @@ -12,9 +12,9 @@ Provides a read-only data source to retrieve information about atracker_targets. ## Example Usage -```terraform +```hcl data "ibm_atracker_targets" "atracker_targets" { - name = "a-cos-target-us-south" + name = ibm_atracker_target.atracker_target_instance.name } ``` @@ -62,6 +62,8 @@ Nested schema for **targets**: * `topic` - (String) The messsage hub topic defined in the Event Streams instance. * Constraints: The maximum length is `1000` characters. The minimum length is `3` characters. The value must match regular expression `/^[a-zA-Z0-9 -._:\/]+$/`. * `id` - (String) The uuid of the target resource. + * `managed_by` - (String) Identifies who manages the target. + * Constraints: Allowable values are: `enterprise`, `account`. * `message` - (String) An optional message containing information about the target. * `name` - (String) The name of the target resource. * `region` - (String) Included this optional field if you used it to create a target in a different region other than the one you are connected. @@ -73,3 +75,4 @@ Nested schema for **targets**: * `last_failure` - (String) The timestamp of the failure. * `reason_for_last_failure` - (String) Detailed description of the cause of the failure. * `status` - (String) The status such as failed or success. + diff --git a/website/docs/r/atracker_route.html.markdown b/website/docs/r/atracker_route.html.markdown index 3e52910d229..1207f11f288 100644 --- a/website/docs/r/atracker_route.html.markdown +++ b/website/docs/r/atracker_route.html.markdown @@ -3,7 +3,7 @@ layout: "ibm" page_title: "IBM : ibm_atracker_route" description: |- Manages atracker_route. -subcategory: "Activity Tracker Event Routing" +subcategory: "Activity Tracker API Version 2" --- # ibm_atracker_route @@ -14,6 +14,7 @@ Create, update, and delete atracker_routes with this resource. ```hcl resource "ibm_atracker_route" "atracker_route_instance" { + managed_by = "enterprise" name = "my-route" rules { target_ids = [ "c3af557f-fb0e-4476-85c3-0889e7fe7bc4" ] @@ -26,6 +27,8 @@ resource "ibm_atracker_route" "atracker_route_instance" { You can specify the following arguments for this resource. +* `managed_by` - (Optional, String) Present when the route is enterprise-managed (`managed_by: enterprise`). + * Constraints: Allowable values are: `enterprise`, `account`. * `name` - (Required, String) The name of the route. * `rules` - (Required, List) The routing rules that will be evaluated in their order of the array. Once a rule is matched, the remaining rules in the route definition will be skipped. * Constraints: The maximum length is `10` items. The minimum length is `1` item. @@ -47,7 +50,7 @@ After your resource is created, you can read values from the listed arguments an * `message` - (String) An optional message containing information about the route. * `updated_at` - (String) The timestamp of the route last updated time. * `version` - (Integer) The version of the route. - * Constraints: The minimum value is `0`. + * Constraints: The maximum value is `99999`. The minimum value is `0`. ## Import diff --git a/website/docs/r/atracker_settings.html.markdown b/website/docs/r/atracker_settings.html.markdown index 9f73f1122c7..76b7f26e2b5 100644 --- a/website/docs/r/atracker_settings.html.markdown +++ b/website/docs/r/atracker_settings.html.markdown @@ -3,7 +3,7 @@ layout: "ibm" page_title: "IBM : ibm_atracker_settings" description: |- Manages atracker_settings. -subcategory: "Activity Tracker Event Routing" +subcategory: "Activity Tracker API Version 2" --- # ibm_atracker_settings @@ -26,7 +26,7 @@ resource "ibm_atracker_settings" "atracker_settings_instance" { You can specify the following arguments for this resource. -* `default_targets` - (Optional, List) The target ID List. In the event that no routing rule causes the event to be sent to a target, these targets will receive the event. +* `default_targets` - (Optional, List) The target ID List. In the event that no routing rule causes the event to be sent to a target, these targets will receive the event. Enterprise-managed targets are not supported. * Constraints: The list items must match regular expression `/^[a-zA-Z0-9 -]/`. * `metadata_region_backup` - (Optional, String) To store all your meta data in a backup region. * Constraints: The maximum length is `256` characters. The minimum length is `3` characters. The value must match regular expression `/^[a-zA-Z0-9 -_]/`. diff --git a/website/docs/r/atracker_target.html.markdown b/website/docs/r/atracker_target.html.markdown index 94b277a7f62..98b3bba4ec6 100644 --- a/website/docs/r/atracker_target.html.markdown +++ b/website/docs/r/atracker_target.html.markdown @@ -3,7 +3,7 @@ layout: "ibm" page_title: "IBM : ibm_atracker_target" description: |- Manages atracker_target. -subcategory: "Activity Tracker Event Routing" +subcategory: "Activity Tracker API Version 2" --- # ibm_atracker_target @@ -23,33 +23,18 @@ resource "ibm_atracker_target" "atracker_target_instance" { bucket = "my-atracker-bucket" service_to_service_enabled = true } - name = "my-cos-target" - target_type = "cloud_object_storage" - region = "us-south" -} - -resource "ibm_atracker_target" "atracker_eventstreams_target" { eventstreams_endpoint { target_crn = "crn:v1:bluemix:public:messagehub:us-south:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::" brokers = [ "kafka-x:9094" ] topic = "my-topic" - api_key = "xxxxxxxxxxxxxx" // pragma: allowlist secret + api_key = "xxxxxxxxxxxxxx" service_to_service_enabled = false } - name = "my-eventstreams-target" - target_type = "event_streams" - region = "us-south" -} - -resource "ibm_atracker_target" "atracker_cloudlogs_target" { - cloudlogs_endpoint { - target_crn = "crn:v1:bluemix:public:logs:eu-es:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::" - } - name = "my-cloudlogs-target" - target_type = "cloud_logs" + managed_by = "enterprise" + name = "my-cos-target" region = "us-south" + target_type = "cloud_object_storage" } - ``` ## Argument Reference @@ -80,6 +65,8 @@ Nested schema for **eventstreams_endpoint**: * Constraints: The maximum length is `1000` characters. The minimum length is `3` characters. The value must match regular expression `/^[a-zA-Z0-9 -._:\/]+$/`. * `topic` - (Required, String) The messsage hub topic defined in the Event Streams instance. * Constraints: The maximum length is `1000` characters. The minimum length is `3` characters. The value must match regular expression `/^[a-zA-Z0-9 -._:\/]+$/`. +* `managed_by` - (Optional, String) Identifies who manages the target. + * Constraints: Allowable values are: `enterprise`, `account`. * `name` - (Required, String) The name of the target resource. * `region` - (Optional, String) Included this optional field if you used it to create a target in a different region other than the one you are connected. * `target_type` - (Required, String) The type of the target.