Skip to content

Commit eaa7f22

Browse files
Revert service model name argument (#215)
Description of changes: Reverts #214 and #211 in favour of using the `generator.yaml` file to store the service model name By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
1 parent 5dabfd9 commit eaa7f22

File tree

14 files changed

+68
-111
lines changed

14 files changed

+68
-111
lines changed

cmd/ack-generate/command/apis.go

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,9 @@ const (
3737
)
3838

3939
var (
40-
optGenVersion string
41-
apisVersionPath string
40+
optGenVersion string
41+
optAPIsInputPath string
42+
apisVersionPath string
4243
)
4344

4445
// apiCmd is the command that generates service API types
@@ -96,13 +97,10 @@ func generateAPIs(cmd *cobra.Command, args []string) error {
9697
if err := ensureSDKRepo(ctx, optCacheDir, optRefreshCache); err != nil {
9798
return err
9899
}
99-
if optModelName == "" {
100-
optModelName = svcAlias
101-
}
102100
sdkHelper := ackmodel.NewSDKHelper(sdkDir)
103-
sdkAPI, err := sdkHelper.API(optModelName)
101+
sdkAPI, err := sdkHelper.API(svcAlias)
104102
if err != nil {
105-
newSvcAlias, err := FallBackFindServiceID(sdkDir, optModelName)
103+
newSvcAlias, err := FallBackFindServiceID(sdkDir, svcAlias)
106104
if err != nil {
107105
return err
108106
}
@@ -112,7 +110,7 @@ func generateAPIs(cmd *cobra.Command, args []string) error {
112110
}
113111
}
114112
model, err := ackmodel.New(
115-
sdkAPI, svcAlias, optGenVersion, optGeneratorConfigPath, ackgenerate.DefaultConfig,
113+
sdkAPI, optGenVersion, optGeneratorConfigPath, ackgenerate.DefaultConfig,
116114
)
117115
if err != nil {
118116
return err

cmd/ack-generate/command/controller.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,10 @@ func generateController(cmd *cobra.Command, args []string) error {
6262
if err := ensureSDKRepo(ctx, optCacheDir, optRefreshCache); err != nil {
6363
return err
6464
}
65-
if optModelName == "" {
66-
optModelName = svcAlias
67-
}
6865
sdkHelper := ackmodel.NewSDKHelper(sdkDir)
69-
sdkAPI, err := sdkHelper.API(optModelName)
66+
sdkAPI, err := sdkHelper.API(svcAlias)
7067
if err != nil {
71-
newSvcAlias, err := FallBackFindServiceID(sdkDir, optModelName)
68+
newSvcAlias, err := FallBackFindServiceID(sdkDir, svcAlias)
7269
if err != nil {
7370
return err
7471
}
@@ -82,7 +79,7 @@ func generateController(cmd *cobra.Command, args []string) error {
8279
return err
8380
}
8481
m, err := ackmodel.New(
85-
sdkAPI, svcAlias, latestAPIVersion, optGeneratorConfigPath, ackgenerate.DefaultConfig,
82+
sdkAPI, latestAPIVersion, optGeneratorConfigPath, ackgenerate.DefaultConfig,
8683
)
8784
if err != nil {
8885
return err

cmd/ack-generate/command/crossplane.go

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
"github.com/spf13/cobra"
2727

2828
cpgenerate "github.com/aws-controllers-k8s/code-generator/pkg/generate/crossplane"
29+
"github.com/aws-controllers-k8s/code-generator/pkg/model"
2930
ackmodel "github.com/aws-controllers-k8s/code-generator/pkg/model"
3031
)
3132

@@ -55,20 +56,17 @@ func generateCrossplane(_ *cobra.Command, args []string) error {
5556
return err
5657
}
5758
svcAlias := strings.ToLower(args[0])
58-
if optModelName == "" {
59-
optModelName = svcAlias
60-
}
61-
sdkHelper := ackmodel.NewSDKHelper(sdkDir)
59+
sdkHelper := model.NewSDKHelper(sdkDir)
6260
sdkHelper.APIGroupSuffix = "aws.crossplane.io"
63-
sdkAPI, err := sdkHelper.API(optModelName)
61+
sdkAPI, err := sdkHelper.API(svcAlias)
6462
if err != nil {
65-
newSvcAlias, err := FallBackFindServiceID(sdkDir, optModelName)
63+
newSvcAlias, err := FallBackFindServiceID(sdkDir, svcAlias)
6664
if err != nil {
6765
return err
6866
}
6967
sdkAPI, err = sdkHelper.API(newSvcAlias) // retry with serviceID
7068
if err != nil {
71-
return fmt.Errorf("service %s not found", svcAlias)
69+
return fmt.Errorf("cannot get the API model for service %s", svcAlias)
7270
}
7371
}
7472
cfgPath := filepath.Join(providerDir, "apis", svcAlias, optGenVersion, "generator-config.yaml")
@@ -80,7 +78,7 @@ func generateCrossplane(_ *cobra.Command, args []string) error {
8078
cfgPath = ""
8179
}
8280
m, err := ackmodel.New(
83-
sdkAPI, svcAlias, optGenVersion, cfgPath, cpgenerate.DefaultConfig,
81+
sdkAPI, optGenVersion, cfgPath, cpgenerate.DefaultConfig,
8482
)
8583
if err != nil {
8684
return err

cmd/ack-generate/command/olm.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -86,13 +86,10 @@ func generateOLMAssets(cmd *cobra.Command, args []string) error {
8686
if err := ensureSDKRepo(ctx, optCacheDir, optRefreshCache); err != nil {
8787
return err
8888
}
89-
if optModelName == "" {
90-
optModelName = svcAlias
91-
}
9289
sdkHelper := ackmodel.NewSDKHelper(sdkDir)
93-
sdkAPI, err := sdkHelper.API(optModelName)
90+
sdkAPI, err := sdkHelper.API(svcAlias)
9491
if err != nil {
95-
newSvcAlias, err := FallBackFindServiceID(sdkDir, optModelName)
92+
newSvcAlias, err := FallBackFindServiceID(sdkDir, svcAlias)
9693
if err != nil {
9794
return err
9895
}
@@ -107,7 +104,7 @@ func generateOLMAssets(cmd *cobra.Command, args []string) error {
107104
return err
108105
}
109106
m, err := ackmodel.New(
110-
sdkAPI, svcAlias, latestAPIVersion, optGeneratorConfigPath, ackgenerate.DefaultConfig,
107+
sdkAPI, latestAPIVersion, optGeneratorConfigPath, ackgenerate.DefaultConfig,
111108
)
112109
if err != nil {
113110
return err

cmd/ack-generate/command/release.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,10 @@ func generateRelease(cmd *cobra.Command, args []string) error {
7474
if err := ensureSDKRepo(ctx, optCacheDir, optRefreshCache); err != nil {
7575
return err
7676
}
77-
if optModelName == "" {
78-
optModelName = svcAlias
79-
}
8077
sdkHelper := ackmodel.NewSDKHelper(sdkDir)
81-
sdkAPI, err := sdkHelper.API(optModelName)
78+
sdkAPI, err := sdkHelper.API(svcAlias)
8279
if err != nil {
83-
newSvcAlias, err := FallBackFindServiceID(sdkDir, optModelName)
80+
newSvcAlias, err := FallBackFindServiceID(sdkDir, svcAlias)
8481
if err != nil {
8582
return err
8683
}
@@ -90,7 +87,7 @@ func generateRelease(cmd *cobra.Command, args []string) error {
9087
}
9188
}
9289
m, err := ackmodel.New(
93-
sdkAPI, svcAlias, "", optGeneratorConfigPath, ackgenerate.DefaultConfig,
90+
sdkAPI, "", optGeneratorConfigPath, ackgenerate.DefaultConfig,
9491
)
9592
if err != nil {
9693
return err

cmd/ack-generate/command/root.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ var (
3434
optCacheDir string
3535
optRefreshCache bool
3636
optAWSSDKGoVersion string
37-
optModelName string
3837
defaultTemplateDirs []string
3938
optTemplateDirs []string
4039
defaultServicesDir string
@@ -122,9 +121,6 @@ func init() {
122121
rootCmd.PersistentFlags().StringVar(
123122
&optAWSSDKGoVersion, "aws-sdk-go-version", "", "Version of github.com/aws/aws-sdk-go used to generate apis and controllers files",
124123
)
125-
rootCmd.PersistentFlags().StringVar(
126-
&optModelName, "model-name", "", "the name of the service model package",
127-
)
128124
}
129125

130126
// Execute adds all child commands to the root command and sets flags

pkg/generate/templateset/vars.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ type MetaVars struct {
2121
// alias does not match the ServiceID. e.g. The AWS Step Functions API has
2222
// a ServiceID of "SFN" and a service alias of "states"...
2323
ServiceAlias string
24+
// ServiceID is the exact string that appears in the AWS service API's
25+
// api-2.json descriptor file under `metadata.serviceId`
26+
ServiceID string
2427
// ServiceIDClean is the ServiceID lowercased and stripped of any
2528
// non-alphanumeric characters
2629
ServiceIDClean string
@@ -31,9 +34,6 @@ type MetaVars struct {
3134
// for custom resources, e.g. "sns.services.k8s.aws" or
3235
// "sfn.services.k8s.aws"
3336
APIGroup string
34-
// AWSSDKModelServiceID is the exact string that appears in the AWS service API's
35-
// api-2.json descriptor file under `metadata.serviceId`
36-
AWSSDKModelServiceID string
3737
// SDKAPIInterfaceTypeName is the name of the interface type used by the
3838
// aws-sdk-go services/$SERVICE/api.go file
3939
SDKAPIInterfaceTypeName string

pkg/model/model.go

Lines changed: 16 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,13 @@ var (
3434
// Model contains the ACK model for the generator to process and apply
3535
// templates against.
3636
type Model struct {
37-
SDKAPI *SDKAPI
38-
servicePackage string
39-
serviceAlias string
40-
apiVersion string
41-
crds []*CRD
42-
typeDefs []*TypeDef
43-
typeImports map[string]string
44-
typeRenames map[string]string
37+
SDKAPI *SDKAPI
38+
serviceAlias string
39+
apiVersion string
40+
crds []*CRD
41+
typeDefs []*TypeDef
42+
typeImports map[string]string
43+
typeRenames map[string]string
4544
// Instructions to the code generator how to handle the API and its
4645
// resources
4746
cfg *ackgenconfig.Config
@@ -52,10 +51,10 @@ type Model struct {
5251
func (m *Model) MetaVars() templateset.MetaVars {
5352
return templateset.MetaVars{
5453
ServiceAlias: m.serviceAlias,
55-
ServiceIDClean: m.ServiceIDClean(),
56-
APIGroup: m.APIGroup(),
54+
ServiceID: m.SDKAPI.ServiceID(),
55+
ServiceIDClean: m.SDKAPI.ServiceIDClean(),
56+
APIGroup: m.SDKAPI.APIGroup(),
5757
APIVersion: m.apiVersion,
58-
AWSSDKModelServiceID: m.SDKAPI.AWSSDKModelServiceID(),
5958
SDKAPIInterfaceTypeName: m.SDKAPI.SDKAPIInterfaceTypeName(),
6059
CRDNames: m.crdNames(),
6160
}
@@ -692,29 +691,11 @@ func (m *Model) GetConfig() *ackgenconfig.Config {
692691
return m.cfg
693692
}
694693

695-
// APIGroup returns the normalized Kubernetes APIGroup for the AWS service API,
696-
// e.g. "sns.services.k8s.aws"
697-
func (m *Model) APIGroup() string {
698-
serviceID := m.servicePackage
699-
suffix := "services.k8s.aws"
700-
if m.SDKAPI.apiGroupSuffix != "" {
701-
suffix = m.SDKAPI.apiGroupSuffix
702-
}
703-
return fmt.Sprintf("%s.%s", serviceID, suffix)
704-
}
705-
706-
// ServiceIDClean returns a lowercased, whitespace-stripped ServiceID
707-
func (m *Model) ServiceIDClean() string {
708-
serviceID := strings.ToLower(m.servicePackage)
709-
return strings.Replace(serviceID, " ", "", -1)
710-
}
711-
712694
// New returns a new Model struct for a supplied API model.
713695
// Optionally, pass a file path to a generator config file that can be used to
714696
// instruct the code generator how to handle the API properly
715697
func New(
716698
SDKAPI *SDKAPI,
717-
servicePackage string,
718699
apiVersion string,
719700
configPath string,
720701
defaultConfig ackgenconfig.Config,
@@ -724,11 +705,12 @@ func New(
724705
return nil, err
725706
}
726707
m := &Model{
727-
SDKAPI: SDKAPI,
728-
servicePackage: servicePackage,
729-
serviceAlias: SDKAPI.AWSSDKModelServiceID(),
730-
apiVersion: apiVersion,
731-
cfg: &cfg,
708+
SDKAPI: SDKAPI,
709+
// TODO(jaypipes): Handle cases where service alias and service ID
710+
// don't match (Step Functions)
711+
serviceAlias: SDKAPI.ServiceID(),
712+
apiVersion: apiVersion,
713+
cfg: &cfg,
732714
}
733715
m.ApplyShapeIgnoreRules()
734716
return m, nil

pkg/model/multiversion/manager.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ func NewAPIVersionManager(
5151
sdkCacheDir string,
5252
metadataPath string,
5353
serviceAlias string,
54-
serviceModelName string,
5554
hubVersion string,
5655
apisInfo map[string]ackmetadata.APIInfo,
5756
defaultConfig ackgenconfig.Config,
@@ -95,14 +94,13 @@ func NewAPIVersionManager(
9594
return nil, err
9695
}
9796

98-
SDKAPI, err := SDKAPIHelper.API(serviceModelName)
97+
SDKAPI, err := SDKAPIHelper.API(serviceAlias)
9998
if err != nil {
10099
return nil, err
101100
}
102101

103102
i, err := ackmodel.New(
104103
SDKAPI,
105-
serviceAlias,
106104
version.APIVersion,
107105
apiInfo.GeneratorConfigPath,
108106
defaultConfig,

pkg/model/sdk_helper.go

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -246,8 +246,8 @@ func (a *SDKAPI) GetOutputShapeRef(
246246
}
247247

248248
// getMemberByPath returns a ShapeRef given a root Shape and a dot-notation
249-
// object search path. Given the explicit type check for list type members
250-
// both ".." and "." notations work currently.
249+
// object search path. Given the explicit type check for list type members
250+
// both ".." and "." notations work currently.
251251
// TODO: Add support for other types such as map.
252252
func getMemberByPath(
253253
shape *awssdkmodel.Shape,
@@ -353,24 +353,39 @@ func (a *SDKAPI) HasConflictingTypeName(typeName string, cfg *ackgenconfig.Confi
353353
util.InStrings(cleanTypeName, crdListResourceNames)
354354
}
355355

356-
// AWSSDKModelServiceID returns the exact `metadata.serviceId` attribute for the AWS
357-
// service APi's api-2.json file.
358-
// This MAY NOT MATCH the AWS SDK Go package used by the service. For example:
359-
// AWS SDK Go uses `opensearchservice` whereas the service ID is `opensearch`
360-
func (a *SDKAPI) AWSSDKModelServiceID() string {
356+
// ServiceID returns the exact `metadata.serviceId` attribute for the AWS
357+
// service APi's api-2.json file
358+
func (a *SDKAPI) ServiceID() string {
361359
if a == nil || a.API == nil {
362360
return ""
363361
}
364362
return awssdkmodel.ServiceID(a.API)
365363
}
366364

365+
// ServiceIDClean returns a lowercased, whitespace-stripped ServiceID
366+
func (a *SDKAPI) ServiceIDClean() string {
367+
serviceID := strings.ToLower(a.ServiceID())
368+
return strings.Replace(serviceID, " ", "", -1)
369+
}
370+
367371
func (a *SDKAPI) GetServiceFullName() string {
368372
if a == nil || a.API == nil {
369373
return ""
370374
}
371375
return a.API.Metadata.ServiceFullName
372376
}
373377

378+
// APIGroup returns the normalized Kubernetes APIGroup for the AWS service API,
379+
// e.g. "sns.services.k8s.aws"
380+
func (a *SDKAPI) APIGroup() string {
381+
serviceID := a.ServiceIDClean()
382+
suffix := "services.k8s.aws"
383+
if a.apiGroupSuffix != "" {
384+
suffix = a.apiGroupSuffix
385+
}
386+
return fmt.Sprintf("%s.%s", serviceID, suffix)
387+
}
388+
374389
// SDKAPIInterfaceTypeName returns the name of the aws-sdk-go primary API
375390
// interface type name.
376391
func (a *SDKAPI) SDKAPIInterfaceTypeName() string {

0 commit comments

Comments
 (0)