Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Resolvers and References not working in EC2 VPCPeering connection #1033

Closed
linuxbsdfreak opened this issue Dec 23, 2021 · 1 comment · Fixed by #1035
Closed

Resolvers and References not working in EC2 VPCPeering connection #1033

linuxbsdfreak opened this issue Dec 23, 2021 · 1 comment · Fixed by #1035
Labels
bug Something isn't working

Comments

@linuxbsdfreak
Copy link

What happened?

The spec.forProvider.vpcIDRef.name and vpcIDSelector under https://doc.crds.dev/github.com/crossplane/provider-aws/ec2.aws.crossplane.io/VPCPeeringConnection/[email protected] are not working as expected

One always gets the following error when creating a claim

default       0s          Warning   CannotCreateExternalResource      vpcpeeringconnection/cp-vpc-peering-test-routes                   cannot create VPCPeeringConnection in AWS: MissingParameter: The request must contain the parameter vpcId
              status code: 400, request id:

k get vpcpeeringconnections.ec2.aws.crossplane.io cp-vpc-peering-test-routes -o yaml

kind: VPCPeeringConnection
metadata:
  annotations:
    crossplane.io/composition-resource-name: vpc-peering
    crossplane.io/external-create-failed: "2021-12-23T11:24:14Z"
    crossplane.io/external-create-pending: "2021-12-23T11:24:14Z"
    crossplane.io/external-name: cp-vpc-peering-test-routes
  creationTimestamp: "2021-12-23T10:58:42Z"
  finalizers:
  - finalizer.managedresource.crossplane.io
  generateName: cp-aws-test-routes-gh8lb-
  generation: 1
  labels:
    crossplane.io/claim-name: cp-aws-test-routes
    crossplane.io/claim-namespace: default
    crossplane.io/composite: cp-aws-test-routes-gh8lb
    role: cp-vpc-peering-test-routes
    vpcs.aws.platform.dmi.sap.com/vpc-id: test-routes
  name: cp-vpc-peering-test-routes
  ownerReferences:
  - apiVersion: aws.platform.dmi.sap.com/v1alpha1
    controller: true
    kind: CompositeVPC
    name: cp-aws-i503158-routes-gh8lb
    uid: 6ff0edde-caab-4bdb-b652-c1428ab1b750
  resourceVersion: "2548163"
  uid: adbe65eb-3c07-45d1-b017-d0195ca214a0
spec:
  deletionPolicy: Delete
  forProvider:
    acceptRequest: true
    peerVPCID: vpc-0f07700fdc5a2e892
    region: eu-central-1
  providerConfigRef:
    name: aws-provider-config
  providerRef:
    name: aws-provider
status:
  atProvider: {}
  conditions:
  - lastTransitionTime: "2021-12-23T10:58:42Z"
    reason: Creating
    status: "False"
    type: Ready
  - lastTransitionTime: "2021-12-23T10:58:42Z"
    message: "create failed: cannot create VPCPeeringConnection in AWS: MissingParameter:
      The request must contain the parameter vpcId\n\tstatus code: 400, request id: "
    reason: ReconcileError
    status: "False"
    type: Synced

How can we reproduce it?

I have the following in a composition

    - name: vpc
      base:
        apiVersion: ec2.aws.crossplane.io/v1beta1
        kind: VPC
        metadata:
         labels:
           role: 'cp-vpc'
        spec:
          deletionPolicy: Delete
          forProvider:
           enableDnsHostNames: true
           enableDnsSupport: true
           instanceTenancy: default
           tags:
            - key: Environment
              value: ""
            - key: Owner
              value: ""
            - key: Name
              value: ""
          providerRef:
            name: aws-provider
          providerConfigRef:
            name: aws-provider-config
      patches:
        - fromFieldPath: spec.parameters.vpc.region
          toFieldPath: spec.forProvider.region
        - fromFieldPath: spec.parameters.vpc.cidrBlock
          toFieldPath: spec.forProvider.cidrBlock
        - fromFieldPath: spec.parameters.vpc.environment
          toFieldPath: spec.forProvider.tags[0].value
        - fromFieldPath: spec.parameters.vpc.owner
          toFieldPath: spec.forProvider.tags[1].value
        - fromFieldPath: spec.id
          toFieldPath: spec.forProvider.tags[2].value
          transforms:
            - type: string
              string:
                fmt: "cp-vpc-%s"
        - fromFieldPath: spec.id
          toFieldPath: metadata.labels[vpcs.aws.platform.dmi.sap.com/vpc-id]
        - fromFieldPath: spec.id
          toFieldPath: metadata.name
          transforms:
            - type: string
              string:
                fmt: "cp-vpc-%s"
        - fromFieldPath: spec.id
          toFieldPath: metadata.labels.role
          transforms:
            - type: string
              string:
                fmt: "cp-vpc-%s"
# VPC Peering Start
    - name: vpc-peering
      base:
        apiVersion: ec2.aws.crossplane.io/v1alpha1
        kind: VPCPeeringConnection
        metadata:
          labels:
            role: ''
        spec:
          forProvider:
            acceptRequest: true
            tags:
             - key: Environment
               value: ""
             - key: Owner
               value: ""
             - key: Name
               value: ""
          vpcIDSelector:
            matchControllerRef: true
            matchLabels:
              role: 'cp-vpc'
          providerRef:
            name: aws-provider
          providerConfigRef:
            name: aws-provider-config
      patches:
        - fromFieldPath: spec.parameters.vpc.region
          toFieldPath: spec.forProvider.region
        - fromFieldPath: spec.parameters.vpc.environment
          toFieldPath: spec.forProvider.tags[0].value
        - fromFieldPath: spec.parameters.vpc.owner
          toFieldPath: spec.forProvider.tags[1].value
        - fromFieldPath: spec.id
          toFieldPath: spec.forProvider.tags[2].value
          transforms:
            - type: string
              string:
                fmt: "cp-vpc-peering-%s"
        - fromFieldPath: spec.id
          toFieldPath: metadata.name
          transforms:
            - type: string
              string:
                fmt: "cp-vpc-peering-%s"
        - fromFieldPath: spec.id
          toFieldPath: metadata.labels[vpcs.aws.platform.dmi.sap.com/vpc-id]
        - fromFieldPath: spec.id
          toFieldPath: metadata.labels.role
          transforms:
            - type: string
              string:
                fmt: "cp-vpc-peering-%s"
        - fromFieldPath: spec.parameters.vpc.gardenerShootClusterVPCID
          toFieldPath: spec.forProvider.peerVPCID
#        - fromFieldPath: spec.id
#          toFieldPath: spec.forProvider.vpcIDRef.name
#          transforms:
#            - type: string
#              string:
#                fmt: "cp-vpc-%s"
# VPC Peering End

What environment did it happen in?

Crossplane version: master

  • Cloud provider : aws
  • Kubernetes version : v1.21.1
  • Kubernetes distribution: Gardener v1.22.3
@linuxbsdfreak linuxbsdfreak added the bug Something isn't working label Dec 23, 2021
@Dkaykay
Copy link
Contributor

Dkaykay commented Dec 23, 2021

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
2 participants