Skip to content

Commit 4f1a7d1

Browse files
New Resource : google_dialogflow_cx_flow (#4963) (#3422)
Signed-off-by: Modular Magician <[email protected]>
1 parent cbe48c1 commit 4f1a7d1

File tree

7 files changed

+1965
-2
lines changed

7 files changed

+1965
-2
lines changed

.changelog/4963.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:new-resource
2+
`google_dialogflow_cx_flow`
3+
```

google-beta/provider.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -886,9 +886,9 @@ func Provider() *schema.Provider {
886886
return provider
887887
}
888888

889-
// Generated resources: 236
889+
// Generated resources: 237
890890
// Generated IAM resources: 117
891-
// Total generated resources: 353
891+
// Total generated resources: 354
892892
func ResourceMap() map[string]*schema.Resource {
893893
resourceMap, _ := ResourceMapWithErrors()
894894
return resourceMap
@@ -1095,6 +1095,7 @@ func ResourceMapWithErrors() (map[string]*schema.Resource, error) {
10951095
"google_dialogflow_fulfillment": resourceDialogflowFulfillment(),
10961096
"google_dialogflow_cx_agent": resourceDialogflowCXAgent(),
10971097
"google_dialogflow_cx_intent": resourceDialogflowCXIntent(),
1098+
"google_dialogflow_cx_flow": resourceDialogflowCXFlow(),
10981099
"google_dns_managed_zone": resourceDNSManagedZone(),
10991100
"google_dns_policy": resourceDNSPolicy(),
11001101
"google_dns_record_set": resourceDNSResourceDnsRecordSet(),

google-beta/resource_dialogflow_cx_flow.go

Lines changed: 1307 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
// ----------------------------------------------------------------------------
2+
//
3+
// *** AUTO GENERATED CODE *** AUTO GENERATED CODE ***
4+
//
5+
// ----------------------------------------------------------------------------
6+
//
7+
// This file is automatically generated by Magic Modules and manual
8+
// changes will be clobbered when the file is regenerated.
9+
//
10+
// Please read more about how to change this file in
11+
// .github/CONTRIBUTING.md.
12+
//
13+
// ----------------------------------------------------------------------------
14+
15+
package google
16+
17+
import (
18+
"fmt"
19+
"strings"
20+
"testing"
21+
22+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
23+
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
24+
)
25+
26+
func TestAccDialogflowCXFlow_dialogflowcxFlowFullExample(t *testing.T) {
27+
t.Parallel()
28+
29+
context := map[string]interface{}{
30+
"random_suffix": randString(t, 10),
31+
}
32+
33+
vcrTest(t, resource.TestCase{
34+
PreCheck: func() { testAccPreCheck(t) },
35+
Providers: testAccProviders,
36+
CheckDestroy: testAccCheckDialogflowCXFlowDestroyProducer(t),
37+
Steps: []resource.TestStep{
38+
{
39+
Config: testAccDialogflowCXFlow_dialogflowcxFlowFullExample(context),
40+
},
41+
{
42+
ResourceName: "google_dialogflow_cx_flow.basic_flow",
43+
ImportState: true,
44+
ImportStateVerify: true,
45+
ImportStateVerifyIgnore: []string{"parent"},
46+
},
47+
},
48+
})
49+
}
50+
51+
func testAccDialogflowCXFlow_dialogflowcxFlowFullExample(context map[string]interface{}) string {
52+
return Nprintf(`
53+
resource "google_dialogflow_cx_agent" "agent" {
54+
display_name = "tf-test-dialogflowcx-agent%{random_suffix}"
55+
location = "global"
56+
default_language_code = "en"
57+
supported_language_codes = ["fr","de","es"]
58+
time_zone = "America/New_York"
59+
description = "Example description."
60+
avatar_uri = "https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png"
61+
enable_stackdriver_logging = true
62+
enable_spell_correction = true
63+
speech_to_text_settings {
64+
enable_speech_adaptation = true
65+
}
66+
}
67+
68+
69+
resource "google_dialogflow_cx_flow" "basic_flow" {
70+
parent = google_dialogflow_cx_agent.agent.id
71+
display_name = "MyFlow"
72+
description = "Test Flow"
73+
74+
nlu_settings {
75+
classification_threshold = 0.3
76+
model_type = "MODEL_TYPE_STANDARD"
77+
}
78+
79+
event_handlers {
80+
event = "custom-event"
81+
trigger_fulfillment {
82+
return_partial_responses = false
83+
messages {
84+
text {
85+
text = ["I didn't get that. Can you say it again?"]
86+
}
87+
}
88+
}
89+
}
90+
91+
event_handlers {
92+
event = "sys.no-match-default"
93+
trigger_fulfillment {
94+
return_partial_responses = false
95+
messages {
96+
text {
97+
text = ["Sorry, could you say that again?"]
98+
}
99+
}
100+
}
101+
}
102+
103+
event_handlers {
104+
event = "sys.no-input-default"
105+
trigger_fulfillment {
106+
return_partial_responses = false
107+
messages {
108+
text {
109+
text = ["One more time?"]
110+
}
111+
}
112+
}
113+
}
114+
}
115+
`, context)
116+
}
117+
118+
func testAccCheckDialogflowCXFlowDestroyProducer(t *testing.T) func(s *terraform.State) error {
119+
return func(s *terraform.State) error {
120+
for name, rs := range s.RootModule().Resources {
121+
if rs.Type != "google_dialogflow_cx_flow" {
122+
continue
123+
}
124+
if strings.HasPrefix(name, "data.") {
125+
continue
126+
}
127+
128+
config := googleProviderConfig(t)
129+
130+
url, err := replaceVarsForTest(config, rs, "{{DialogflowCXBasePath}}{{parent}}/flows/{{name}}")
131+
if err != nil {
132+
return err
133+
}
134+
135+
billingProject := ""
136+
137+
if config.BillingProject != "" {
138+
billingProject = config.BillingProject
139+
}
140+
141+
_, err = sendRequest(config, "GET", billingProject, url, config.userAgent, nil)
142+
if err == nil {
143+
return fmt.Errorf("DialogflowCXFlow still exists at %s", url)
144+
}
145+
}
146+
147+
return nil
148+
}
149+
}
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
package google
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
7+
)
8+
9+
func TestAccDialogflowCXFlow_update(t *testing.T) {
10+
t.Parallel()
11+
12+
context := map[string]interface{}{
13+
"org_id": getTestOrgFromEnv(t),
14+
"billing_account": getTestBillingAccountFromEnv(t),
15+
"random_suffix": randString(t, 10),
16+
}
17+
18+
vcrTest(t, resource.TestCase{
19+
PreCheck: func() { testAccPreCheck(t) },
20+
Providers: testAccProviders,
21+
Steps: []resource.TestStep{
22+
{
23+
Config: testAccDialogflowCXFlow_basic(context),
24+
},
25+
{
26+
ResourceName: "google_dialogflow_cx_flow.my_flow",
27+
ImportState: true,
28+
ImportStateVerify: true,
29+
},
30+
{
31+
Config: testAccDialogflowCXFlow_full(context),
32+
},
33+
{
34+
ResourceName: "google_dialogflow_cx_flow.my_flow",
35+
ImportState: true,
36+
ImportStateVerify: true,
37+
},
38+
},
39+
})
40+
}
41+
42+
func testAccDialogflowCXFlow_basic(context map[string]interface{}) string {
43+
return Nprintf(`
44+
resource "google_service_account" "dialogflowcx_service_account" {
45+
account_id = "tf-test-dialogflow-%{random_suffix}"
46+
}
47+
48+
resource "google_project_iam_member" "agent_create" {
49+
role = "roles/dialogflow.admin"
50+
member = "serviceAccount:${google_service_account.dialogflowcx_service_account.email}"
51+
}
52+
53+
resource "google_dialogflow_cx_agent" "agent_entity" {
54+
display_name = "tf-test-%{random_suffix}"
55+
location = "global"
56+
default_language_code = "en"
57+
supported_language_codes = ["fr","de","es"]
58+
time_zone = "America/New_York"
59+
description = "Description 1."
60+
avatar_uri = "https://storage.cloud.google.com/dialogflow-test-host-image/cloud-logo.png"
61+
depends_on = [google_project_iam_member.agent_create]
62+
}
63+
64+
resource "google_dialogflow_cx_flow" "my_flow" {
65+
parent = google_dialogflow_cx_agent.agent_entity.id
66+
display_name = "MyFlow"
67+
68+
nlu_settings {
69+
classification_threshold = 0.3
70+
model_type = "MODEL_TYPE_STANDARD"
71+
}
72+
}
73+
`, context)
74+
}
75+
76+
func testAccDialogflowCXFlow_full(context map[string]interface{}) string {
77+
return Nprintf(`
78+
resource "google_service_account" "dialogflowcx_service_account" {
79+
account_id = "tf-test-dialogflow-%{random_suffix}"
80+
}
81+
82+
resource "google_project_iam_member" "agent_create" {
83+
role = "roles/dialogflow.admin"
84+
member = "serviceAccount:${google_service_account.dialogflowcx_service_account.email}"
85+
}
86+
87+
resource "google_dialogflow_cx_agent" "agent_entity" {
88+
display_name = "tf-test-%{random_suffix}update"
89+
location = "global"
90+
default_language_code = "en"
91+
supported_language_codes = ["no"]
92+
time_zone = "Europe/London"
93+
description = "Description 2!"
94+
avatar_uri = "https://storage.cloud.google.com/dialogflow-test-host-image/cloud-logo-2.png"
95+
enable_stackdriver_logging = true
96+
enable_spell_correction = true
97+
speech_to_text_settings {
98+
enable_speech_adaptation = true
99+
}
100+
depends_on = [google_project_iam_member.agent_create]
101+
}
102+
103+
resource "google_dialogflow_cx_flow" "my_flow" {
104+
parent = google_dialogflow_cx_agent.agent_entity.id
105+
display_name = "MyFlow"
106+
107+
nlu_settings {
108+
classification_threshold = 0.3
109+
model_type = "MODEL_TYPE_STANDARD"
110+
}
111+
112+
event_handlers {
113+
event = "custom-event"
114+
trigger_fulfillment {
115+
return_partial_responses = false
116+
messages {
117+
text {
118+
text = ["I didn't get that. Can you say it again?"]
119+
}
120+
}
121+
}
122+
}
123+
124+
event_handlers {
125+
event = "sys.no-match-default"
126+
trigger_fulfillment {
127+
return_partial_responses = false
128+
messages {
129+
text {
130+
text = ["Sorry, could you say that again?"]
131+
}
132+
}
133+
}
134+
}
135+
136+
event_handlers {
137+
event = "sys.no-input-default"
138+
trigger_fulfillment {
139+
return_partial_responses = false
140+
messages {
141+
text {
142+
text = ["One more time?"]
143+
}
144+
}
145+
}
146+
}
147+
}
148+
`, context)
149+
}

0 commit comments

Comments
 (0)