Skip to content

Commit 29bd8bc

Browse files
Terraform Team AutomationNagaRajuPasunuri
authored andcommitted
Added - Resource discovery for
1 parent 1d37ada commit 29bd8bc

10 files changed

+66
-78
lines changed

examples/marketplace/main.tf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ provider "oci" {
3030

3131
resource "oci_marketplace_accepted_agreement" "test_accepted_agreement" {
3232
#Required
33-
agreement_id = oci_marketplace_listing_package_agreement.test_listing_package_agreement.agreement_id
33+
agreement_id = data.oci_marketplace_listing_package_agreement.test_listing_package_agreement.agreement_id
3434
compartment_id = var.compartment_ocid
3535
listing_id = data.oci_marketplace_listing.test_listing.id
3636
package_version = data.oci_marketplace_listing.test_listing.default_package_version
37-
signature = oci_marketplace_listing_package_agreement.test_listing_package_agreement.signature
37+
signature = data.oci_marketplace_listing_package_agreement.test_listing_package_agreement.signature
3838
}
3939

40-
resource "oci_marketplace_listing_package_agreement" "test_listing_package_agreement" {
40+
data "oci_marketplace_listing_package_agreement" "test_listing_package_agreement" {
4141
#Required
4242
agreement_id = data.oci_marketplace_listing_package_agreements.test_listing_package_agreements.agreements[0].id
4343
listing_id = data.oci_marketplace_listing.test_listing.id

internal/integrationtest/marketplace_accepted_agreement_test.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,21 +47,25 @@ var (
4747
}
4848

4949
MarketplaceAcceptedAgreementRepresentation = map[string]interface{}{
50-
"agreement_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_marketplace_listing_package_agreement.test_listing_package_agreement.agreement_id}`},
50+
"agreement_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_marketplace_listing_package_agreement.test_listing_package_agreement.agreement_id}`},
5151
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
5252
"listing_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_marketplace_listing.test_listing.id}`},
5353
"package_version": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_marketplace_listing.test_listing.default_package_version}`},
54-
"defined_tags": acctest.Representation{RepType: acctest.Optional, Create: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "value")}`, Update: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "updatedValue")}`},
5554
"display_name": acctest.Representation{RepType: acctest.Optional, Create: `displayName`, Update: `displayName2`},
5655
"freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}},
57-
"signature": acctest.Representation{RepType: acctest.Required, Create: `${oci_marketplace_listing_package_agreement.test_listing_package_agreement.signature}`},
56+
"signature": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_marketplace_listing_package_agreement.test_listing_package_agreement.signature}`},
57+
"lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: MarketplaceAcceptedAgreementIgnoreChangesRepresentation},
58+
}
59+
60+
MarketplaceAcceptedAgreementIgnoreChangesRepresentation = map[string]interface{}{
61+
"ignore_changes": acctest.Representation{RepType: acctest.Required, Create: []string{`signature`}},
5862
}
5963

6064
MarketplaceAcceptedAgreementResourceDependencies = DefinedTagsDependencies +
6165
acctest.GenerateDataSourceFromRepresentationMap("oci_marketplace_listings", "test_listings", acctest.Required, acctest.Create, MarketplaceMarketplaceListingDataSourceRepresentation) +
6266
acctest.GenerateDataSourceFromRepresentationMap("oci_marketplace_listing", "test_listing", acctest.Required, acctest.Create, MarketplaceMarketplaceListingSingularDataSourceRepresentation) +
63-
acctest.GenerateDataSourceFromRepresentationMap("oci_marketplace_listing_package_agreements", "test_listing_package_agreements", acctest.Required, acctest.Create, MarketplaceMarketplaceListingPackageAgreementDataSourceRepresentation) +
64-
acctest.GenerateResourceFromRepresentationMap("oci_marketplace_listing_package_agreement", "test_listing_package_agreement", acctest.Required, acctest.Create, MarketplaceListingPackageAgreementManagementRepresentation)
67+
acctest.GenerateDataSourceFromRepresentationMap("oci_marketplace_listing_package_agreements", "test_listing_package_agreements", acctest.Required, acctest.Create, MarketplaceMarketplaceListingPackageAgreementsDataSourceRepresentation) +
68+
acctest.GenerateDataSourceFromRepresentationMap("oci_marketplace_listing_package_agreement", "test_listing_package_agreement", acctest.Required, acctest.Create, MarketplaceMarketplaceListingPackageAgreementDataSourceRepresentation)
6569
)
6670

6771
// issue-routing-tag: marketplace/default

internal/integrationtest/marketplace_listing_package_agreement_test.go

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ import (
1515
)
1616

1717
var (
18-
MarketplaceListingPackageAgreementManagementRepresentation = map[string]interface{}{
18+
MarketplaceMarketplaceListingPackageAgreementDataSourceRepresentation = map[string]interface{}{
1919
"agreement_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_marketplace_listing_package_agreements.test_listing_package_agreements.agreements.0.id}`},
2020
"listing_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_marketplace_listing.test_listing.id}`},
2121
"package_version": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_marketplace_listing.test_listing.default_package_version}`},
2222
"compartment_id": acctest.Representation{RepType: acctest.Optional, Create: `${var.compartment_id}`},
2323
}
2424

25-
MarketplaceMarketplaceListingPackageAgreementDataSourceRepresentation = map[string]interface{}{
25+
MarketplaceMarketplaceListingPackageAgreementsDataSourceRepresentation = map[string]interface{}{
2626
"listing_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_marketplace_listing.test_listing.id}`},
2727
"package_version": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_marketplace_listing.test_listing.default_package_version}`},
2828
"compartment_id": acctest.Representation{RepType: acctest.Optional, Create: `${var.compartment_id}`},
@@ -42,42 +42,42 @@ func TestMarketplaceListingPackageAgreementResource_basic(t *testing.T) {
4242
compartmentId := utils.GetEnvSettingWithBlankDefault("compartment_ocid")
4343
compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId)
4444

45-
datasourceName := "data.oci_marketplace_listing_package_agreements.test_listing_package_agreements"
46-
resourceName := "oci_marketplace_listing_package_agreement.test_listing_package_agreement"
45+
listDatasourceName := "data.oci_marketplace_listing_package_agreements.test_listing_package_agreements"
46+
getDatasourceName := "data.oci_marketplace_listing_package_agreement.test_listing_package_agreement"
4747

4848
acctest.SaveConfigContent("", "", "", t)
4949

5050
acctest.ResourceTest(t, nil, []resource.TestStep{
51-
// verify resource
51+
// verify get datasource
5252
{
5353
Config: config +
54-
acctest.GenerateResourceFromRepresentationMap("oci_marketplace_listing_package_agreement", "test_listing_package_agreement", acctest.Required, acctest.Create, MarketplaceListingPackageAgreementManagementRepresentation) +
55-
acctest.GenerateDataSourceFromRepresentationMap("oci_marketplace_listing_package_agreements", "test_listing_package_agreements", acctest.Required, acctest.Create, MarketplaceMarketplaceListingPackageAgreementDataSourceRepresentation) +
54+
acctest.GenerateDataSourceFromRepresentationMap("oci_marketplace_listing_package_agreement", "test_listing_package_agreement", acctest.Required, acctest.Create, MarketplaceMarketplaceListingPackageAgreementDataSourceRepresentation) +
55+
acctest.GenerateDataSourceFromRepresentationMap("oci_marketplace_listing_package_agreements", "test_listing_package_agreements", acctest.Required, acctest.Create, MarketplaceMarketplaceListingPackageAgreementsDataSourceRepresentation) +
5656
compartmentIdVariableStr + MarketplaceListingPackageAgreementResourceConfig,
5757
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
58-
resource.TestCheckResourceAttrSet(resourceName, "agreement_id"),
59-
resource.TestCheckResourceAttrSet(resourceName, "listing_id"),
60-
resource.TestCheckResourceAttrSet(resourceName, "package_version"),
58+
resource.TestCheckResourceAttrSet(getDatasourceName, "agreement_id"),
59+
resource.TestCheckResourceAttrSet(getDatasourceName, "listing_id"),
60+
resource.TestCheckResourceAttrSet(getDatasourceName, "package_version"),
6161

62-
resource.TestCheckResourceAttrSet(resourceName, "content_url"),
63-
resource.TestCheckResourceAttrSet(resourceName, "id"),
64-
resource.TestCheckResourceAttrSet(resourceName, "prompt"),
65-
resource.TestCheckResourceAttrSet(resourceName, "signature"),
62+
resource.TestCheckResourceAttrSet(getDatasourceName, "content_url"),
63+
resource.TestCheckResourceAttrSet(getDatasourceName, "id"),
64+
resource.TestCheckResourceAttrSet(getDatasourceName, "prompt"),
65+
resource.TestCheckResourceAttrSet(getDatasourceName, "signature"),
6666
),
6767
},
68-
// verify datasource
68+
// verify list datasource
6969
{
7070
Config: config +
71-
acctest.GenerateDataSourceFromRepresentationMap("oci_marketplace_listing_package_agreements", "test_listing_package_agreements", acctest.Required, acctest.Create, MarketplaceMarketplaceListingPackageAgreementDataSourceRepresentation) +
71+
acctest.GenerateDataSourceFromRepresentationMap("oci_marketplace_listing_package_agreements", "test_listing_package_agreements", acctest.Required, acctest.Create, MarketplaceMarketplaceListingPackageAgreementsDataSourceRepresentation) +
7272
compartmentIdVariableStr + MarketplaceListingPackageAgreementResourceConfig,
7373
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
74-
resource.TestCheckResourceAttrSet(datasourceName, "listing_id"),
74+
resource.TestCheckResourceAttrSet(listDatasourceName, "listing_id"),
7575

76-
resource.TestCheckResourceAttrSet(datasourceName, "agreements.#"),
77-
resource.TestCheckResourceAttrSet(datasourceName, "agreements.0.author"),
78-
resource.TestCheckResourceAttrSet(datasourceName, "agreements.0.content_url"),
79-
resource.TestCheckResourceAttrSet(datasourceName, "agreements.0.id"),
80-
resource.TestCheckResourceAttrSet(datasourceName, "agreements.0.prompt"),
76+
resource.TestCheckResourceAttrSet(listDatasourceName, "agreements.#"),
77+
resource.TestCheckResourceAttrSet(listDatasourceName, "agreements.0.author"),
78+
resource.TestCheckResourceAttrSet(listDatasourceName, "agreements.0.content_url"),
79+
resource.TestCheckResourceAttrSet(listDatasourceName, "agreements.0.id"),
80+
resource.TestCheckResourceAttrSet(listDatasourceName, "agreements.0.prompt"),
8181
),
8282
},
8383
})

internal/service/marketplace/marketplace_export.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ package marketplace
22

33
import (
44
oci_marketplace "github.com/oracle/oci-go-sdk/v65/marketplace"
5-
65
tf_export "github.com/oracle/terraform-provider-oci/internal/commonexport"
76
)
87

98
func init() {
9+
exportMarketplacePublicationHints.FindResourcesOverrideFn = findPublications
1010
tf_export.RegisterCompartmentGraphs("marketplace", marketplaceResourceGraph)
1111
}
1212

@@ -28,12 +28,25 @@ var exportMarketplacePublicationHints = &tf_export.TerraformResourceHints{
2828
ResourceAbbreviation: "publication",
2929
RequireResourceRefresh: true,
3030
DiscoverableLifecycleStates: []string{
31+
string(oci_marketplace.PublicationLifecycleStateCreating),
3132
string(oci_marketplace.PublicationLifecycleStateActive),
3233
},
3334
}
3435

3536
var marketplaceResourceGraph = tf_export.TerraformResourceGraph{
3637
"oci_identity_compartment": {
3738
{TerraformResourceHints: exportMarketplaceAcceptedAgreementHints},
39+
{TerraformResourceHints: exportMarketplacePublicationHints},
3840
},
3941
}
42+
43+
func findPublications(ctx *tf_export.ResourceDiscoveryContext, tfMeta *tf_export.TerraformResourceAssociation, parent *tf_export.OCIResource, resourceGraph *tf_export.TerraformResourceGraph) (resources []*tf_export.OCIResource, err error) {
44+
if tfMeta.DatasourceQueryParams == nil {
45+
tfMeta.DatasourceQueryParams = map[string]string{}
46+
}
47+
// Setting the "listing_type" field to the special value "COMMUNITY" will
48+
// result in terraform fetching community listings (i.e. publications)
49+
// when populating the "oci_marketplace_publications" data source
50+
tfMeta.DatasourceQueryParams["listing_type"] = "'COMMUNITY'"
51+
return tf_export.FindResourcesGeneric(ctx, tfMeta, parent, resourceGraph)
52+
}

internal/service/marketplace/marketplace_listing_package_agreement_resource.go renamed to internal/service/marketplace/marketplace_listing_package_agreement_data_source.go

Lines changed: 11 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -13,33 +13,27 @@ import (
1313
"github.com/oracle/terraform-provider-oci/internal/tfresource"
1414
)
1515

16-
func MarketplaceListingPackageAgreementResource() *schema.Resource {
16+
func MarketplaceListingPackageAgreementDataSource() *schema.Resource {
1717
return &schema.Resource{
18-
Create: createMarketplaceListingPackageAgreement,
19-
Read: readMarketplaceListingPackageAgreement,
20-
Delete: deleteMarketplaceListingPackageAgreement,
18+
Read: readMarketplaceListingPackageAgreement,
2119
Schema: map[string]*schema.Schema{
2220
"agreement_id": {
2321
Type: schema.TypeString,
2422
Required: true,
25-
ForceNew: true,
2623
},
2724
"listing_id": {
2825
Type: schema.TypeString,
2926
Required: true,
30-
ForceNew: true,
3127
},
3228
"package_version": {
3329
Type: schema.TypeString,
3430
Required: true,
35-
ForceNew: true,
3631
},
3732
// Optional
3833
"compartment_id": {
3934
Type: schema.TypeString,
4035
Optional: true,
4136
Computed: true,
42-
ForceNew: true,
4337
},
4438
// Computed
4539
"author": {
@@ -62,39 +56,24 @@ func MarketplaceListingPackageAgreementResource() *schema.Resource {
6256
}
6357
}
6458

65-
func createMarketplaceListingPackageAgreement(d *schema.ResourceData, m interface{}) error {
66-
sync := &MarketplaceListingPackageAgreementResourceCrud{}
67-
sync.D = d
68-
sync.Client = m.(*client.OracleClients).MarketplaceClient()
69-
return tfresource.CreateResource(d, sync)
70-
}
71-
7259
func readMarketplaceListingPackageAgreement(d *schema.ResourceData, m interface{}) error {
73-
sync := &MarketplaceListingPackageAgreementResourceCrud{}
60+
sync := &MarketplaceListingPackageAgreementDataSourceCrud{}
7461
sync.D = d
7562
sync.Client = m.(*client.OracleClients).MarketplaceClient()
7663
return tfresource.ReadResource(sync)
7764
}
7865

79-
func deleteMarketplaceListingPackageAgreement(d *schema.ResourceData, m interface{}) error {
80-
sync := &MarketplaceListingPackageAgreementResourceCrud{}
81-
sync.D = d
82-
sync.Client = m.(*client.OracleClients).MarketplaceClient()
83-
return tfresource.DeleteResource(d, sync)
84-
}
85-
86-
type MarketplaceListingPackageAgreementResourceCrud struct {
87-
tfresource.BaseCrud
88-
Client *oci_marketplace.MarketplaceClient
89-
Res *oci_marketplace.GetAgreementResponse
90-
DisableNotFoundRetries bool
66+
type MarketplaceListingPackageAgreementDataSourceCrud struct {
67+
D *schema.ResourceData
68+
Client *oci_marketplace.MarketplaceClient
69+
Res *oci_marketplace.GetAgreementResponse
9170
}
9271

93-
func (s *MarketplaceListingPackageAgreementResourceCrud) ID() string {
94-
return *s.Res.Id
72+
func (s *MarketplaceListingPackageAgreementDataSourceCrud) VoidState() {
73+
s.D.SetId("")
9574
}
9675

97-
func (s *MarketplaceListingPackageAgreementResourceCrud) Create() error {
76+
func (s *MarketplaceListingPackageAgreementDataSourceCrud) Get() error {
9877
request := oci_marketplace.GetAgreementRequest{}
9978

10079
if agreementId, ok := s.D.GetOkExists("agreement_id"); ok {
@@ -128,15 +107,7 @@ func (s *MarketplaceListingPackageAgreementResourceCrud) Create() error {
128107
return nil
129108
}
130109

131-
func (s *MarketplaceListingPackageAgreementResourceCrud) Get() error {
132-
return nil
133-
}
134-
135-
func (s *MarketplaceListingPackageAgreementResourceCrud) Delete() error {
136-
return nil
137-
}
138-
139-
func (s *MarketplaceListingPackageAgreementResourceCrud) SetData() error {
110+
func (s *MarketplaceListingPackageAgreementDataSourceCrud) SetData() error {
140111
if s.Res == nil {
141112
return nil
142113
}

internal/service/marketplace/register_datasource.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ func RegisterDatasource() {
1212
tfresource.RegisterDatasource("oci_marketplace_listing", MarketplaceListingDataSource())
1313
tfresource.RegisterDatasource("oci_marketplace_listing_package", MarketplaceListingPackageDataSource())
1414
tfresource.RegisterDatasource("oci_marketplace_listing_package_agreements", MarketplaceListingPackageAgreementsDataSource())
15+
tfresource.RegisterDatasource("oci_marketplace_listing_package_agreement", MarketplaceListingPackageAgreementDataSource())
1516
tfresource.RegisterDatasource("oci_marketplace_listing_packages", MarketplaceListingPackagesDataSource())
1617
tfresource.RegisterDatasource("oci_marketplace_listing_taxes", MarketplaceListingTaxesDataSource())
1718
tfresource.RegisterDatasource("oci_marketplace_listings", MarketplaceListingsDataSource())

internal/service/marketplace/register_resource.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,4 @@ import "github.com/oracle/terraform-provider-oci/internal/tfresource"
88
func RegisterResource() {
99
tfresource.RegisterResource("oci_marketplace_accepted_agreement", MarketplaceAcceptedAgreementResource())
1010
tfresource.RegisterResource("oci_marketplace_publication", MarketplacePublicationResource())
11-
tfresource.RegisterResource("oci_marketplace_listing_package_agreement", MarketplaceListingPackageAgreementResource())
1211
}

website/docs/d/marketplace_listing.html.markdown

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ data "oci_marketplace_listing" "test_listing" {
4343

4444
The following arguments are supported:
4545

46-
* `compartment_id` - (Optional) The unique identifier for the compartment.
46+
* `compartment_id` - (Optional) The unique identifier for the compartment. It is mandatory when using in government realms.
4747
* `listing_id` - (Required) The unique identifier for the listing.
4848

4949

website/docs/r/marketplace_listing_package_agreement.html.markdown renamed to website/docs/d/marketplace_listing_package_agreement.html.markdown

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@ description: |-
88
---
99

1010
# Data Source: oci_marketplace_listing_package_agreement_management
11-
This resource provides details about a specific Listing Package Agreement resource in Oracle Cloud Infrastructure Marketplace service.
11+
This data source provides details about a specific Listing Package Agreement resource in Oracle Cloud Infrastructure Marketplace service.
1212

13-
This resource can be used to retrieve the time-based signature of terms of use agreement for a package that can be used to
13+
It can be used to retrieve the time-based signature of terms of use agreement for a package that can be used to
1414
accept the agreement.
1515

1616

1717
## Example Usage
1818

1919
```hcl
20-
resource "oci_marketplace_listing_package_agreement" "test_listing_package_agreement" {
20+
data "oci_marketplace_listing_package_agreement" "test_listing_package_agreement" {
2121
#Required
2222
agreement_id = oci_marketplace_agreement.test_agreement.id
2323
listing_id = oci_marketplace_listing.test_listing.id
@@ -53,4 +53,4 @@ The following attributes are exported:
5353

5454
## Import
5555

56-
Import is not supported for this resource.
56+
Import is not supported for this resource.

website/docs/d/marketplace_listings.html.markdown

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ data "oci_marketplace_listings" "test_listings" {
5252
The following arguments are supported:
5353

5454
* `category` - (Optional) Name of the product category or categories. If you specify multiple categories, then Marketplace returns any listing with one or more matching categories.
55-
* `compartment_id` - (Optional) The unique identifier for the compartment.
55+
* `compartment_id` - (Optional) The unique identifier for the compartment. It is mandatory when using in government realms.
5656
* `image_id` - (Optional) The image identifier of the listing.
5757
* `is_featured` - (Optional) Indicates whether to show only featured listings. If this is set to `false` or is omitted, then all listings will be returned.
5858
* `listing_id` - (Optional) The unique identifier for the listing.

0 commit comments

Comments
 (0)