cdk8s-team / cdk8s

Define Kubernetes native apps and abstractions using object-oriented programming

Home Page:https://cdk8s.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Skip not importable CRDs during import of multiple resources

d3nnxs opened this issue · comments

commented

Description of the feature or enhancement:

Skip import of CRDs which cannot be imported. Example:

cdk8s import -o aws github:crossplane-contrib/provider-aws fails because of an issue in apigateway.aws.crossplane.io. Unfortunately the whole import stop at this point. It would be gerat if it was possible to complete the import an skip the failed resources.

Importing resources, this may take a few moments...
acm.aws.crossplane.io
  acm.aws.crossplane.io/certificate
acmpca.aws.crossplane.io
  acmpca.aws.crossplane.io/certificateauthority
  acmpca.aws.crossplane.io/certificateauthoritypermission
apigateway.aws.crossplane.io
  apigateway.aws.crossplane.io/apikey
  apigateway.aws.crossplane.io/authorizer
  apigateway.aws.crossplane.io/basepathmapping
  apigateway.aws.crossplane.io/deployment
  apigateway.aws.crossplane.io/documentationpart
  apigateway.aws.crossplane.io/documentationversion
  apigateway.aws.crossplane.io/domainname
  apigateway.aws.crossplane.io/gatewayresponse
  apigateway.aws.crossplane.io/integration
  apigateway.aws.crossplane.io/integrationresponse
  apigateway.aws.crossplane.io/method
  apigateway.aws.crossplane.io/methodresponse
  apigateway.aws.crossplane.io/model
  apigateway.aws.crossplane.io/requestvalidator
  apigateway.aws.crossplane.io/resource
  apigateway.aws.crossplane.io/restapi
  apigateway.aws.crossplane.io/stage
  apigateway.aws.crossplane.io/usageplan
  apigateway.aws.crossplane.io/usageplankey
  apigateway.aws.crossplane.io/vpclink
NOTE: Temp directory retained due to an error: /var/folders/1v/pkfz_x9j7250d5r8nqzb9kth0000gn/T/temp-Yralli
Error: jsii compilation failed with non-zero exit code: 1
  | [2023-06-16T16:25:44.093] [ERROR] jsii/compiler - Compilation errors prevented the JSII assembly from being created
  | warning JSII6: A "peerDependency" on "constructs" at "10.2.44" means you should take a "devDependency" on "constructs" at "10.2.44" (found "undefined")
  | warning JSII6: A "peerDependency" on "cdk8s" at "2.7.77" means you should take a "devDependency" on "cdk8s" at "2.7.77" (found "undefined")
  | warning JSII3: There is no "README.md" file. It is required in order to generate valid PyPI (Python) packages.
  | apigateway.aws.crossplane.io.ts:9427:12 - error TS2300: Duplicate identifier 'authorizerId'.
  | 9427   readonly authorizerId?: string;
  |                 ~~~~~~~~~~~~
  | apigateway.aws.crossplane.io.ts:9434:12 - error TS2300: Duplicate identifier 'authorizerId'.
  | 9434   readonly authorizerId?: string;
  |                 ~~~~~~~~~~~~
  | apigateway.aws.crossplane.io.ts:9490:12 - error TS2300: Duplicate identifier 'requestValidatorId'.
  | 9490   readonly requestValidatorId?: string;
  |                 ~~~~~~~~~~~~~~~~~~
  | apigateway.aws.crossplane.io.ts:9497:12 - error TS2300: Duplicate identifier 'requestValidatorId'.
  | 9497   readonly requestValidatorId?: string;
  |                 ~~~~~~~~~~~~~~~~~~
  +----------------------------------------------------------------------------------
  | Command: /opt/homebrew/Cellar/cdk8s/2.2.53/libexec/lib/node_modules/cdk8s-cli/node_modules/jsii-srcmak/node_modules/jsii/bin/jsii --silence-warnings reserved-word
  | Workdir: /var/folders/1v/pkfz_x9j7250d5r8nqzb9kth0000gn/T/temp-Yralli
  +----------------------------------------------------------------------------------
    at newError (/opt/homebrew/Cellar/cdk8s/2.2.53/libexec/lib/node_modules/cdk8s-cli/node_modules/jsii-srcmak/lib/util.js:62:20)
    at ChildProcess.<anonymous> (/opt/homebrew/Cellar/cdk8s/2.2.53/libexec/lib/node_modules/cdk8s-cli/node_modules/jsii-srcmak/lib/util.js:79:29)
    at Object.onceWrapper (node:events:642:26)
    at ChildProcess.emit (node:events:527:28)
    at Process.ChildProcess._handle.onexit (node:internal/child_process:291:12)

Use Case:

Skipping not importable CRDs and complete the import would allow to use the other working CRDs in CDK8s.

Proposed Solution:

Other:

  • 👋 I may be able to implement this feature request
  • ⚠️ This feature might incur a breaking change

This is a 🚀 Feature Request

Hey @d3nnxs , I see this is working with the latest version of cdk8s. Could you confirm on your end?

This is the output I see with cdk8s 2.41.0:

❯ cdk8s import -o aws github:crossplane-contrib/provider-aws
Importing resources, this may take a few moments...
acm.aws.crossplane.io
  acm.aws.crossplane.io/certificate
acmpca.aws.crossplane.io
  acmpca.aws.crossplane.io/certificateauthority
  acmpca.aws.crossplane.io/certificateauthoritypermission
apigateway.aws.crossplane.io
  apigateway.aws.crossplane.io/apikey
  apigateway.aws.crossplane.io/authorizer
  apigateway.aws.crossplane.io/basepathmapping
  apigateway.aws.crossplane.io/deployment
  apigateway.aws.crossplane.io/documentationpart
  apigateway.aws.crossplane.io/documentationversion
  apigateway.aws.crossplane.io/domainname
  apigateway.aws.crossplane.io/gatewayresponse
  apigateway.aws.crossplane.io/integration
  apigateway.aws.crossplane.io/integrationresponse
  apigateway.aws.crossplane.io/method
  apigateway.aws.crossplane.io/methodresponse
  apigateway.aws.crossplane.io/model
  apigateway.aws.crossplane.io/requestvalidator
  apigateway.aws.crossplane.io/resource
  apigateway.aws.crossplane.io/restapi
  apigateway.aws.crossplane.io/stage
  apigateway.aws.crossplane.io/usageplan
  apigateway.aws.crossplane.io/usageplankey
  apigateway.aws.crossplane.io/vpclink
apigatewayv2.aws.crossplane.io
  apigatewayv2.aws.crossplane.io/api
  apigatewayv2.aws.crossplane.io/apimapping
  apigatewayv2.aws.crossplane.io/authorizer
  apigatewayv2.aws.crossplane.io/deployment
  apigatewayv2.aws.crossplane.io/domainname
  apigatewayv2.aws.crossplane.io/integration
  apigatewayv2.aws.crossplane.io/integrationresponse
  apigatewayv2.aws.crossplane.io/model
  apigatewayv2.aws.crossplane.io/route
  apigatewayv2.aws.crossplane.io/routeresponse
  apigatewayv2.aws.crossplane.io/stage
  apigatewayv2.aws.crossplane.io/vpclink
athena.aws.crossplane.io
  athena.aws.crossplane.io/workgroup
autoscaling.aws.crossplane.io
  autoscaling.aws.crossplane.io/autoscalinggroup
aws.crossplane.io
  aws.crossplane.io/providerconfig
  aws.crossplane.io/providerconfigusage
  aws.crossplane.io/storeconfig
batch.aws.crossplane.io
  batch.aws.crossplane.io/computeenvironment
  batch.aws.crossplane.io/job
  batch.aws.crossplane.io/jobdefinition
  batch.aws.crossplane.io/jobqueue
cache.aws.crossplane.io
  cache.aws.crossplane.io/cachecluster
  cache.aws.crossplane.io/cachesubnetgroup
  cache.aws.crossplane.io/replicationgroup
cloudfront.aws.crossplane.io
  cloudfront.aws.crossplane.io/cachepolicy
  cloudfront.aws.crossplane.io/cloudfrontoriginaccessidentity
  cloudfront.aws.crossplane.io/distribution
  cloudfront.aws.crossplane.io/responseheaderspolicy
cloudsearch.aws.crossplane.io
  cloudsearch.aws.crossplane.io/domain
cloudwatchlogs.aws.crossplane.io
  cloudwatchlogs.aws.crossplane.io/loggroup
cognitoidentity.aws.crossplane.io
  cognitoidentity.aws.crossplane.io/identitypool
cognitoidentityprovider.aws.crossplane.io
  cognitoidentityprovider.aws.crossplane.io/group
  cognitoidentityprovider.aws.crossplane.io/groupusermembership
  cognitoidentityprovider.aws.crossplane.io/identityprovider
  cognitoidentityprovider.aws.crossplane.io/resourceserver
  cognitoidentityprovider.aws.crossplane.io/userpool
  cognitoidentityprovider.aws.crossplane.io/userpoolclient
  cognitoidentityprovider.aws.crossplane.io/userpooldomain
database.aws.crossplane.io
  database.aws.crossplane.io/dbsubnetgroup
  database.aws.crossplane.io/rdsinstance
dax.aws.crossplane.io
  dax.aws.crossplane.io/cluster
  dax.aws.crossplane.io/parametergroup
  dax.aws.crossplane.io/subnetgroup
docdb.aws.crossplane.io
  docdb.aws.crossplane.io/dbcluster
  docdb.aws.crossplane.io/dbclusterparametergroup
  docdb.aws.crossplane.io/dbinstance
  docdb.aws.crossplane.io/dbsubnetgroup
dynamodb.aws.crossplane.io
  dynamodb.aws.crossplane.io/backup
  dynamodb.aws.crossplane.io/globaltable
  dynamodb.aws.crossplane.io/table
ec2.aws.crossplane.io
  ec2.aws.crossplane.io/address
  ec2.aws.crossplane.io/flowlog
  ec2.aws.crossplane.io/instance
  ec2.aws.crossplane.io/internetgateway
  ec2.aws.crossplane.io/launchtemplate
  ec2.aws.crossplane.io/launchtemplateversion
  ec2.aws.crossplane.io/natgateway
  ec2.aws.crossplane.io/route
  ec2.aws.crossplane.io/routetable
  ec2.aws.crossplane.io/securitygroup
  ec2.aws.crossplane.io/securitygrouprule
  ec2.aws.crossplane.io/subnet
  ec2.aws.crossplane.io/transitgateway
  ec2.aws.crossplane.io/transitgatewayroute
  ec2.aws.crossplane.io/transitgatewayroutetable
  ec2.aws.crossplane.io/transitgatewayvpcattachment
  ec2.aws.crossplane.io/volume
  ec2.aws.crossplane.io/vpc
  ec2.aws.crossplane.io/vpccidrblock
  ec2.aws.crossplane.io/vpcendpoint
  ec2.aws.crossplane.io/vpcendpointserviceconfiguration
  ec2.aws.crossplane.io/vpcpeeringconnection
ecr.aws.crossplane.io
  ecr.aws.crossplane.io/lifecyclepolicy
  ecr.aws.crossplane.io/repository
  ecr.aws.crossplane.io/repositorypolicy
ecs.aws.crossplane.io
  ecs.aws.crossplane.io/cluster
  ecs.aws.crossplane.io/service
  ecs.aws.crossplane.io/taskdefinition
efs.aws.crossplane.io
  efs.aws.crossplane.io/accesspoint
  efs.aws.crossplane.io/filesystem
  efs.aws.crossplane.io/mounttarget
eks.aws.crossplane.io
  eks.aws.crossplane.io/addon
  eks.aws.crossplane.io/cluster
  eks.aws.crossplane.io/fargateprofile
  eks.aws.crossplane.io/identityproviderconfig
  eks.aws.crossplane.io/nodegroup
elasticache.aws.crossplane.io
  elasticache.aws.crossplane.io/cacheparametergroup
elasticloadbalancing.aws.crossplane.io
  elasticloadbalancing.aws.crossplane.io/elb
  elasticloadbalancing.aws.crossplane.io/elbattachment
elbv2.aws.crossplane.io
  elbv2.aws.crossplane.io/listener
  elbv2.aws.crossplane.io/loadbalancer
  elbv2.aws.crossplane.io/target
  elbv2.aws.crossplane.io/targetgroup
emrcontainers.aws.crossplane.io
  emrcontainers.aws.crossplane.io/jobrun
  emrcontainers.aws.crossplane.io/virtualcluster
glue.aws.crossplane.io
  glue.aws.crossplane.io/classifier
  glue.aws.crossplane.io/connection
  glue.aws.crossplane.io/crawler
  glue.aws.crossplane.io/database
  glue.aws.crossplane.io/job
  glue.aws.crossplane.io/securityconfiguration
iam.aws.crossplane.io
  iam.aws.crossplane.io/accesskey
  iam.aws.crossplane.io/group
  iam.aws.crossplane.io/grouppolicyattachment
  iam.aws.crossplane.io/groupusermembership
  iam.aws.crossplane.io/instanceprofile
  iam.aws.crossplane.io/openidconnectprovider
  iam.aws.crossplane.io/policy
  iam.aws.crossplane.io/role
  iam.aws.crossplane.io/rolepolicyattachment
  iam.aws.crossplane.io/servicelinkedrole
  iam.aws.crossplane.io/user
  iam.aws.crossplane.io/userpolicyattachment
iot.aws.crossplane.io
  iot.aws.crossplane.io/policy
  iot.aws.crossplane.io/thing
kafka.aws.crossplane.io
  kafka.aws.crossplane.io/cluster
  kafka.aws.crossplane.io/configuration
kinesis.aws.crossplane.io
  kinesis.aws.crossplane.io/stream
kms.aws.crossplane.io
  kms.aws.crossplane.io/alias
  kms.aws.crossplane.io/key
lambda.aws.crossplane.io
  lambda.aws.crossplane.io/function
  lambda.aws.crossplane.io/functionurlconfig
  lambda.aws.crossplane.io/permission
mq.aws.crossplane.io
  mq.aws.crossplane.io/broker
  mq.aws.crossplane.io/user
mwaa.aws.crossplane.io
  mwaa.aws.crossplane.io/environment
neptune.aws.crossplane.io
  neptune.aws.crossplane.io/dbcluster
opensearchservice.aws.crossplane.io
  opensearchservice.aws.crossplane.io/domain
prometheusservice.aws.crossplane.io
  prometheusservice.aws.crossplane.io/alertmanagerdefinition
  prometheusservice.aws.crossplane.io/rulegroupsnamespace
  prometheusservice.aws.crossplane.io/workspace
ram.aws.crossplane.io
  ram.aws.crossplane.io/resourceshare
rds.aws.crossplane.io
  rds.aws.crossplane.io/dbcluster
  rds.aws.crossplane.io/dbclusterparametergroup
  rds.aws.crossplane.io/dbinstance
  rds.aws.crossplane.io/dbinstanceroleassociation
  rds.aws.crossplane.io/dbparametergroup
  rds.aws.crossplane.io/globalcluster
  rds.aws.crossplane.io/optiongroup
redshift.aws.crossplane.io
  redshift.aws.crossplane.io/cluster
route53.aws.crossplane.io
  route53.aws.crossplane.io/hostedzone
  route53.aws.crossplane.io/resourcerecordset
route53resolver.aws.crossplane.io
  route53resolver.aws.crossplane.io/resolverendpoint
  route53resolver.aws.crossplane.io/resolverrule
  route53resolver.aws.crossplane.io/resolverruleassociation
s3.aws.crossplane.io
  s3.aws.crossplane.io/bucket
  s3.aws.crossplane.io/bucketpolicy
secretsmanager.aws.crossplane.io
  secretsmanager.aws.crossplane.io/secret
servicediscovery.aws.crossplane.io
  servicediscovery.aws.crossplane.io/httpnamespace
  servicediscovery.aws.crossplane.io/privatednsnamespace
  servicediscovery.aws.crossplane.io/publicdnsnamespace
  servicediscovery.aws.crossplane.io/service
sesv2.aws.crossplane.io
  sesv2.aws.crossplane.io/configurationset
  sesv2.aws.crossplane.io/emailidentity
  sesv2.aws.crossplane.io/emailtemplate
sfn.aws.crossplane.io
  sfn.aws.crossplane.io/activity
  sfn.aws.crossplane.io/statemachine
sns.aws.crossplane.io
  sns.aws.crossplane.io/subscription
  sns.aws.crossplane.io/topic
sqs.aws.crossplane.io
  sqs.aws.crossplane.io/queue
transfer.aws.crossplane.io
  transfer.aws.crossplane.io/server
  transfer.aws.crossplane.io/user

This issue has not received a response in a while and will be closed soon. If you want to keep it open, please leave a comment below @mentioning a maintainer.

Still seeing the issue:

cdk8s import github:crossplane-contrib/provider-aws@0.45.2

Importing resources, this may take a few moments...
aws.crossplane.io
  aws.crossplane.io/providerconfig
  aws.crossplane.io/providerconfigusage
  aws.crossplane.io/storeconfig
acm.aws.crossplane.io
  acm.aws.crossplane.io/certificate
acmpca.aws.crossplane.io
  acmpca.aws.crossplane.io/certificateauthority
  acmpca.aws.crossplane.io/certificateauthoritypermission
apigateway.aws.crossplane.io
  apigateway.aws.crossplane.io/apikey
  apigateway.aws.crossplane.io/authorizer
  apigateway.aws.crossplane.io/basepathmapping
  apigateway.aws.crossplane.io/deployment
  apigateway.aws.crossplane.io/documentationpart
  apigateway.aws.crossplane.io/documentationversion
  apigateway.aws.crossplane.io/domainname
  apigateway.aws.crossplane.io/gatewayresponse
  apigateway.aws.crossplane.io/integration
  apigateway.aws.crossplane.io/integrationresponse
  apigateway.aws.crossplane.io/method
  apigateway.aws.crossplane.io/methodresponse
  apigateway.aws.crossplane.io/model
  apigateway.aws.crossplane.io/requestvalidator
  apigateway.aws.crossplane.io/resource
  apigateway.aws.crossplane.io/restapi
  apigateway.aws.crossplane.io/stage
  apigateway.aws.crossplane.io/usageplan
  apigateway.aws.crossplane.io/usageplankey
  apigateway.aws.crossplane.io/vpclink
NOTE: Temp directory retained due to an error: /tmp/temp-2DD13g
Error: jsii compilation failed with non-zero exit code: 1
  | [2023-12-04T13:47:34.052] [ERROR] jsii/compiler - Compilation errors prevented the JSII assembly from being created
  | warning JSII6: A "peerDependency" on "constructs" at "10.3.0" means you should take a "devDependency" on "constructs" at "10.3.0" (found "undefined")
  | warning JSII6: A "peerDependency" on "cdk8s" at "2.68.15" means you should take a "devDependency" on "cdk8s" at "2.68.15" (found "undefined")
  | warning JSII3: There is no "README.md" file. It is required in order to generate valid PyPI (Python) packages.
  | io.crossplane.aws.apigateway.ts:8647:12 - error TS2300: Duplicate identifier 'authorizerId'.
  | 8647   readonly authorizerId?: string;
  |                 ~~~~~~~~~~~~
  | io.crossplane.aws.apigateway.ts:8654:12 - error TS2300: Duplicate identifier 'authorizerId'.
  | 8654   readonly authorizerId?: string;
  |                 ~~~~~~~~~~~~
  | io.crossplane.aws.apigateway.ts:8710:12 - error TS2300: Duplicate identifier 'requestValidatorId'.
  | 8710   readonly requestValidatorId?: string;
  |                 ~~~~~~~~~~~~~~~~~~
  | io.crossplane.aws.apigateway.ts:8717:12 - error TS2300: Duplicate identifier 'requestValidatorId'.
  | 8717   readonly requestValidatorId?: string;
  |                 ~~~~~~~~~~~~~~~~~~