├── .github ├── PULL_REQUEST_TEMPLATE.md ├── dependabot.yml ├── oldworkflows │ ├── backport.yml │ ├── commands.yml │ ├── e2e.yaml │ └── tag.yaml └── workflows │ ├── ci.yml │ ├── publish-provider-package.yaml │ └── tag.yml ├── .gitignore ├── .gitmodules ├── .golangci.yml ├── CHANGELOG.md ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── DCO ├── LICENSE ├── Makefile ├── OWNERS.md ├── README.md ├── apis ├── blockstorage │ └── v1alpha1 │ │ ├── zz_generated.conversion_hubs.go │ │ ├── zz_generated.deepcopy.go │ │ ├── zz_generated.managed.go │ │ ├── zz_generated.managedlist.go │ │ ├── zz_generated.resolvers.go │ │ ├── zz_groupversion_info.go │ │ ├── zz_qosassociationv3_terraformed.go │ │ ├── zz_qosassociationv3_types.go │ │ ├── zz_qosv3_terraformed.go │ │ ├── zz_qosv3_types.go │ │ ├── zz_quotasetv3_terraformed.go │ │ ├── zz_quotasetv3_types.go │ │ ├── zz_volumeattachv3_terraformed.go │ │ ├── zz_volumeattachv3_types.go │ │ ├── zz_volumetypeaccessv3_terraformed.go │ │ ├── zz_volumetypeaccessv3_types.go │ │ ├── zz_volumetypev3_terraformed.go │ │ ├── zz_volumetypev3_types.go │ │ ├── zz_volumev3_terraformed.go │ │ └── zz_volumev3_types.go ├── compute │ └── v1alpha1 │ │ ├── zz_aggregatev2_terraformed.go │ │ ├── zz_aggregatev2_types.go │ │ ├── zz_flavoraccessv2_terraformed.go │ │ ├── zz_flavoraccessv2_types.go │ │ ├── zz_flavorv2_terraformed.go │ │ ├── zz_flavorv2_types.go │ │ ├── zz_generated.conversion_hubs.go │ │ ├── zz_generated.deepcopy.go │ │ ├── zz_generated.managed.go │ │ ├── zz_generated.managedlist.go │ │ ├── zz_generated.resolvers.go │ │ ├── zz_groupversion_info.go │ │ ├── zz_instancev2_terraformed.go │ │ ├── zz_instancev2_types.go │ │ ├── zz_interfaceattachv2_terraformed.go │ │ ├── zz_interfaceattachv2_types.go │ │ ├── zz_keypairv2_terraformed.go │ │ ├── zz_keypairv2_types.go │ │ ├── zz_quotasetv2_terraformed.go │ │ ├── zz_quotasetv2_types.go │ │ ├── zz_servergroupv2_terraformed.go │ │ ├── zz_servergroupv2_types.go │ │ ├── zz_volumeattachv2_terraformed.go │ │ └── zz_volumeattachv2_types.go ├── containerinfra │ └── v1alpha1 │ │ ├── zz_clustertemplatev1_terraformed.go │ │ ├── zz_clustertemplatev1_types.go │ │ ├── zz_clusterv1_terraformed.go │ │ ├── zz_clusterv1_types.go │ │ ├── zz_generated.conversion_hubs.go │ │ ├── zz_generated.deepcopy.go │ │ ├── zz_generated.managed.go │ │ ├── zz_generated.managedlist.go │ │ ├── zz_generated.resolvers.go │ │ ├── zz_groupversion_info.go │ │ ├── zz_nodegroupv1_terraformed.go │ │ └── zz_nodegroupv1_types.go ├── db │ └── v1alpha1 │ │ ├── zz_configurationv1_terraformed.go │ │ ├── zz_configurationv1_types.go │ │ ├── zz_databasev1_terraformed.go │ │ ├── zz_databasev1_types.go │ │ ├── zz_generated.conversion_hubs.go │ │ ├── zz_generated.deepcopy.go │ │ ├── zz_generated.managed.go │ │ ├── zz_generated.managedlist.go │ │ ├── zz_generated.resolvers.go │ │ ├── zz_groupversion_info.go │ │ ├── zz_instancev1_terraformed.go │ │ ├── zz_instancev1_types.go │ │ ├── zz_userv1_terraformed.go │ │ └── zz_userv1_types.go ├── dns │ └── v1alpha1 │ │ ├── zz_generated.conversion_hubs.go │ │ ├── zz_generated.deepcopy.go │ │ ├── zz_generated.managed.go │ │ ├── zz_generated.managedlist.go │ │ ├── zz_generated.resolvers.go │ │ ├── zz_groupversion_info.go │ │ ├── zz_recordsetv2_terraformed.go │ │ ├── zz_recordsetv2_types.go │ │ ├── zz_transferacceptv2_terraformed.go │ │ ├── zz_transferacceptv2_types.go │ │ ├── zz_transferrequestv2_terraformed.go │ │ ├── zz_transferrequestv2_types.go │ │ ├── zz_zonev2_terraformed.go │ │ └── zz_zonev2_types.go ├── fw │ └── v1alpha1 │ │ ├── zz_generated.conversion_hubs.go │ │ ├── zz_generated.deepcopy.go │ │ ├── zz_generated.managed.go │ │ ├── zz_generated.managedlist.go │ │ ├── zz_generated.resolvers.go │ │ ├── zz_groupv2_terraformed.go │ │ ├── zz_groupv2_types.go │ │ ├── zz_groupversion_info.go │ │ ├── zz_policyv2_terraformed.go │ │ ├── zz_policyv2_types.go │ │ ├── zz_rulev2_terraformed.go │ │ └── zz_rulev2_types.go ├── generate.go ├── identity │ └── v1alpha1 │ │ ├── zz_applicationcredentialv3_terraformed.go │ │ ├── zz_applicationcredentialv3_types.go │ │ ├── zz_ec2credentialv3_terraformed.go │ │ ├── zz_ec2credentialv3_types.go │ │ ├── zz_endpointv3_terraformed.go │ │ ├── zz_endpointv3_types.go │ │ ├── zz_generated.conversion_hubs.go │ │ ├── zz_generated.deepcopy.go │ │ ├── zz_generated.managed.go │ │ ├── zz_generated.managedlist.go │ │ ├── zz_generated.resolvers.go │ │ ├── zz_groupv3_terraformed.go │ │ ├── zz_groupv3_types.go │ │ ├── zz_groupversion_info.go │ │ ├── zz_inheritroleassignmentv3_terraformed.go │ │ ├── zz_inheritroleassignmentv3_types.go │ │ ├── zz_projectv3_terraformed.go │ │ ├── zz_projectv3_types.go │ │ ├── zz_roleassignmentv3_terraformed.go │ │ ├── zz_roleassignmentv3_types.go │ │ ├── zz_rolev3_terraformed.go │ │ ├── zz_rolev3_types.go │ │ ├── zz_servicev3_terraformed.go │ │ ├── zz_servicev3_types.go │ │ ├── zz_usermembershipv3_terraformed.go │ │ ├── zz_usermembershipv3_types.go │ │ ├── zz_userv3_terraformed.go │ │ └── zz_userv3_types.go ├── images │ └── v1alpha1 │ │ ├── zz_generated.conversion_hubs.go │ │ ├── zz_generated.deepcopy.go │ │ ├── zz_generated.managed.go │ │ ├── zz_generated.managedlist.go │ │ ├── zz_generated.resolvers.go │ │ ├── zz_groupversion_info.go │ │ ├── zz_imageaccessacceptv2_terraformed.go │ │ ├── zz_imageaccessacceptv2_types.go │ │ ├── zz_imageaccessv2_terraformed.go │ │ ├── zz_imageaccessv2_types.go │ │ ├── zz_imagev2_terraformed.go │ │ └── zz_imagev2_types.go ├── keymanager │ └── v1alpha1 │ │ ├── zz_containerv1_terraformed.go │ │ ├── zz_containerv1_types.go │ │ ├── zz_generated.conversion_hubs.go │ │ ├── zz_generated.deepcopy.go │ │ ├── zz_generated.managed.go │ │ ├── zz_generated.managedlist.go │ │ ├── zz_generated.resolvers.go │ │ ├── zz_groupversion_info.go │ │ ├── zz_orderv1_terraformed.go │ │ ├── zz_orderv1_types.go │ │ ├── zz_secretv1_terraformed.go │ │ └── zz_secretv1_types.go ├── lb │ └── v1alpha1 │ │ ├── zz_generated.conversion_hubs.go │ │ ├── zz_generated.deepcopy.go │ │ ├── zz_generated.managed.go │ │ ├── zz_generated.managedlist.go │ │ ├── zz_generated.resolvers.go │ │ ├── zz_groupversion_info.go │ │ ├── zz_l7policyv2_terraformed.go │ │ ├── zz_l7policyv2_types.go │ │ ├── zz_l7rulev2_terraformed.go │ │ ├── zz_l7rulev2_types.go │ │ ├── zz_listenerv2_terraformed.go │ │ ├── zz_listenerv2_types.go │ │ ├── zz_loadbalancerv2_terraformed.go │ │ ├── zz_loadbalancerv2_types.go │ │ ├── zz_membersv2_terraformed.go │ │ ├── zz_membersv2_types.go │ │ ├── zz_memberv2_terraformed.go │ │ ├── zz_memberv2_types.go │ │ ├── zz_monitorv2_terraformed.go │ │ ├── zz_monitorv2_types.go │ │ ├── zz_poolv2_terraformed.go │ │ ├── zz_poolv2_types.go │ │ ├── zz_quotav2_terraformed.go │ │ └── zz_quotav2_types.go ├── networking │ └── v1alpha1 │ │ ├── zz_addressscopev2_terraformed.go │ │ ├── zz_addressscopev2_types.go │ │ ├── zz_floatingipassociatev2_terraformed.go │ │ ├── zz_floatingipassociatev2_types.go │ │ ├── zz_floatingipv2_terraformed.go │ │ ├── zz_floatingipv2_types.go │ │ ├── zz_generated.conversion_hubs.go │ │ ├── zz_generated.deepcopy.go │ │ ├── zz_generated.managed.go │ │ ├── zz_generated.managedlist.go │ │ ├── zz_generated.resolvers.go │ │ ├── zz_groupversion_info.go │ │ ├── zz_networkv2_terraformed.go │ │ ├── zz_networkv2_types.go │ │ ├── zz_portforwardingv2_terraformed.go │ │ ├── zz_portforwardingv2_types.go │ │ ├── zz_portsecgroupassociatev2_terraformed.go │ │ ├── zz_portsecgroupassociatev2_types.go │ │ ├── zz_portv2_terraformed.go │ │ ├── zz_portv2_types.go │ │ ├── zz_qosbandwidthlimitrulev2_terraformed.go │ │ ├── zz_qosbandwidthlimitrulev2_types.go │ │ ├── zz_qosdscpmarkingrulev2_terraformed.go │ │ ├── zz_qosdscpmarkingrulev2_types.go │ │ ├── zz_qosminimumbandwidthrulev2_terraformed.go │ │ ├── zz_qosminimumbandwidthrulev2_types.go │ │ ├── zz_qospolicyv2_terraformed.go │ │ ├── zz_qospolicyv2_types.go │ │ ├── zz_quotav2_terraformed.go │ │ ├── zz_quotav2_types.go │ │ ├── zz_rbacpolicyv2_terraformed.go │ │ ├── zz_rbacpolicyv2_types.go │ │ ├── zz_routerinterfacev2_terraformed.go │ │ ├── zz_routerinterfacev2_types.go │ │ ├── zz_routerroutev2_terraformed.go │ │ ├── zz_routerroutev2_types.go │ │ ├── zz_routerv2_terraformed.go │ │ ├── zz_routerv2_types.go │ │ ├── zz_secgrouprulev2_terraformed.go │ │ ├── zz_secgrouprulev2_types.go │ │ ├── zz_secgroupv2_terraformed.go │ │ ├── zz_secgroupv2_types.go │ │ ├── zz_subnetpoolv2_terraformed.go │ │ ├── zz_subnetpoolv2_types.go │ │ ├── zz_subnetroutev2_terraformed.go │ │ ├── zz_subnetroutev2_types.go │ │ ├── zz_subnetv2_terraformed.go │ │ ├── zz_subnetv2_types.go │ │ ├── zz_trunkv2_terraformed.go │ │ └── zz_trunkv2_types.go ├── objectstorage │ └── v1alpha1 │ │ ├── zz_containerv1_terraformed.go │ │ ├── zz_containerv1_types.go │ │ ├── zz_generated.conversion_hubs.go │ │ ├── zz_generated.deepcopy.go │ │ ├── zz_generated.managed.go │ │ ├── zz_generated.managedlist.go │ │ ├── zz_generated.resolvers.go │ │ ├── zz_groupversion_info.go │ │ ├── zz_objectv1_terraformed.go │ │ ├── zz_objectv1_types.go │ │ ├── zz_tempurlv1_terraformed.go │ │ └── zz_tempurlv1_types.go ├── orchestration │ └── v1alpha1 │ │ ├── zz_generated.conversion_hubs.go │ │ ├── zz_generated.deepcopy.go │ │ ├── zz_generated.managed.go │ │ ├── zz_generated.managedlist.go │ │ ├── zz_groupversion_info.go │ │ ├── zz_stackv1_terraformed.go │ │ └── zz_stackv1_types.go ├── sharedfilesystem │ └── v1alpha1 │ │ ├── zz_generated.conversion_hubs.go │ │ ├── zz_generated.deepcopy.go │ │ ├── zz_generated.managed.go │ │ ├── zz_generated.managedlist.go │ │ ├── zz_generated.resolvers.go │ │ ├── zz_groupversion_info.go │ │ ├── zz_securityservicev2_terraformed.go │ │ ├── zz_securityservicev2_types.go │ │ ├── zz_shareaccessv2_terraformed.go │ │ ├── zz_shareaccessv2_types.go │ │ ├── zz_sharenetworkv2_terraformed.go │ │ ├── zz_sharenetworkv2_types.go │ │ ├── zz_sharev2_terraformed.go │ │ └── zz_sharev2_types.go ├── v1alpha1 │ ├── doc.go │ ├── register.go │ ├── types.go │ └── zz_generated.deepcopy.go ├── v1beta1 │ ├── doc.go │ ├── register.go │ ├── types.go │ ├── zz_generated.deepcopy.go │ ├── zz_generated.pc.go │ ├── zz_generated.pcu.go │ └── zz_generated.pculist.go ├── vpnaas │ └── v1alpha1 │ │ ├── zz_endpointgroupv2_terraformed.go │ │ ├── zz_endpointgroupv2_types.go │ │ ├── zz_generated.conversion_hubs.go │ │ ├── zz_generated.deepcopy.go │ │ ├── zz_generated.managed.go │ │ ├── zz_generated.managedlist.go │ │ ├── zz_generated.resolvers.go │ │ ├── zz_groupversion_info.go │ │ ├── zz_ikepolicyv2_terraformed.go │ │ ├── zz_ikepolicyv2_types.go │ │ ├── zz_ipsecpolicyv2_terraformed.go │ │ ├── zz_ipsecpolicyv2_types.go │ │ ├── zz_servicev2_terraformed.go │ │ ├── zz_servicev2_types.go │ │ ├── zz_siteconnectionv2_terraformed.go │ │ └── zz_siteconnectionv2_types.go └── zz_register.go ├── cluster ├── images │ └── provider-openstack │ │ ├── Dockerfile │ │ ├── Makefile │ │ └── terraformrc.hcl └── test │ └── setup.sh ├── cmd ├── generator │ └── main.go └── provider │ └── main.go ├── config ├── blockstorage │ └── config.go ├── compute │ └── config.go ├── containerinfra │ └── config.go ├── dns │ └── config.go ├── external_name.go ├── generated.lst ├── identity │ └── config.go ├── lb │ └── config.go ├── networking │ └── config.go ├── provider-metadata.yaml ├── provider.go └── schema.json ├── examples-generated ├── blockstorage │ └── v1alpha1 │ │ ├── qosassociationv3.yaml │ │ ├── qosv3.yaml │ │ ├── quotasetv3.yaml │ │ ├── volumeattachv3.yaml │ │ ├── volumetypeaccessv3.yaml │ │ ├── volumetypev3.yaml │ │ └── volumev3.yaml ├── compute │ └── v1alpha1 │ │ ├── aggregatev2.yaml │ │ ├── flavoraccessv2.yaml │ │ ├── flavorv2.yaml │ │ ├── instancev2.yaml │ │ ├── interfaceattachv2.yaml │ │ ├── keypairv2.yaml │ │ ├── quotasetv2.yaml │ │ ├── servergroupv2.yaml │ │ └── volumeattachv2.yaml ├── containerinfra │ └── v1alpha1 │ │ └── clustertemplatev1.yaml ├── db │ └── v1alpha1 │ │ ├── configurationv1.yaml │ │ ├── databasev1.yaml │ │ ├── instancev1.yaml │ │ └── userv1.yaml ├── dns │ └── v1alpha1 │ │ ├── recordsetv2.yaml │ │ ├── transferacceptv2.yaml │ │ ├── transferrequestv2.yaml │ │ └── zonev2.yaml ├── fw │ └── v1alpha1 │ │ ├── groupv2.yaml │ │ ├── policyv2.yaml │ │ └── rulev2.yaml ├── identity │ └── v1alpha1 │ │ ├── applicationcredentialv3.yaml │ │ ├── ec2credentialv3.yaml │ │ ├── endpointv3.yaml │ │ ├── groupv3.yaml │ │ ├── inheritroleassignmentv3.yaml │ │ ├── projectv3.yaml │ │ ├── roleassignmentv3.yaml │ │ ├── rolev3.yaml │ │ ├── servicev3.yaml │ │ ├── usermembershipv3.yaml │ │ └── userv3.yaml ├── images │ └── v1alpha1 │ │ ├── imageaccessacceptv2.yaml │ │ ├── imageaccessv2.yaml │ │ └── imagev2.yaml ├── keymanager │ └── v1alpha1 │ │ ├── containerv1.yaml │ │ ├── orderv1.yaml │ │ └── secretv1.yaml ├── lb │ └── v1alpha1 │ │ ├── l7policyv2.yaml │ │ ├── l7rulev2.yaml │ │ ├── listenerv2.yaml │ │ ├── loadbalancerv2.yaml │ │ ├── membersv2.yaml │ │ ├── memberv2.yaml │ │ ├── monitorv2.yaml │ │ ├── poolv2.yaml │ │ └── quotav2.yaml ├── networking │ └── v1alpha1 │ │ ├── addressscopev2.yaml │ │ ├── floatingipassociatev2.yaml │ │ ├── floatingipv2.yaml │ │ ├── networkv2.yaml │ │ ├── portforwardingv2.yaml │ │ ├── portsecgroupassociatev2.yaml │ │ ├── portv2.yaml │ │ ├── qosbandwidthlimitrulev2.yaml │ │ ├── qosdscpmarkingrulev2.yaml │ │ ├── qosminimumbandwidthrulev2.yaml │ │ ├── qospolicyv2.yaml │ │ ├── quotav2.yaml │ │ ├── rbacpolicyv2.yaml │ │ ├── routerinterfacev2.yaml │ │ ├── routerroutev2.yaml │ │ ├── routerv2.yaml │ │ ├── secgrouprulev2.yaml │ │ ├── secgroupv2.yaml │ │ ├── subnetpoolv2.yaml │ │ ├── subnetroutev2.yaml │ │ ├── subnetv2.yaml │ │ └── trunkv2.yaml ├── objectstorage │ └── v1alpha1 │ │ ├── containerv1.yaml │ │ ├── objectv1.yaml │ │ └── tempurlv1.yaml ├── orchestration │ └── v1alpha1 │ │ └── stackv1.yaml ├── sharedfilesystem │ └── v1alpha1 │ │ ├── securityservicev2.yaml │ │ ├── shareaccessv2.yaml │ │ ├── sharenetworkv2.yaml │ │ └── sharev2.yaml └── vpnaas │ └── v1alpha1 │ ├── endpointgroupv2.yaml │ ├── ikepolicyv2.yaml │ ├── ipsecpolicyv2.yaml │ ├── servicev2.yaml │ └── siteconnectionv2.yaml ├── examples ├── compute │ ├── keypairv2.yaml │ └── quotasetv2.yaml ├── containerinfra │ └── clusterv1.yaml ├── dns │ └── zonev2_recordsetv2.yaml ├── identity │ ├── projectv3.yaml │ ├── roleassignmentv3.yaml │ └── userv3.yaml ├── install.yaml ├── null │ └── resource.yaml ├── providerconfig │ ├── .gitignore │ ├── providerconfig.yaml │ └── secret.yaml.tmpl └── storeconfig │ ├── kubernetes.yaml │ └── vault.yaml ├── go.mod ├── go.sum ├── hack └── boilerplate.go.txt ├── internal ├── apis │ └── scheme.go ├── clients │ └── openstack.go ├── controller │ ├── blockstorage │ │ ├── qosassociationv3 │ │ │ └── zz_controller.go │ │ ├── qosv3 │ │ │ └── zz_controller.go │ │ ├── quotasetv3 │ │ │ └── zz_controller.go │ │ ├── volumeattachv3 │ │ │ └── zz_controller.go │ │ ├── volumetypeaccessv3 │ │ │ └── zz_controller.go │ │ ├── volumetypev3 │ │ │ └── zz_controller.go │ │ └── volumev3 │ │ │ └── zz_controller.go │ ├── compute │ │ ├── aggregatev2 │ │ │ └── zz_controller.go │ │ ├── flavoraccessv2 │ │ │ └── zz_controller.go │ │ ├── flavorv2 │ │ │ └── zz_controller.go │ │ ├── instancev2 │ │ │ └── zz_controller.go │ │ ├── interfaceattachv2 │ │ │ └── zz_controller.go │ │ ├── keypairv2 │ │ │ └── zz_controller.go │ │ ├── quotasetv2 │ │ │ └── zz_controller.go │ │ ├── servergroupv2 │ │ │ └── zz_controller.go │ │ └── volumeattachv2 │ │ │ └── zz_controller.go │ ├── containerinfra │ │ ├── clustertemplatev1 │ │ │ └── zz_controller.go │ │ ├── clusterv1 │ │ │ └── zz_controller.go │ │ └── nodegroupv1 │ │ │ └── zz_controller.go │ ├── db │ │ ├── configurationv1 │ │ │ └── zz_controller.go │ │ ├── databasev1 │ │ │ └── zz_controller.go │ │ ├── instancev1 │ │ │ └── zz_controller.go │ │ └── userv1 │ │ │ └── zz_controller.go │ ├── dns │ │ ├── recordsetv2 │ │ │ └── zz_controller.go │ │ ├── transferacceptv2 │ │ │ └── zz_controller.go │ │ ├── transferrequestv2 │ │ │ └── zz_controller.go │ │ └── zonev2 │ │ │ └── zz_controller.go │ ├── doc.go │ ├── fw │ │ ├── groupv2 │ │ │ └── zz_controller.go │ │ ├── policyv2 │ │ │ └── zz_controller.go │ │ └── rulev2 │ │ │ └── zz_controller.go │ ├── identity │ │ ├── applicationcredentialv3 │ │ │ └── zz_controller.go │ │ ├── ec2credentialv3 │ │ │ └── zz_controller.go │ │ ├── endpointv3 │ │ │ └── zz_controller.go │ │ ├── groupv3 │ │ │ └── zz_controller.go │ │ ├── inheritroleassignmentv3 │ │ │ └── zz_controller.go │ │ ├── projectv3 │ │ │ └── zz_controller.go │ │ ├── roleassignmentv3 │ │ │ └── zz_controller.go │ │ ├── rolev3 │ │ │ └── zz_controller.go │ │ ├── servicev3 │ │ │ └── zz_controller.go │ │ ├── usermembershipv3 │ │ │ └── zz_controller.go │ │ └── userv3 │ │ │ └── zz_controller.go │ ├── images │ │ ├── imageaccessacceptv2 │ │ │ └── zz_controller.go │ │ ├── imageaccessv2 │ │ │ └── zz_controller.go │ │ └── imagev2 │ │ │ └── zz_controller.go │ ├── keymanager │ │ ├── containerv1 │ │ │ └── zz_controller.go │ │ ├── orderv1 │ │ │ └── zz_controller.go │ │ └── secretv1 │ │ │ └── zz_controller.go │ ├── lb │ │ ├── l7policyv2 │ │ │ └── zz_controller.go │ │ ├── l7rulev2 │ │ │ └── zz_controller.go │ │ ├── listenerv2 │ │ │ └── zz_controller.go │ │ ├── loadbalancerv2 │ │ │ └── zz_controller.go │ │ ├── membersv2 │ │ │ └── zz_controller.go │ │ ├── memberv2 │ │ │ └── zz_controller.go │ │ ├── monitorv2 │ │ │ └── zz_controller.go │ │ ├── poolv2 │ │ │ └── zz_controller.go │ │ └── quotav2 │ │ │ └── zz_controller.go │ ├── networking │ │ ├── addressscopev2 │ │ │ └── zz_controller.go │ │ ├── floatingipassociatev2 │ │ │ └── zz_controller.go │ │ ├── floatingipv2 │ │ │ └── zz_controller.go │ │ ├── networkv2 │ │ │ └── zz_controller.go │ │ ├── portforwardingv2 │ │ │ └── zz_controller.go │ │ ├── portsecgroupassociatev2 │ │ │ └── zz_controller.go │ │ ├── portv2 │ │ │ └── zz_controller.go │ │ ├── qosbandwidthlimitrulev2 │ │ │ └── zz_controller.go │ │ ├── qosdscpmarkingrulev2 │ │ │ └── zz_controller.go │ │ ├── qosminimumbandwidthrulev2 │ │ │ └── zz_controller.go │ │ ├── qospolicyv2 │ │ │ └── zz_controller.go │ │ ├── quotav2 │ │ │ └── zz_controller.go │ │ ├── rbacpolicyv2 │ │ │ └── zz_controller.go │ │ ├── routerinterfacev2 │ │ │ └── zz_controller.go │ │ ├── routerroutev2 │ │ │ └── zz_controller.go │ │ ├── routerv2 │ │ │ └── zz_controller.go │ │ ├── secgrouprulev2 │ │ │ └── zz_controller.go │ │ ├── secgroupv2 │ │ │ └── zz_controller.go │ │ ├── subnetpoolv2 │ │ │ └── zz_controller.go │ │ ├── subnetroutev2 │ │ │ └── zz_controller.go │ │ ├── subnetv2 │ │ │ └── zz_controller.go │ │ └── trunkv2 │ │ │ └── zz_controller.go │ ├── objectstorage │ │ ├── containerv1 │ │ │ └── zz_controller.go │ │ ├── objectv1 │ │ │ └── zz_controller.go │ │ └── tempurlv1 │ │ │ └── zz_controller.go │ ├── orchestration │ │ └── stackv1 │ │ │ └── zz_controller.go │ ├── providerconfig │ │ └── config.go │ ├── sharedfilesystem │ │ ├── securityservicev2 │ │ │ └── zz_controller.go │ │ ├── shareaccessv2 │ │ │ └── zz_controller.go │ │ ├── sharenetworkv2 │ │ │ └── zz_controller.go │ │ └── sharev2 │ │ │ └── zz_controller.go │ ├── vpnaas │ │ ├── endpointgroupv2 │ │ │ └── zz_controller.go │ │ ├── ikepolicyv2 │ │ │ └── zz_controller.go │ │ ├── ipsecpolicyv2 │ │ │ └── zz_controller.go │ │ ├── servicev2 │ │ │ └── zz_controller.go │ │ └── siteconnectionv2 │ │ │ └── zz_controller.go │ └── zz_setup.go └── features │ └── features.go ├── package ├── crds │ ├── blockstorage.openstack.crossplane.io_qosassociationv3s.yaml │ ├── blockstorage.openstack.crossplane.io_qosv3s.yaml │ ├── blockstorage.openstack.crossplane.io_quotasetv3s.yaml │ ├── blockstorage.openstack.crossplane.io_volumeattachv3s.yaml │ ├── blockstorage.openstack.crossplane.io_volumetypeaccessv3s.yaml │ ├── blockstorage.openstack.crossplane.io_volumetypev3s.yaml │ ├── blockstorage.openstack.crossplane.io_volumev3s.yaml │ ├── compute.openstack.crossplane.io_aggregatev2s.yaml │ ├── compute.openstack.crossplane.io_flavoraccessv2s.yaml │ ├── compute.openstack.crossplane.io_flavorv2s.yaml │ ├── compute.openstack.crossplane.io_instancev2s.yaml │ ├── compute.openstack.crossplane.io_interfaceattachv2s.yaml │ ├── compute.openstack.crossplane.io_keypairv2s.yaml │ ├── compute.openstack.crossplane.io_quotasetv2s.yaml │ ├── compute.openstack.crossplane.io_servergroupv2s.yaml │ ├── compute.openstack.crossplane.io_volumeattachv2s.yaml │ ├── containerinfra.openstack.crossplane.io_clustertemplatev1s.yaml │ ├── containerinfra.openstack.crossplane.io_clusterv1s.yaml │ ├── containerinfra.openstack.crossplane.io_nodegroupv1s.yaml │ ├── db.openstack.crossplane.io_configurationv1s.yaml │ ├── db.openstack.crossplane.io_databasev1s.yaml │ ├── db.openstack.crossplane.io_instancev1s.yaml │ ├── db.openstack.crossplane.io_userv1s.yaml │ ├── dns.openstack.crossplane.io_recordsetv2s.yaml │ ├── dns.openstack.crossplane.io_transferacceptv2s.yaml │ ├── dns.openstack.crossplane.io_transferrequestv2s.yaml │ ├── dns.openstack.crossplane.io_zonev2s.yaml │ ├── fw.openstack.crossplane.io_groupv2s.yaml │ ├── fw.openstack.crossplane.io_policyv2s.yaml │ ├── fw.openstack.crossplane.io_rulev2s.yaml │ ├── identity.openstack.crossplane.io_applicationcredentialv3s.yaml │ ├── identity.openstack.crossplane.io_ec2credentialv3s.yaml │ ├── identity.openstack.crossplane.io_endpointv3s.yaml │ ├── identity.openstack.crossplane.io_groupv3s.yaml │ ├── identity.openstack.crossplane.io_inheritroleassignmentv3s.yaml │ ├── identity.openstack.crossplane.io_projectv3s.yaml │ ├── identity.openstack.crossplane.io_roleassignmentv3s.yaml │ ├── identity.openstack.crossplane.io_rolev3s.yaml │ ├── identity.openstack.crossplane.io_servicev3s.yaml │ ├── identity.openstack.crossplane.io_usermembershipv3s.yaml │ ├── identity.openstack.crossplane.io_userv3s.yaml │ ├── images.openstack.crossplane.io_imageaccessacceptv2s.yaml │ ├── images.openstack.crossplane.io_imageaccessv2s.yaml │ ├── images.openstack.crossplane.io_imagev2s.yaml │ ├── keymanager.openstack.crossplane.io_containerv1s.yaml │ ├── keymanager.openstack.crossplane.io_orderv1s.yaml │ ├── keymanager.openstack.crossplane.io_secretv1s.yaml │ ├── lb.openstack.crossplane.io_l7policyv2s.yaml │ ├── lb.openstack.crossplane.io_l7rulev2s.yaml │ ├── lb.openstack.crossplane.io_listenerv2s.yaml │ ├── lb.openstack.crossplane.io_loadbalancerv2s.yaml │ ├── lb.openstack.crossplane.io_membersv2s.yaml │ ├── lb.openstack.crossplane.io_memberv2s.yaml │ ├── lb.openstack.crossplane.io_monitorv2s.yaml │ ├── lb.openstack.crossplane.io_poolv2s.yaml │ ├── lb.openstack.crossplane.io_quotav2s.yaml │ ├── networking.openstack.crossplane.io_addressscopev2s.yaml │ ├── networking.openstack.crossplane.io_floatingipassociatev2s.yaml │ ├── networking.openstack.crossplane.io_floatingipv2s.yaml │ ├── networking.openstack.crossplane.io_networkv2s.yaml │ ├── networking.openstack.crossplane.io_portforwardingv2s.yaml │ ├── networking.openstack.crossplane.io_portsecgroupassociatev2s.yaml │ ├── networking.openstack.crossplane.io_portv2s.yaml │ ├── networking.openstack.crossplane.io_qosbandwidthlimitrulev2s.yaml │ ├── networking.openstack.crossplane.io_qosdscpmarkingrulev2s.yaml │ ├── networking.openstack.crossplane.io_qosminimumbandwidthrulev2s.yaml │ ├── networking.openstack.crossplane.io_qospolicyv2s.yaml │ ├── networking.openstack.crossplane.io_quotav2s.yaml │ ├── networking.openstack.crossplane.io_rbacpolicyv2s.yaml │ ├── networking.openstack.crossplane.io_routerinterfacev2s.yaml │ ├── networking.openstack.crossplane.io_routerroutev2s.yaml │ ├── networking.openstack.crossplane.io_routerv2s.yaml │ ├── networking.openstack.crossplane.io_secgrouprulev2s.yaml │ ├── networking.openstack.crossplane.io_secgroupv2s.yaml │ ├── networking.openstack.crossplane.io_subnetpoolv2s.yaml │ ├── networking.openstack.crossplane.io_subnetroutev2s.yaml │ ├── networking.openstack.crossplane.io_subnetv2s.yaml │ ├── networking.openstack.crossplane.io_trunkv2s.yaml │ ├── objectstorage.openstack.crossplane.io_containerv1s.yaml │ ├── objectstorage.openstack.crossplane.io_objectv1s.yaml │ ├── objectstorage.openstack.crossplane.io_tempurlv1s.yaml │ ├── openstack.crossplane.io_providerconfigs.yaml │ ├── openstack.crossplane.io_providerconfigusages.yaml │ ├── openstack.crossplane.io_storeconfigs.yaml │ ├── orchestration.openstack.crossplane.io_stackv1s.yaml │ ├── sharedfilesystem.openstack.crossplane.io_securityservicev2s.yaml │ ├── sharedfilesystem.openstack.crossplane.io_shareaccessv2s.yaml │ ├── sharedfilesystem.openstack.crossplane.io_sharenetworkv2s.yaml │ ├── sharedfilesystem.openstack.crossplane.io_sharev2s.yaml │ ├── vpnaas.openstack.crossplane.io_endpointgroupv2s.yaml │ ├── vpnaas.openstack.crossplane.io_ikepolicyv2s.yaml │ ├── vpnaas.openstack.crossplane.io_ipsecpolicyv2s.yaml │ ├── vpnaas.openstack.crossplane.io_servicev2s.yaml │ └── vpnaas.openstack.crossplane.io_siteconnectionv2s.yaml └── crossplane.yaml └── scripts └── version_diff.py /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 8 | 9 | ### Description of your changes 10 | 11 | 20 | Fixes # 21 | 22 | I have: 23 | 24 | - [ ] Read and followed Crossplane's [contribution process]. 25 | - [ ] Run `make submodules; make reviewable test` to ensure this PR is ready for review. 26 | 27 | ### How has this code been tested 28 | 29 | 34 | 35 | [contribution process]: https://git.io/fj2m9 36 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "gomod" 4 | directory: "/" 5 | schedule: 6 | interval: "daily" -------------------------------------------------------------------------------- /.github/oldworkflows/backport.yml: -------------------------------------------------------------------------------- 1 | # name: Backport 2 | 3 | # on: 4 | # # NOTE(negz): This is a risky target, but we run this action only when and if 5 | # # a PR is closed, then filter down to specifically merged PRs. We also don't 6 | # # invoke any scripts, etc from within the repo. I believe the fact that we'll 7 | # # be able to review PRs before this runs makes this fairly safe. 8 | # # https://securitylab.github.com/research/github-actions-preventing-pwn-requests/ 9 | # pull_request_target: 10 | # types: [closed] 11 | # # See also commands.yml for the /backport triggered variant of this workflow. 12 | 13 | # jobs: 14 | # backport: 15 | # uses: upbound/official-providers-ci/.github/workflows/provider-backport.yml@standard-runners -------------------------------------------------------------------------------- /.github/oldworkflows/commands.yml: -------------------------------------------------------------------------------- 1 | # name: Comment Commands 2 | 3 | # on: issue_comment 4 | 5 | # jobs: 6 | # comment-commands: 7 | # uses: upbound/official-providers-ci/.github/workflows/provider-commands.yml@standard-runners -------------------------------------------------------------------------------- /.github/oldworkflows/e2e.yaml: -------------------------------------------------------------------------------- 1 | # name: End to End Testing 2 | 3 | # on: 4 | # issue_comment: 5 | # types: [created] 6 | 7 | # jobs: 8 | # e2e: 9 | # uses: upbound/official-providers-ci/.github/workflows/pr-comment-trigger.yml@standard-runners 10 | # secrets: 11 | # UPTEST_CLOUD_CREDENTIALS: ${{ secrets.UPTEST_CLOUD_CREDENTIALS }} 12 | # UPTEST_DATASOURCE: ${{ secrets.UPTEST_DATASOURCE }} -------------------------------------------------------------------------------- /.github/oldworkflows/tag.yaml: -------------------------------------------------------------------------------- 1 | # name: Tag 2 | 3 | # on: 4 | # workflow_dispatch: 5 | # inputs: 6 | # version: 7 | # description: 'Release version (e.g. v0.1.0)' 8 | # required: true 9 | # message: 10 | # description: 'Tag message' 11 | # required: true 12 | 13 | # jobs: 14 | # tag: 15 | # uses: upbound/official-providers-ci/.github/workflows/provider-tag.yml@standard-runners 16 | # with: 17 | # version: ${{ github.event.inputs.version }} 18 | # message: ${{ github.event.inputs.message }} -------------------------------------------------------------------------------- /.github/workflows/publish-provider-package.yaml: -------------------------------------------------------------------------------- 1 | name: Publish Provider Package 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | version: 7 | description: "Version string to use while publishing the package (e.g. v1.0.0-alpha.1)" 8 | default: '' 9 | required: false 10 | go-version: 11 | description: 'Go version to use if building needs to be done' 12 | default: '1.23' 13 | required: false 14 | 15 | jobs: 16 | publish-provider-package: 17 | uses: crossplane-contrib/provider-workflows/.github/workflows/publish-provider-non-family.yml@9a2125b3ec67a41a24913ada8212b9359f104c8c 18 | with: 19 | repository: provider-openstack 20 | version: ${{ github.event.inputs.version }} 21 | go-version: ${{ github.event.inputs.go-version }} 22 | cleanup-disk: true 23 | mirror-to-upbound-registry: false 24 | secrets: 25 | GHCR_PAT: ${{ secrets.GITHUB_TOKEN }} -------------------------------------------------------------------------------- /.github/workflows/tag.yml: -------------------------------------------------------------------------------- 1 | name: Tag 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | version: 7 | description: 'Release version (e.g. v0.1.0)' 8 | required: true 9 | message: 10 | description: 'Tag message' 11 | required: true 12 | 13 | jobs: 14 | create-tag: 15 | runs-on: ubuntu-latest 16 | 17 | steps: 18 | - name: Checkout 19 | uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 20 | 21 | - name: Create Tag 22 | uses: negz/create-tag@39bae1e0932567a58c20dea5a1a0d18358503320 # v1 23 | with: 24 | version: ${{ github.event.inputs.version }} 25 | message: ${{ github.event.inputs.message }} 26 | token: ${{ secrets.GITHUB_TOKEN }} -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.cache 2 | /.work 3 | /_output 4 | cover.out 5 | /vendor 6 | /.vendor-new 7 | .DS_Store 8 | 9 | # ignore IDE folders 10 | .vscode/ 11 | .idea/ 12 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "build"] 2 | path = build 3 | url = https://github.com/crossplane/build 4 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | # This file controls automatic PR reviewer assignment. See the following docs: 2 | # 3 | # * https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners 4 | # * https://docs.github.com/en/organizations/organizing-members-into-teams/managing-code-review-settings-for-your-team 5 | # 6 | # The goal of this file is for most PRs to automatically and fairly have one 7 | # maintainer set as PR reviewers. All maintainers have permission to approve 8 | # and merge PRs. All PRs must be approved by at least one maintainer before being merged. 9 | # 10 | # Where possible, prefer explicitly specifying a maintainer who is a subject 11 | # matter expert for a particular part of the codebase rather than using the 12 | # @upbound/team-extensions group. 13 | # 14 | # See also OWNERS.md for governance details 15 | 16 | # Fallback owners 17 | * @schlakob @jan-di 18 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | ## Code of Conduct 2 | 3 | Upjet is under [the Apache 2.0 license](LICENSE) with [notice](NOTICE). -------------------------------------------------------------------------------- /DCO: -------------------------------------------------------------------------------- 1 | Developer Certificate of Origin 2 | Version 1.1 3 | 4 | Copyright (C) 2004, 2006 The Linux Foundation and its contributors. 5 | 660 York Street, Suite 102, 6 | San Francisco, CA 94110 USA 7 | 8 | Everyone is permitted to copy and distribute verbatim copies of this 9 | license document, but changing it is not allowed. 10 | 11 | 12 | Developer's Certificate of Origin 1.1 13 | 14 | By making a contribution to this project, I certify that: 15 | 16 | (a) The contribution was created in whole or in part by me and I 17 | have the right to submit it under the open source license 18 | indicated in the file; or 19 | 20 | (b) The contribution is based upon previous work that, to the best 21 | of my knowledge, is covered under an appropriate open source 22 | license and I have the right under that license to submit that 23 | work with modifications, whether created in whole or in part 24 | by me, under the same open source license (unless I am 25 | permitted to submit under a different license), as indicated 26 | in the file; or 27 | 28 | (c) The contribution was provided directly to me by some other 29 | person who certified (a), (b) or (c) and I have not modified 30 | it. 31 | 32 | (d) I understand and agree that this project and the contribution 33 | are public and that a record of the contribution (including all 34 | personal information I submit with it, including my sign-off) is 35 | maintained indefinitely and may be redistributed consistent with 36 | this project or the open source license(s) involved. 37 | -------------------------------------------------------------------------------- /OWNERS.md: -------------------------------------------------------------------------------- 1 | # OWNERS 2 | 3 | This page lists all maintainers for **this** repository. Each repository in the [Upbound 4 | organization](https://github.com/upbound/) will list their repository maintainers in their own 5 | `OWNERS.md` file. 6 | 7 | 8 | ## Maintainers 9 | 10 | * Jakob Schlagenhaufer ([schlakob](https://github.com/schlakob)) 11 | * Jan Dittrich ([jan-di](https://github.com/jan-di)) 12 | 13 | See [CODEOWNERS](./CODEOWNERS) for automatic PR assignment. 14 | -------------------------------------------------------------------------------- /apis/blockstorage/v1alpha1/zz_generated.conversion_hubs.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | package v1alpha1 9 | 10 | // Hub marks this type as a conversion hub. 11 | func (tr *QosAssociationV3) Hub() {} 12 | 13 | // Hub marks this type as a conversion hub. 14 | func (tr *QosV3) Hub() {} 15 | 16 | // Hub marks this type as a conversion hub. 17 | func (tr *QuotasetV3) Hub() {} 18 | 19 | // Hub marks this type as a conversion hub. 20 | func (tr *VolumeAttachV3) Hub() {} 21 | 22 | // Hub marks this type as a conversion hub. 23 | func (tr *VolumeTypeAccessV3) Hub() {} 24 | 25 | // Hub marks this type as a conversion hub. 26 | func (tr *VolumeTypeV3) Hub() {} 27 | 28 | // Hub marks this type as a conversion hub. 29 | func (tr *VolumeV3) Hub() {} 30 | -------------------------------------------------------------------------------- /apis/blockstorage/v1alpha1/zz_generated.managedlist.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | // Code generated by angryjet. DO NOT EDIT. 6 | 7 | package v1alpha1 8 | 9 | import resource "github.com/crossplane/crossplane-runtime/pkg/resource" 10 | 11 | // GetItems of this QosAssociationV3List. 12 | func (l *QosAssociationV3List) GetItems() []resource.Managed { 13 | items := make([]resource.Managed, len(l.Items)) 14 | for i := range l.Items { 15 | items[i] = &l.Items[i] 16 | } 17 | return items 18 | } 19 | 20 | // GetItems of this QosV3List. 21 | func (l *QosV3List) GetItems() []resource.Managed { 22 | items := make([]resource.Managed, len(l.Items)) 23 | for i := range l.Items { 24 | items[i] = &l.Items[i] 25 | } 26 | return items 27 | } 28 | 29 | // GetItems of this QuotasetV3List. 30 | func (l *QuotasetV3List) GetItems() []resource.Managed { 31 | items := make([]resource.Managed, len(l.Items)) 32 | for i := range l.Items { 33 | items[i] = &l.Items[i] 34 | } 35 | return items 36 | } 37 | 38 | // GetItems of this VolumeAttachV3List. 39 | func (l *VolumeAttachV3List) GetItems() []resource.Managed { 40 | items := make([]resource.Managed, len(l.Items)) 41 | for i := range l.Items { 42 | items[i] = &l.Items[i] 43 | } 44 | return items 45 | } 46 | 47 | // GetItems of this VolumeTypeAccessV3List. 48 | func (l *VolumeTypeAccessV3List) GetItems() []resource.Managed { 49 | items := make([]resource.Managed, len(l.Items)) 50 | for i := range l.Items { 51 | items[i] = &l.Items[i] 52 | } 53 | return items 54 | } 55 | 56 | // GetItems of this VolumeTypeV3List. 57 | func (l *VolumeTypeV3List) GetItems() []resource.Managed { 58 | items := make([]resource.Managed, len(l.Items)) 59 | for i := range l.Items { 60 | items[i] = &l.Items[i] 61 | } 62 | return items 63 | } 64 | 65 | // GetItems of this VolumeV3List. 66 | func (l *VolumeV3List) GetItems() []resource.Managed { 67 | items := make([]resource.Managed, len(l.Items)) 68 | for i := range l.Items { 69 | items[i] = &l.Items[i] 70 | } 71 | return items 72 | } 73 | -------------------------------------------------------------------------------- /apis/blockstorage/v1alpha1/zz_groupversion_info.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | // +kubebuilder:object:generate=true 9 | // +groupName=blockstorage.openstack.crossplane.io 10 | // +versionName=v1alpha1 11 | package v1alpha1 12 | 13 | import ( 14 | "k8s.io/apimachinery/pkg/runtime/schema" 15 | "sigs.k8s.io/controller-runtime/pkg/scheme" 16 | ) 17 | 18 | // Package type metadata. 19 | const ( 20 | CRDGroup = "blockstorage.openstack.crossplane.io" 21 | CRDVersion = "v1alpha1" 22 | ) 23 | 24 | var ( 25 | // CRDGroupVersion is the API Group Version used to register the objects 26 | CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} 27 | 28 | // SchemeBuilder is used to add go types to the GroupVersionKind scheme 29 | SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} 30 | 31 | // AddToScheme adds the types in this group-version to the given scheme. 32 | AddToScheme = SchemeBuilder.AddToScheme 33 | ) 34 | -------------------------------------------------------------------------------- /apis/compute/v1alpha1/zz_generated.conversion_hubs.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | package v1alpha1 9 | 10 | // Hub marks this type as a conversion hub. 11 | func (tr *AggregateV2) Hub() {} 12 | 13 | // Hub marks this type as a conversion hub. 14 | func (tr *FlavorAccessV2) Hub() {} 15 | 16 | // Hub marks this type as a conversion hub. 17 | func (tr *FlavorV2) Hub() {} 18 | 19 | // Hub marks this type as a conversion hub. 20 | func (tr *InstanceV2) Hub() {} 21 | 22 | // Hub marks this type as a conversion hub. 23 | func (tr *InterfaceAttachV2) Hub() {} 24 | 25 | // Hub marks this type as a conversion hub. 26 | func (tr *KeypairV2) Hub() {} 27 | 28 | // Hub marks this type as a conversion hub. 29 | func (tr *QuotasetV2) Hub() {} 30 | 31 | // Hub marks this type as a conversion hub. 32 | func (tr *ServergroupV2) Hub() {} 33 | 34 | // Hub marks this type as a conversion hub. 35 | func (tr *VolumeAttachV2) Hub() {} 36 | -------------------------------------------------------------------------------- /apis/compute/v1alpha1/zz_generated.managedlist.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | // Code generated by angryjet. DO NOT EDIT. 6 | 7 | package v1alpha1 8 | 9 | import resource "github.com/crossplane/crossplane-runtime/pkg/resource" 10 | 11 | // GetItems of this AggregateV2List. 12 | func (l *AggregateV2List) GetItems() []resource.Managed { 13 | items := make([]resource.Managed, len(l.Items)) 14 | for i := range l.Items { 15 | items[i] = &l.Items[i] 16 | } 17 | return items 18 | } 19 | 20 | // GetItems of this FlavorAccessV2List. 21 | func (l *FlavorAccessV2List) GetItems() []resource.Managed { 22 | items := make([]resource.Managed, len(l.Items)) 23 | for i := range l.Items { 24 | items[i] = &l.Items[i] 25 | } 26 | return items 27 | } 28 | 29 | // GetItems of this FlavorV2List. 30 | func (l *FlavorV2List) GetItems() []resource.Managed { 31 | items := make([]resource.Managed, len(l.Items)) 32 | for i := range l.Items { 33 | items[i] = &l.Items[i] 34 | } 35 | return items 36 | } 37 | 38 | // GetItems of this InstanceV2List. 39 | func (l *InstanceV2List) GetItems() []resource.Managed { 40 | items := make([]resource.Managed, len(l.Items)) 41 | for i := range l.Items { 42 | items[i] = &l.Items[i] 43 | } 44 | return items 45 | } 46 | 47 | // GetItems of this InterfaceAttachV2List. 48 | func (l *InterfaceAttachV2List) GetItems() []resource.Managed { 49 | items := make([]resource.Managed, len(l.Items)) 50 | for i := range l.Items { 51 | items[i] = &l.Items[i] 52 | } 53 | return items 54 | } 55 | 56 | // GetItems of this KeypairV2List. 57 | func (l *KeypairV2List) GetItems() []resource.Managed { 58 | items := make([]resource.Managed, len(l.Items)) 59 | for i := range l.Items { 60 | items[i] = &l.Items[i] 61 | } 62 | return items 63 | } 64 | 65 | // GetItems of this QuotasetV2List. 66 | func (l *QuotasetV2List) GetItems() []resource.Managed { 67 | items := make([]resource.Managed, len(l.Items)) 68 | for i := range l.Items { 69 | items[i] = &l.Items[i] 70 | } 71 | return items 72 | } 73 | 74 | // GetItems of this ServergroupV2List. 75 | func (l *ServergroupV2List) GetItems() []resource.Managed { 76 | items := make([]resource.Managed, len(l.Items)) 77 | for i := range l.Items { 78 | items[i] = &l.Items[i] 79 | } 80 | return items 81 | } 82 | 83 | // GetItems of this VolumeAttachV2List. 84 | func (l *VolumeAttachV2List) GetItems() []resource.Managed { 85 | items := make([]resource.Managed, len(l.Items)) 86 | for i := range l.Items { 87 | items[i] = &l.Items[i] 88 | } 89 | return items 90 | } 91 | -------------------------------------------------------------------------------- /apis/compute/v1alpha1/zz_groupversion_info.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | // +kubebuilder:object:generate=true 9 | // +groupName=compute.openstack.crossplane.io 10 | // +versionName=v1alpha1 11 | package v1alpha1 12 | 13 | import ( 14 | "k8s.io/apimachinery/pkg/runtime/schema" 15 | "sigs.k8s.io/controller-runtime/pkg/scheme" 16 | ) 17 | 18 | // Package type metadata. 19 | const ( 20 | CRDGroup = "compute.openstack.crossplane.io" 21 | CRDVersion = "v1alpha1" 22 | ) 23 | 24 | var ( 25 | // CRDGroupVersion is the API Group Version used to register the objects 26 | CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} 27 | 28 | // SchemeBuilder is used to add go types to the GroupVersionKind scheme 29 | SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} 30 | 31 | // AddToScheme adds the types in this group-version to the given scheme. 32 | AddToScheme = SchemeBuilder.AddToScheme 33 | ) 34 | -------------------------------------------------------------------------------- /apis/containerinfra/v1alpha1/zz_generated.conversion_hubs.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | package v1alpha1 9 | 10 | // Hub marks this type as a conversion hub. 11 | func (tr *ClustertemplateV1) Hub() {} 12 | 13 | // Hub marks this type as a conversion hub. 14 | func (tr *ClusterV1) Hub() {} 15 | 16 | // Hub marks this type as a conversion hub. 17 | func (tr *NodegroupV1) Hub() {} 18 | -------------------------------------------------------------------------------- /apis/containerinfra/v1alpha1/zz_generated.managedlist.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | // Code generated by angryjet. DO NOT EDIT. 6 | 7 | package v1alpha1 8 | 9 | import resource "github.com/crossplane/crossplane-runtime/pkg/resource" 10 | 11 | // GetItems of this ClusterV1List. 12 | func (l *ClusterV1List) GetItems() []resource.Managed { 13 | items := make([]resource.Managed, len(l.Items)) 14 | for i := range l.Items { 15 | items[i] = &l.Items[i] 16 | } 17 | return items 18 | } 19 | 20 | // GetItems of this ClustertemplateV1List. 21 | func (l *ClustertemplateV1List) GetItems() []resource.Managed { 22 | items := make([]resource.Managed, len(l.Items)) 23 | for i := range l.Items { 24 | items[i] = &l.Items[i] 25 | } 26 | return items 27 | } 28 | 29 | // GetItems of this NodegroupV1List. 30 | func (l *NodegroupV1List) GetItems() []resource.Managed { 31 | items := make([]resource.Managed, len(l.Items)) 32 | for i := range l.Items { 33 | items[i] = &l.Items[i] 34 | } 35 | return items 36 | } 37 | -------------------------------------------------------------------------------- /apis/containerinfra/v1alpha1/zz_generated.resolvers.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | // Code generated by angryjet. DO NOT EDIT. 6 | 7 | package v1alpha1 8 | 9 | import ( 10 | "context" 11 | v1alpha1 "github.com/crossplane-contrib/provider-openstack/apis/networking/v1alpha1" 12 | reference "github.com/crossplane/crossplane-runtime/pkg/reference" 13 | errors "github.com/pkg/errors" 14 | client "sigs.k8s.io/controller-runtime/pkg/client" 15 | ) 16 | 17 | // ResolveReferences of this ClusterV1. 18 | func (mg *ClusterV1) ResolveReferences(ctx context.Context, c client.Reader) error { 19 | r := reference.NewAPIResolver(c, mg) 20 | 21 | var rsp reference.ResolutionResponse 22 | var err error 23 | 24 | rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ 25 | CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.FixedNetwork), 26 | Extract: reference.ExternalName(), 27 | Reference: mg.Spec.ForProvider.FixedNetworkRef, 28 | Selector: mg.Spec.ForProvider.FixedNetworkSelector, 29 | To: reference.To{ 30 | List: &v1alpha1.NetworkV2List{}, 31 | Managed: &v1alpha1.NetworkV2{}, 32 | }, 33 | }) 34 | if err != nil { 35 | return errors.Wrap(err, "mg.Spec.ForProvider.FixedNetwork") 36 | } 37 | mg.Spec.ForProvider.FixedNetwork = reference.ToPtrValue(rsp.ResolvedValue) 38 | mg.Spec.ForProvider.FixedNetworkRef = rsp.ResolvedReference 39 | 40 | rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ 41 | CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.FixedSubnet), 42 | Extract: reference.ExternalName(), 43 | Reference: mg.Spec.ForProvider.FixedSubnetRef, 44 | Selector: mg.Spec.ForProvider.FixedSubnetSelector, 45 | To: reference.To{ 46 | List: &v1alpha1.SubnetV2List{}, 47 | Managed: &v1alpha1.SubnetV2{}, 48 | }, 49 | }) 50 | if err != nil { 51 | return errors.Wrap(err, "mg.Spec.ForProvider.FixedSubnet") 52 | } 53 | mg.Spec.ForProvider.FixedSubnet = reference.ToPtrValue(rsp.ResolvedValue) 54 | mg.Spec.ForProvider.FixedSubnetRef = rsp.ResolvedReference 55 | 56 | rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ 57 | CurrentValue: reference.FromPtrValue(mg.Spec.InitProvider.FixedNetwork), 58 | Extract: reference.ExternalName(), 59 | Reference: mg.Spec.InitProvider.FixedNetworkRef, 60 | Selector: mg.Spec.InitProvider.FixedNetworkSelector, 61 | To: reference.To{ 62 | List: &v1alpha1.NetworkV2List{}, 63 | Managed: &v1alpha1.NetworkV2{}, 64 | }, 65 | }) 66 | if err != nil { 67 | return errors.Wrap(err, "mg.Spec.InitProvider.FixedNetwork") 68 | } 69 | mg.Spec.InitProvider.FixedNetwork = reference.ToPtrValue(rsp.ResolvedValue) 70 | mg.Spec.InitProvider.FixedNetworkRef = rsp.ResolvedReference 71 | 72 | rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ 73 | CurrentValue: reference.FromPtrValue(mg.Spec.InitProvider.FixedSubnet), 74 | Extract: reference.ExternalName(), 75 | Reference: mg.Spec.InitProvider.FixedSubnetRef, 76 | Selector: mg.Spec.InitProvider.FixedSubnetSelector, 77 | To: reference.To{ 78 | List: &v1alpha1.SubnetV2List{}, 79 | Managed: &v1alpha1.SubnetV2{}, 80 | }, 81 | }) 82 | if err != nil { 83 | return errors.Wrap(err, "mg.Spec.InitProvider.FixedSubnet") 84 | } 85 | mg.Spec.InitProvider.FixedSubnet = reference.ToPtrValue(rsp.ResolvedValue) 86 | mg.Spec.InitProvider.FixedSubnetRef = rsp.ResolvedReference 87 | 88 | return nil 89 | } 90 | -------------------------------------------------------------------------------- /apis/containerinfra/v1alpha1/zz_groupversion_info.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | // +kubebuilder:object:generate=true 9 | // +groupName=containerinfra.openstack.crossplane.io 10 | // +versionName=v1alpha1 11 | package v1alpha1 12 | 13 | import ( 14 | "k8s.io/apimachinery/pkg/runtime/schema" 15 | "sigs.k8s.io/controller-runtime/pkg/scheme" 16 | ) 17 | 18 | // Package type metadata. 19 | const ( 20 | CRDGroup = "containerinfra.openstack.crossplane.io" 21 | CRDVersion = "v1alpha1" 22 | ) 23 | 24 | var ( 25 | // CRDGroupVersion is the API Group Version used to register the objects 26 | CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} 27 | 28 | // SchemeBuilder is used to add go types to the GroupVersionKind scheme 29 | SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} 30 | 31 | // AddToScheme adds the types in this group-version to the given scheme. 32 | AddToScheme = SchemeBuilder.AddToScheme 33 | ) 34 | -------------------------------------------------------------------------------- /apis/db/v1alpha1/zz_generated.conversion_hubs.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | package v1alpha1 9 | 10 | // Hub marks this type as a conversion hub. 11 | func (tr *ConfigurationV1) Hub() {} 12 | 13 | // Hub marks this type as a conversion hub. 14 | func (tr *DatabaseV1) Hub() {} 15 | 16 | // Hub marks this type as a conversion hub. 17 | func (tr *InstanceV1) Hub() {} 18 | 19 | // Hub marks this type as a conversion hub. 20 | func (tr *UserV1) Hub() {} 21 | -------------------------------------------------------------------------------- /apis/db/v1alpha1/zz_generated.managedlist.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | // Code generated by angryjet. DO NOT EDIT. 6 | 7 | package v1alpha1 8 | 9 | import resource "github.com/crossplane/crossplane-runtime/pkg/resource" 10 | 11 | // GetItems of this ConfigurationV1List. 12 | func (l *ConfigurationV1List) GetItems() []resource.Managed { 13 | items := make([]resource.Managed, len(l.Items)) 14 | for i := range l.Items { 15 | items[i] = &l.Items[i] 16 | } 17 | return items 18 | } 19 | 20 | // GetItems of this DatabaseV1List. 21 | func (l *DatabaseV1List) GetItems() []resource.Managed { 22 | items := make([]resource.Managed, len(l.Items)) 23 | for i := range l.Items { 24 | items[i] = &l.Items[i] 25 | } 26 | return items 27 | } 28 | 29 | // GetItems of this InstanceV1List. 30 | func (l *InstanceV1List) GetItems() []resource.Managed { 31 | items := make([]resource.Managed, len(l.Items)) 32 | for i := range l.Items { 33 | items[i] = &l.Items[i] 34 | } 35 | return items 36 | } 37 | 38 | // GetItems of this UserV1List. 39 | func (l *UserV1List) GetItems() []resource.Managed { 40 | items := make([]resource.Managed, len(l.Items)) 41 | for i := range l.Items { 42 | items[i] = &l.Items[i] 43 | } 44 | return items 45 | } 46 | -------------------------------------------------------------------------------- /apis/db/v1alpha1/zz_groupversion_info.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | // +kubebuilder:object:generate=true 9 | // +groupName=db.openstack.crossplane.io 10 | // +versionName=v1alpha1 11 | package v1alpha1 12 | 13 | import ( 14 | "k8s.io/apimachinery/pkg/runtime/schema" 15 | "sigs.k8s.io/controller-runtime/pkg/scheme" 16 | ) 17 | 18 | // Package type metadata. 19 | const ( 20 | CRDGroup = "db.openstack.crossplane.io" 21 | CRDVersion = "v1alpha1" 22 | ) 23 | 24 | var ( 25 | // CRDGroupVersion is the API Group Version used to register the objects 26 | CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} 27 | 28 | // SchemeBuilder is used to add go types to the GroupVersionKind scheme 29 | SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} 30 | 31 | // AddToScheme adds the types in this group-version to the given scheme. 32 | AddToScheme = SchemeBuilder.AddToScheme 33 | ) 34 | -------------------------------------------------------------------------------- /apis/dns/v1alpha1/zz_generated.conversion_hubs.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | package v1alpha1 9 | 10 | // Hub marks this type as a conversion hub. 11 | func (tr *RecordsetV2) Hub() {} 12 | 13 | // Hub marks this type as a conversion hub. 14 | func (tr *TransferAcceptV2) Hub() {} 15 | 16 | // Hub marks this type as a conversion hub. 17 | func (tr *TransferRequestV2) Hub() {} 18 | 19 | // Hub marks this type as a conversion hub. 20 | func (tr *ZoneV2) Hub() {} 21 | -------------------------------------------------------------------------------- /apis/dns/v1alpha1/zz_generated.managedlist.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | // Code generated by angryjet. DO NOT EDIT. 6 | 7 | package v1alpha1 8 | 9 | import resource "github.com/crossplane/crossplane-runtime/pkg/resource" 10 | 11 | // GetItems of this RecordsetV2List. 12 | func (l *RecordsetV2List) GetItems() []resource.Managed { 13 | items := make([]resource.Managed, len(l.Items)) 14 | for i := range l.Items { 15 | items[i] = &l.Items[i] 16 | } 17 | return items 18 | } 19 | 20 | // GetItems of this TransferAcceptV2List. 21 | func (l *TransferAcceptV2List) GetItems() []resource.Managed { 22 | items := make([]resource.Managed, len(l.Items)) 23 | for i := range l.Items { 24 | items[i] = &l.Items[i] 25 | } 26 | return items 27 | } 28 | 29 | // GetItems of this TransferRequestV2List. 30 | func (l *TransferRequestV2List) GetItems() []resource.Managed { 31 | items := make([]resource.Managed, len(l.Items)) 32 | for i := range l.Items { 33 | items[i] = &l.Items[i] 34 | } 35 | return items 36 | } 37 | 38 | // GetItems of this ZoneV2List. 39 | func (l *ZoneV2List) GetItems() []resource.Managed { 40 | items := make([]resource.Managed, len(l.Items)) 41 | for i := range l.Items { 42 | items[i] = &l.Items[i] 43 | } 44 | return items 45 | } 46 | -------------------------------------------------------------------------------- /apis/dns/v1alpha1/zz_groupversion_info.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | // +kubebuilder:object:generate=true 9 | // +groupName=dns.openstack.crossplane.io 10 | // +versionName=v1alpha1 11 | package v1alpha1 12 | 13 | import ( 14 | "k8s.io/apimachinery/pkg/runtime/schema" 15 | "sigs.k8s.io/controller-runtime/pkg/scheme" 16 | ) 17 | 18 | // Package type metadata. 19 | const ( 20 | CRDGroup = "dns.openstack.crossplane.io" 21 | CRDVersion = "v1alpha1" 22 | ) 23 | 24 | var ( 25 | // CRDGroupVersion is the API Group Version used to register the objects 26 | CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} 27 | 28 | // SchemeBuilder is used to add go types to the GroupVersionKind scheme 29 | SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} 30 | 31 | // AddToScheme adds the types in this group-version to the given scheme. 32 | AddToScheme = SchemeBuilder.AddToScheme 33 | ) 34 | -------------------------------------------------------------------------------- /apis/fw/v1alpha1/zz_generated.conversion_hubs.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | package v1alpha1 9 | 10 | // Hub marks this type as a conversion hub. 11 | func (tr *GroupV2) Hub() {} 12 | 13 | // Hub marks this type as a conversion hub. 14 | func (tr *PolicyV2) Hub() {} 15 | 16 | // Hub marks this type as a conversion hub. 17 | func (tr *RuleV2) Hub() {} 18 | -------------------------------------------------------------------------------- /apis/fw/v1alpha1/zz_generated.managedlist.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | // Code generated by angryjet. DO NOT EDIT. 6 | 7 | package v1alpha1 8 | 9 | import resource "github.com/crossplane/crossplane-runtime/pkg/resource" 10 | 11 | // GetItems of this GroupV2List. 12 | func (l *GroupV2List) GetItems() []resource.Managed { 13 | items := make([]resource.Managed, len(l.Items)) 14 | for i := range l.Items { 15 | items[i] = &l.Items[i] 16 | } 17 | return items 18 | } 19 | 20 | // GetItems of this PolicyV2List. 21 | func (l *PolicyV2List) GetItems() []resource.Managed { 22 | items := make([]resource.Managed, len(l.Items)) 23 | for i := range l.Items { 24 | items[i] = &l.Items[i] 25 | } 26 | return items 27 | } 28 | 29 | // GetItems of this RuleV2List. 30 | func (l *RuleV2List) GetItems() []resource.Managed { 31 | items := make([]resource.Managed, len(l.Items)) 32 | for i := range l.Items { 33 | items[i] = &l.Items[i] 34 | } 35 | return items 36 | } 37 | -------------------------------------------------------------------------------- /apis/fw/v1alpha1/zz_groupversion_info.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | // +kubebuilder:object:generate=true 9 | // +groupName=fw.openstack.crossplane.io 10 | // +versionName=v1alpha1 11 | package v1alpha1 12 | 13 | import ( 14 | "k8s.io/apimachinery/pkg/runtime/schema" 15 | "sigs.k8s.io/controller-runtime/pkg/scheme" 16 | ) 17 | 18 | // Package type metadata. 19 | const ( 20 | CRDGroup = "fw.openstack.crossplane.io" 21 | CRDVersion = "v1alpha1" 22 | ) 23 | 24 | var ( 25 | // CRDGroupVersion is the API Group Version used to register the objects 26 | CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} 27 | 28 | // SchemeBuilder is used to add go types to the GroupVersionKind scheme 29 | SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} 30 | 31 | // AddToScheme adds the types in this group-version to the given scheme. 32 | AddToScheme = SchemeBuilder.AddToScheme 33 | ) 34 | -------------------------------------------------------------------------------- /apis/generate.go: -------------------------------------------------------------------------------- 1 | //go:build generate 2 | // +build generate 3 | 4 | // NOTE: See the below link for details on what is happening here. 5 | // https://github.com/golang/go/wiki/Modules#how-can-i-track-tool-dependencies-for-a-module 6 | 7 | // Remove existing CRDs 8 | //go:generate rm -rf ../package/crds 9 | 10 | // Remove generated files 11 | //go:generate bash -c "find . -iname 'zz_*' -delete" 12 | //go:generate bash -c "find . \\( -iname 'zz_generated.conversion_hubs.go' -o -iname 'zz_generated.conversion_spokes.go' \\) -delete" 13 | //go:generate bash -c "find . -type d -empty -delete" 14 | //go:generate bash -c "find ../internal/controller -iname 'zz_*' -delete" 15 | //go:generate bash -c "find ../internal/controller -type d -empty -delete" 16 | //go:generate rm -rf ../examples-generated 17 | 18 | // Generate documentation from Terraform docs. 19 | //go:generate go run github.com/crossplane/upjet/cmd/scraper -n ${TERRAFORM_PROVIDER_SOURCE} -r ../.work/terraform-provider-openstack/${TERRAFORM_DOCS_PATH} -o ../config/provider-metadata.yaml --prelude-xpath "//text()[contains(., \"subcategory\")]" 20 | 21 | // Run Upjet generator 22 | //go:generate go run ../cmd/generator/main.go .. 23 | 24 | // Generate deepcopy methodsets and CRD manifests 25 | //go:generate go run -tags generate sigs.k8s.io/controller-tools/cmd/controller-gen object:headerFile=../hack/boilerplate.go.txt paths=./... crd:allowDangerousTypes=true,crdVersions=v1 output:artifacts:config=../package/crds 26 | 27 | // Generate crossplane-runtime methodsets (resource.Claim, etc) 28 | //go:generate go run -tags generate github.com/crossplane/crossplane-tools/cmd/angryjet generate-methodsets --header-file=../hack/boilerplate.go.txt ./... 29 | 30 | // TODO: Reenable with a more recent upjet version 31 | // Run upjet's transformer for the generated resolvers to get rid of the cross 32 | // API-group imports and to prevent import cycles 33 | //go:disabled:generate go run github.com/crossplane/upjet/cmd/resolver -g openstack.crossplane.io -a github.com/upbound/provider-openstack/internal/apis -s 34 | 35 | package apis 36 | 37 | import ( 38 | _ "sigs.k8s.io/controller-tools/cmd/controller-gen" //nolint:typecheck 39 | 40 | _ "github.com/crossplane/crossplane-tools/cmd/angryjet" //nolint:typecheck 41 | 42 | _ "github.com/crossplane/upjet/cmd/scraper" 43 | ) 44 | -------------------------------------------------------------------------------- /apis/identity/v1alpha1/zz_generated.conversion_hubs.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | package v1alpha1 9 | 10 | // Hub marks this type as a conversion hub. 11 | func (tr *ApplicationCredentialV3) Hub() {} 12 | 13 | // Hub marks this type as a conversion hub. 14 | func (tr *EC2CredentialV3) Hub() {} 15 | 16 | // Hub marks this type as a conversion hub. 17 | func (tr *EndpointV3) Hub() {} 18 | 19 | // Hub marks this type as a conversion hub. 20 | func (tr *GroupV3) Hub() {} 21 | 22 | // Hub marks this type as a conversion hub. 23 | func (tr *InheritRoleAssignmentV3) Hub() {} 24 | 25 | // Hub marks this type as a conversion hub. 26 | func (tr *ProjectV3) Hub() {} 27 | 28 | // Hub marks this type as a conversion hub. 29 | func (tr *RoleAssignmentV3) Hub() {} 30 | 31 | // Hub marks this type as a conversion hub. 32 | func (tr *RoleV3) Hub() {} 33 | 34 | // Hub marks this type as a conversion hub. 35 | func (tr *ServiceV3) Hub() {} 36 | 37 | // Hub marks this type as a conversion hub. 38 | func (tr *UserMembershipV3) Hub() {} 39 | 40 | // Hub marks this type as a conversion hub. 41 | func (tr *UserV3) Hub() {} 42 | -------------------------------------------------------------------------------- /apis/identity/v1alpha1/zz_generated.managedlist.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | // Code generated by angryjet. DO NOT EDIT. 6 | 7 | package v1alpha1 8 | 9 | import resource "github.com/crossplane/crossplane-runtime/pkg/resource" 10 | 11 | // GetItems of this ApplicationCredentialV3List. 12 | func (l *ApplicationCredentialV3List) GetItems() []resource.Managed { 13 | items := make([]resource.Managed, len(l.Items)) 14 | for i := range l.Items { 15 | items[i] = &l.Items[i] 16 | } 17 | return items 18 | } 19 | 20 | // GetItems of this EC2CredentialV3List. 21 | func (l *EC2CredentialV3List) GetItems() []resource.Managed { 22 | items := make([]resource.Managed, len(l.Items)) 23 | for i := range l.Items { 24 | items[i] = &l.Items[i] 25 | } 26 | return items 27 | } 28 | 29 | // GetItems of this EndpointV3List. 30 | func (l *EndpointV3List) GetItems() []resource.Managed { 31 | items := make([]resource.Managed, len(l.Items)) 32 | for i := range l.Items { 33 | items[i] = &l.Items[i] 34 | } 35 | return items 36 | } 37 | 38 | // GetItems of this GroupV3List. 39 | func (l *GroupV3List) GetItems() []resource.Managed { 40 | items := make([]resource.Managed, len(l.Items)) 41 | for i := range l.Items { 42 | items[i] = &l.Items[i] 43 | } 44 | return items 45 | } 46 | 47 | // GetItems of this InheritRoleAssignmentV3List. 48 | func (l *InheritRoleAssignmentV3List) GetItems() []resource.Managed { 49 | items := make([]resource.Managed, len(l.Items)) 50 | for i := range l.Items { 51 | items[i] = &l.Items[i] 52 | } 53 | return items 54 | } 55 | 56 | // GetItems of this ProjectV3List. 57 | func (l *ProjectV3List) GetItems() []resource.Managed { 58 | items := make([]resource.Managed, len(l.Items)) 59 | for i := range l.Items { 60 | items[i] = &l.Items[i] 61 | } 62 | return items 63 | } 64 | 65 | // GetItems of this RoleAssignmentV3List. 66 | func (l *RoleAssignmentV3List) GetItems() []resource.Managed { 67 | items := make([]resource.Managed, len(l.Items)) 68 | for i := range l.Items { 69 | items[i] = &l.Items[i] 70 | } 71 | return items 72 | } 73 | 74 | // GetItems of this RoleV3List. 75 | func (l *RoleV3List) GetItems() []resource.Managed { 76 | items := make([]resource.Managed, len(l.Items)) 77 | for i := range l.Items { 78 | items[i] = &l.Items[i] 79 | } 80 | return items 81 | } 82 | 83 | // GetItems of this ServiceV3List. 84 | func (l *ServiceV3List) GetItems() []resource.Managed { 85 | items := make([]resource.Managed, len(l.Items)) 86 | for i := range l.Items { 87 | items[i] = &l.Items[i] 88 | } 89 | return items 90 | } 91 | 92 | // GetItems of this UserMembershipV3List. 93 | func (l *UserMembershipV3List) GetItems() []resource.Managed { 94 | items := make([]resource.Managed, len(l.Items)) 95 | for i := range l.Items { 96 | items[i] = &l.Items[i] 97 | } 98 | return items 99 | } 100 | 101 | // GetItems of this UserV3List. 102 | func (l *UserV3List) GetItems() []resource.Managed { 103 | items := make([]resource.Managed, len(l.Items)) 104 | for i := range l.Items { 105 | items[i] = &l.Items[i] 106 | } 107 | return items 108 | } 109 | -------------------------------------------------------------------------------- /apis/identity/v1alpha1/zz_groupversion_info.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | // +kubebuilder:object:generate=true 9 | // +groupName=identity.openstack.crossplane.io 10 | // +versionName=v1alpha1 11 | package v1alpha1 12 | 13 | import ( 14 | "k8s.io/apimachinery/pkg/runtime/schema" 15 | "sigs.k8s.io/controller-runtime/pkg/scheme" 16 | ) 17 | 18 | // Package type metadata. 19 | const ( 20 | CRDGroup = "identity.openstack.crossplane.io" 21 | CRDVersion = "v1alpha1" 22 | ) 23 | 24 | var ( 25 | // CRDGroupVersion is the API Group Version used to register the objects 26 | CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} 27 | 28 | // SchemeBuilder is used to add go types to the GroupVersionKind scheme 29 | SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} 30 | 31 | // AddToScheme adds the types in this group-version to the given scheme. 32 | AddToScheme = SchemeBuilder.AddToScheme 33 | ) 34 | -------------------------------------------------------------------------------- /apis/images/v1alpha1/zz_generated.conversion_hubs.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | package v1alpha1 9 | 10 | // Hub marks this type as a conversion hub. 11 | func (tr *ImageAccessAcceptV2) Hub() {} 12 | 13 | // Hub marks this type as a conversion hub. 14 | func (tr *ImageAccessV2) Hub() {} 15 | 16 | // Hub marks this type as a conversion hub. 17 | func (tr *ImageV2) Hub() {} 18 | -------------------------------------------------------------------------------- /apis/images/v1alpha1/zz_generated.managedlist.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | // Code generated by angryjet. DO NOT EDIT. 6 | 7 | package v1alpha1 8 | 9 | import resource "github.com/crossplane/crossplane-runtime/pkg/resource" 10 | 11 | // GetItems of this ImageAccessAcceptV2List. 12 | func (l *ImageAccessAcceptV2List) GetItems() []resource.Managed { 13 | items := make([]resource.Managed, len(l.Items)) 14 | for i := range l.Items { 15 | items[i] = &l.Items[i] 16 | } 17 | return items 18 | } 19 | 20 | // GetItems of this ImageAccessV2List. 21 | func (l *ImageAccessV2List) GetItems() []resource.Managed { 22 | items := make([]resource.Managed, len(l.Items)) 23 | for i := range l.Items { 24 | items[i] = &l.Items[i] 25 | } 26 | return items 27 | } 28 | 29 | // GetItems of this ImageV2List. 30 | func (l *ImageV2List) GetItems() []resource.Managed { 31 | items := make([]resource.Managed, len(l.Items)) 32 | for i := range l.Items { 33 | items[i] = &l.Items[i] 34 | } 35 | return items 36 | } 37 | -------------------------------------------------------------------------------- /apis/images/v1alpha1/zz_generated.resolvers.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | // Code generated by angryjet. DO NOT EDIT. 6 | 7 | package v1alpha1 8 | 9 | import ( 10 | "context" 11 | reference "github.com/crossplane/crossplane-runtime/pkg/reference" 12 | resource "github.com/crossplane/upjet/pkg/resource" 13 | errors "github.com/pkg/errors" 14 | client "sigs.k8s.io/controller-runtime/pkg/client" 15 | ) 16 | 17 | // ResolveReferences of this ImageAccessV2. 18 | func (mg *ImageAccessV2) ResolveReferences(ctx context.Context, c client.Reader) error { 19 | r := reference.NewAPIResolver(c, mg) 20 | 21 | var rsp reference.ResolutionResponse 22 | var err error 23 | 24 | rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ 25 | CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.ImageID), 26 | Extract: resource.ExtractResourceID(), 27 | Reference: mg.Spec.ForProvider.ImageIDRef, 28 | Selector: mg.Spec.ForProvider.ImageIDSelector, 29 | To: reference.To{ 30 | List: &ImageV2List{}, 31 | Managed: &ImageV2{}, 32 | }, 33 | }) 34 | if err != nil { 35 | return errors.Wrap(err, "mg.Spec.ForProvider.ImageID") 36 | } 37 | mg.Spec.ForProvider.ImageID = reference.ToPtrValue(rsp.ResolvedValue) 38 | mg.Spec.ForProvider.ImageIDRef = rsp.ResolvedReference 39 | 40 | rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ 41 | CurrentValue: reference.FromPtrValue(mg.Spec.InitProvider.ImageID), 42 | Extract: resource.ExtractResourceID(), 43 | Reference: mg.Spec.InitProvider.ImageIDRef, 44 | Selector: mg.Spec.InitProvider.ImageIDSelector, 45 | To: reference.To{ 46 | List: &ImageV2List{}, 47 | Managed: &ImageV2{}, 48 | }, 49 | }) 50 | if err != nil { 51 | return errors.Wrap(err, "mg.Spec.InitProvider.ImageID") 52 | } 53 | mg.Spec.InitProvider.ImageID = reference.ToPtrValue(rsp.ResolvedValue) 54 | mg.Spec.InitProvider.ImageIDRef = rsp.ResolvedReference 55 | 56 | return nil 57 | } 58 | -------------------------------------------------------------------------------- /apis/images/v1alpha1/zz_groupversion_info.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | // +kubebuilder:object:generate=true 9 | // +groupName=images.openstack.crossplane.io 10 | // +versionName=v1alpha1 11 | package v1alpha1 12 | 13 | import ( 14 | "k8s.io/apimachinery/pkg/runtime/schema" 15 | "sigs.k8s.io/controller-runtime/pkg/scheme" 16 | ) 17 | 18 | // Package type metadata. 19 | const ( 20 | CRDGroup = "images.openstack.crossplane.io" 21 | CRDVersion = "v1alpha1" 22 | ) 23 | 24 | var ( 25 | // CRDGroupVersion is the API Group Version used to register the objects 26 | CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} 27 | 28 | // SchemeBuilder is used to add go types to the GroupVersionKind scheme 29 | SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} 30 | 31 | // AddToScheme adds the types in this group-version to the given scheme. 32 | AddToScheme = SchemeBuilder.AddToScheme 33 | ) 34 | -------------------------------------------------------------------------------- /apis/keymanager/v1alpha1/zz_generated.conversion_hubs.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | package v1alpha1 9 | 10 | // Hub marks this type as a conversion hub. 11 | func (tr *ContainerV1) Hub() {} 12 | 13 | // Hub marks this type as a conversion hub. 14 | func (tr *OrderV1) Hub() {} 15 | 16 | // Hub marks this type as a conversion hub. 17 | func (tr *SecretV1) Hub() {} 18 | -------------------------------------------------------------------------------- /apis/keymanager/v1alpha1/zz_generated.managedlist.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | // Code generated by angryjet. DO NOT EDIT. 6 | 7 | package v1alpha1 8 | 9 | import resource "github.com/crossplane/crossplane-runtime/pkg/resource" 10 | 11 | // GetItems of this ContainerV1List. 12 | func (l *ContainerV1List) GetItems() []resource.Managed { 13 | items := make([]resource.Managed, len(l.Items)) 14 | for i := range l.Items { 15 | items[i] = &l.Items[i] 16 | } 17 | return items 18 | } 19 | 20 | // GetItems of this OrderV1List. 21 | func (l *OrderV1List) GetItems() []resource.Managed { 22 | items := make([]resource.Managed, len(l.Items)) 23 | for i := range l.Items { 24 | items[i] = &l.Items[i] 25 | } 26 | return items 27 | } 28 | 29 | // GetItems of this SecretV1List. 30 | func (l *SecretV1List) GetItems() []resource.Managed { 31 | items := make([]resource.Managed, len(l.Items)) 32 | for i := range l.Items { 33 | items[i] = &l.Items[i] 34 | } 35 | return items 36 | } 37 | -------------------------------------------------------------------------------- /apis/keymanager/v1alpha1/zz_generated.resolvers.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | // Code generated by angryjet. DO NOT EDIT. 6 | 7 | package v1alpha1 8 | 9 | import ( 10 | "context" 11 | reference "github.com/crossplane/crossplane-runtime/pkg/reference" 12 | resource "github.com/crossplane/upjet/pkg/resource" 13 | errors "github.com/pkg/errors" 14 | client "sigs.k8s.io/controller-runtime/pkg/client" 15 | ) 16 | 17 | // ResolveReferences of this ContainerV1. 18 | func (mg *ContainerV1) ResolveReferences(ctx context.Context, c client.Reader) error { 19 | r := reference.NewAPIResolver(c, mg) 20 | 21 | var rsp reference.ResolutionResponse 22 | var err error 23 | 24 | for i3 := 0; i3 < len(mg.Spec.ForProvider.SecretRefs); i3++ { 25 | rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ 26 | CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.SecretRefs[i3].SecretRef), 27 | Extract: resource.ExtractParamPath("secret_ref", true), 28 | Reference: mg.Spec.ForProvider.SecretRefs[i3].SecretRefRef, 29 | Selector: mg.Spec.ForProvider.SecretRefs[i3].SecretRefSelector, 30 | To: reference.To{ 31 | List: &SecretV1List{}, 32 | Managed: &SecretV1{}, 33 | }, 34 | }) 35 | if err != nil { 36 | return errors.Wrap(err, "mg.Spec.ForProvider.SecretRefs[i3].SecretRef") 37 | } 38 | mg.Spec.ForProvider.SecretRefs[i3].SecretRef = reference.ToPtrValue(rsp.ResolvedValue) 39 | mg.Spec.ForProvider.SecretRefs[i3].SecretRefRef = rsp.ResolvedReference 40 | 41 | } 42 | for i3 := 0; i3 < len(mg.Spec.InitProvider.SecretRefs); i3++ { 43 | rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ 44 | CurrentValue: reference.FromPtrValue(mg.Spec.InitProvider.SecretRefs[i3].SecretRef), 45 | Extract: resource.ExtractParamPath("secret_ref", true), 46 | Reference: mg.Spec.InitProvider.SecretRefs[i3].SecretRefRef, 47 | Selector: mg.Spec.InitProvider.SecretRefs[i3].SecretRefSelector, 48 | To: reference.To{ 49 | List: &SecretV1List{}, 50 | Managed: &SecretV1{}, 51 | }, 52 | }) 53 | if err != nil { 54 | return errors.Wrap(err, "mg.Spec.InitProvider.SecretRefs[i3].SecretRef") 55 | } 56 | mg.Spec.InitProvider.SecretRefs[i3].SecretRef = reference.ToPtrValue(rsp.ResolvedValue) 57 | mg.Spec.InitProvider.SecretRefs[i3].SecretRefRef = rsp.ResolvedReference 58 | 59 | } 60 | 61 | return nil 62 | } 63 | -------------------------------------------------------------------------------- /apis/keymanager/v1alpha1/zz_groupversion_info.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | // +kubebuilder:object:generate=true 9 | // +groupName=keymanager.openstack.crossplane.io 10 | // +versionName=v1alpha1 11 | package v1alpha1 12 | 13 | import ( 14 | "k8s.io/apimachinery/pkg/runtime/schema" 15 | "sigs.k8s.io/controller-runtime/pkg/scheme" 16 | ) 17 | 18 | // Package type metadata. 19 | const ( 20 | CRDGroup = "keymanager.openstack.crossplane.io" 21 | CRDVersion = "v1alpha1" 22 | ) 23 | 24 | var ( 25 | // CRDGroupVersion is the API Group Version used to register the objects 26 | CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} 27 | 28 | // SchemeBuilder is used to add go types to the GroupVersionKind scheme 29 | SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} 30 | 31 | // AddToScheme adds the types in this group-version to the given scheme. 32 | AddToScheme = SchemeBuilder.AddToScheme 33 | ) 34 | -------------------------------------------------------------------------------- /apis/lb/v1alpha1/zz_generated.conversion_hubs.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | package v1alpha1 9 | 10 | // Hub marks this type as a conversion hub. 11 | func (tr *L7PolicyV2) Hub() {} 12 | 13 | // Hub marks this type as a conversion hub. 14 | func (tr *L7RuleV2) Hub() {} 15 | 16 | // Hub marks this type as a conversion hub. 17 | func (tr *ListenerV2) Hub() {} 18 | 19 | // Hub marks this type as a conversion hub. 20 | func (tr *LoadbalancerV2) Hub() {} 21 | 22 | // Hub marks this type as a conversion hub. 23 | func (tr *MembersV2) Hub() {} 24 | 25 | // Hub marks this type as a conversion hub. 26 | func (tr *MemberV2) Hub() {} 27 | 28 | // Hub marks this type as a conversion hub. 29 | func (tr *MonitorV2) Hub() {} 30 | 31 | // Hub marks this type as a conversion hub. 32 | func (tr *PoolV2) Hub() {} 33 | 34 | // Hub marks this type as a conversion hub. 35 | func (tr *QuotaV2) Hub() {} 36 | -------------------------------------------------------------------------------- /apis/lb/v1alpha1/zz_generated.managedlist.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | // Code generated by angryjet. DO NOT EDIT. 6 | 7 | package v1alpha1 8 | 9 | import resource "github.com/crossplane/crossplane-runtime/pkg/resource" 10 | 11 | // GetItems of this L7PolicyV2List. 12 | func (l *L7PolicyV2List) GetItems() []resource.Managed { 13 | items := make([]resource.Managed, len(l.Items)) 14 | for i := range l.Items { 15 | items[i] = &l.Items[i] 16 | } 17 | return items 18 | } 19 | 20 | // GetItems of this L7RuleV2List. 21 | func (l *L7RuleV2List) GetItems() []resource.Managed { 22 | items := make([]resource.Managed, len(l.Items)) 23 | for i := range l.Items { 24 | items[i] = &l.Items[i] 25 | } 26 | return items 27 | } 28 | 29 | // GetItems of this ListenerV2List. 30 | func (l *ListenerV2List) GetItems() []resource.Managed { 31 | items := make([]resource.Managed, len(l.Items)) 32 | for i := range l.Items { 33 | items[i] = &l.Items[i] 34 | } 35 | return items 36 | } 37 | 38 | // GetItems of this LoadbalancerV2List. 39 | func (l *LoadbalancerV2List) GetItems() []resource.Managed { 40 | items := make([]resource.Managed, len(l.Items)) 41 | for i := range l.Items { 42 | items[i] = &l.Items[i] 43 | } 44 | return items 45 | } 46 | 47 | // GetItems of this MemberV2List. 48 | func (l *MemberV2List) GetItems() []resource.Managed { 49 | items := make([]resource.Managed, len(l.Items)) 50 | for i := range l.Items { 51 | items[i] = &l.Items[i] 52 | } 53 | return items 54 | } 55 | 56 | // GetItems of this MembersV2List. 57 | func (l *MembersV2List) GetItems() []resource.Managed { 58 | items := make([]resource.Managed, len(l.Items)) 59 | for i := range l.Items { 60 | items[i] = &l.Items[i] 61 | } 62 | return items 63 | } 64 | 65 | // GetItems of this MonitorV2List. 66 | func (l *MonitorV2List) GetItems() []resource.Managed { 67 | items := make([]resource.Managed, len(l.Items)) 68 | for i := range l.Items { 69 | items[i] = &l.Items[i] 70 | } 71 | return items 72 | } 73 | 74 | // GetItems of this PoolV2List. 75 | func (l *PoolV2List) GetItems() []resource.Managed { 76 | items := make([]resource.Managed, len(l.Items)) 77 | for i := range l.Items { 78 | items[i] = &l.Items[i] 79 | } 80 | return items 81 | } 82 | 83 | // GetItems of this QuotaV2List. 84 | func (l *QuotaV2List) GetItems() []resource.Managed { 85 | items := make([]resource.Managed, len(l.Items)) 86 | for i := range l.Items { 87 | items[i] = &l.Items[i] 88 | } 89 | return items 90 | } 91 | -------------------------------------------------------------------------------- /apis/lb/v1alpha1/zz_groupversion_info.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | // +kubebuilder:object:generate=true 9 | // +groupName=lb.openstack.crossplane.io 10 | // +versionName=v1alpha1 11 | package v1alpha1 12 | 13 | import ( 14 | "k8s.io/apimachinery/pkg/runtime/schema" 15 | "sigs.k8s.io/controller-runtime/pkg/scheme" 16 | ) 17 | 18 | // Package type metadata. 19 | const ( 20 | CRDGroup = "lb.openstack.crossplane.io" 21 | CRDVersion = "v1alpha1" 22 | ) 23 | 24 | var ( 25 | // CRDGroupVersion is the API Group Version used to register the objects 26 | CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} 27 | 28 | // SchemeBuilder is used to add go types to the GroupVersionKind scheme 29 | SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} 30 | 31 | // AddToScheme adds the types in this group-version to the given scheme. 32 | AddToScheme = SchemeBuilder.AddToScheme 33 | ) 34 | -------------------------------------------------------------------------------- /apis/networking/v1alpha1/zz_generated.conversion_hubs.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | package v1alpha1 9 | 10 | // Hub marks this type as a conversion hub. 11 | func (tr *AddressscopeV2) Hub() {} 12 | 13 | // Hub marks this type as a conversion hub. 14 | func (tr *FloatingipAssociateV2) Hub() {} 15 | 16 | // Hub marks this type as a conversion hub. 17 | func (tr *FloatingipV2) Hub() {} 18 | 19 | // Hub marks this type as a conversion hub. 20 | func (tr *NetworkV2) Hub() {} 21 | 22 | // Hub marks this type as a conversion hub. 23 | func (tr *PortforwardingV2) Hub() {} 24 | 25 | // Hub marks this type as a conversion hub. 26 | func (tr *PortSecgroupAssociateV2) Hub() {} 27 | 28 | // Hub marks this type as a conversion hub. 29 | func (tr *PortV2) Hub() {} 30 | 31 | // Hub marks this type as a conversion hub. 32 | func (tr *QosBandwidthLimitRuleV2) Hub() {} 33 | 34 | // Hub marks this type as a conversion hub. 35 | func (tr *QosDscpMarkingRuleV2) Hub() {} 36 | 37 | // Hub marks this type as a conversion hub. 38 | func (tr *QosMinimumBandwidthRuleV2) Hub() {} 39 | 40 | // Hub marks this type as a conversion hub. 41 | func (tr *QosPolicyV2) Hub() {} 42 | 43 | // Hub marks this type as a conversion hub. 44 | func (tr *QuotaV2) Hub() {} 45 | 46 | // Hub marks this type as a conversion hub. 47 | func (tr *RbacPolicyV2) Hub() {} 48 | 49 | // Hub marks this type as a conversion hub. 50 | func (tr *RouterInterfaceV2) Hub() {} 51 | 52 | // Hub marks this type as a conversion hub. 53 | func (tr *RouterRouteV2) Hub() {} 54 | 55 | // Hub marks this type as a conversion hub. 56 | func (tr *RouterV2) Hub() {} 57 | 58 | // Hub marks this type as a conversion hub. 59 | func (tr *SecgroupRuleV2) Hub() {} 60 | 61 | // Hub marks this type as a conversion hub. 62 | func (tr *SecgroupV2) Hub() {} 63 | 64 | // Hub marks this type as a conversion hub. 65 | func (tr *SubnetpoolV2) Hub() {} 66 | 67 | // Hub marks this type as a conversion hub. 68 | func (tr *SubnetRouteV2) Hub() {} 69 | 70 | // Hub marks this type as a conversion hub. 71 | func (tr *SubnetV2) Hub() {} 72 | 73 | // Hub marks this type as a conversion hub. 74 | func (tr *TrunkV2) Hub() {} 75 | -------------------------------------------------------------------------------- /apis/networking/v1alpha1/zz_groupversion_info.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | // +kubebuilder:object:generate=true 9 | // +groupName=networking.openstack.crossplane.io 10 | // +versionName=v1alpha1 11 | package v1alpha1 12 | 13 | import ( 14 | "k8s.io/apimachinery/pkg/runtime/schema" 15 | "sigs.k8s.io/controller-runtime/pkg/scheme" 16 | ) 17 | 18 | // Package type metadata. 19 | const ( 20 | CRDGroup = "networking.openstack.crossplane.io" 21 | CRDVersion = "v1alpha1" 22 | ) 23 | 24 | var ( 25 | // CRDGroupVersion is the API Group Version used to register the objects 26 | CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} 27 | 28 | // SchemeBuilder is used to add go types to the GroupVersionKind scheme 29 | SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} 30 | 31 | // AddToScheme adds the types in this group-version to the given scheme. 32 | AddToScheme = SchemeBuilder.AddToScheme 33 | ) 34 | -------------------------------------------------------------------------------- /apis/objectstorage/v1alpha1/zz_generated.conversion_hubs.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | package v1alpha1 9 | 10 | // Hub marks this type as a conversion hub. 11 | func (tr *ContainerV1) Hub() {} 12 | 13 | // Hub marks this type as a conversion hub. 14 | func (tr *ObjectV1) Hub() {} 15 | 16 | // Hub marks this type as a conversion hub. 17 | func (tr *TempurlV1) Hub() {} 18 | -------------------------------------------------------------------------------- /apis/objectstorage/v1alpha1/zz_generated.managedlist.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | // Code generated by angryjet. DO NOT EDIT. 6 | 7 | package v1alpha1 8 | 9 | import resource "github.com/crossplane/crossplane-runtime/pkg/resource" 10 | 11 | // GetItems of this ContainerV1List. 12 | func (l *ContainerV1List) GetItems() []resource.Managed { 13 | items := make([]resource.Managed, len(l.Items)) 14 | for i := range l.Items { 15 | items[i] = &l.Items[i] 16 | } 17 | return items 18 | } 19 | 20 | // GetItems of this ObjectV1List. 21 | func (l *ObjectV1List) GetItems() []resource.Managed { 22 | items := make([]resource.Managed, len(l.Items)) 23 | for i := range l.Items { 24 | items[i] = &l.Items[i] 25 | } 26 | return items 27 | } 28 | 29 | // GetItems of this TempurlV1List. 30 | func (l *TempurlV1List) GetItems() []resource.Managed { 31 | items := make([]resource.Managed, len(l.Items)) 32 | for i := range l.Items { 33 | items[i] = &l.Items[i] 34 | } 35 | return items 36 | } 37 | -------------------------------------------------------------------------------- /apis/objectstorage/v1alpha1/zz_groupversion_info.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | // +kubebuilder:object:generate=true 9 | // +groupName=objectstorage.openstack.crossplane.io 10 | // +versionName=v1alpha1 11 | package v1alpha1 12 | 13 | import ( 14 | "k8s.io/apimachinery/pkg/runtime/schema" 15 | "sigs.k8s.io/controller-runtime/pkg/scheme" 16 | ) 17 | 18 | // Package type metadata. 19 | const ( 20 | CRDGroup = "objectstorage.openstack.crossplane.io" 21 | CRDVersion = "v1alpha1" 22 | ) 23 | 24 | var ( 25 | // CRDGroupVersion is the API Group Version used to register the objects 26 | CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} 27 | 28 | // SchemeBuilder is used to add go types to the GroupVersionKind scheme 29 | SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} 30 | 31 | // AddToScheme adds the types in this group-version to the given scheme. 32 | AddToScheme = SchemeBuilder.AddToScheme 33 | ) 34 | -------------------------------------------------------------------------------- /apis/orchestration/v1alpha1/zz_generated.conversion_hubs.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | package v1alpha1 9 | 10 | // Hub marks this type as a conversion hub. 11 | func (tr *StackV1) Hub() {} 12 | -------------------------------------------------------------------------------- /apis/orchestration/v1alpha1/zz_generated.managed.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | // Code generated by angryjet. DO NOT EDIT. 6 | 7 | package v1alpha1 8 | 9 | import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" 10 | 11 | // GetCondition of this StackV1. 12 | func (mg *StackV1) GetCondition(ct xpv1.ConditionType) xpv1.Condition { 13 | return mg.Status.GetCondition(ct) 14 | } 15 | 16 | // GetDeletionPolicy of this StackV1. 17 | func (mg *StackV1) GetDeletionPolicy() xpv1.DeletionPolicy { 18 | return mg.Spec.DeletionPolicy 19 | } 20 | 21 | // GetManagementPolicies of this StackV1. 22 | func (mg *StackV1) GetManagementPolicies() xpv1.ManagementPolicies { 23 | return mg.Spec.ManagementPolicies 24 | } 25 | 26 | // GetProviderConfigReference of this StackV1. 27 | func (mg *StackV1) GetProviderConfigReference() *xpv1.Reference { 28 | return mg.Spec.ProviderConfigReference 29 | } 30 | 31 | // GetPublishConnectionDetailsTo of this StackV1. 32 | func (mg *StackV1) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { 33 | return mg.Spec.PublishConnectionDetailsTo 34 | } 35 | 36 | // GetWriteConnectionSecretToReference of this StackV1. 37 | func (mg *StackV1) GetWriteConnectionSecretToReference() *xpv1.SecretReference { 38 | return mg.Spec.WriteConnectionSecretToReference 39 | } 40 | 41 | // SetConditions of this StackV1. 42 | func (mg *StackV1) SetConditions(c ...xpv1.Condition) { 43 | mg.Status.SetConditions(c...) 44 | } 45 | 46 | // SetDeletionPolicy of this StackV1. 47 | func (mg *StackV1) SetDeletionPolicy(r xpv1.DeletionPolicy) { 48 | mg.Spec.DeletionPolicy = r 49 | } 50 | 51 | // SetManagementPolicies of this StackV1. 52 | func (mg *StackV1) SetManagementPolicies(r xpv1.ManagementPolicies) { 53 | mg.Spec.ManagementPolicies = r 54 | } 55 | 56 | // SetProviderConfigReference of this StackV1. 57 | func (mg *StackV1) SetProviderConfigReference(r *xpv1.Reference) { 58 | mg.Spec.ProviderConfigReference = r 59 | } 60 | 61 | // SetPublishConnectionDetailsTo of this StackV1. 62 | func (mg *StackV1) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { 63 | mg.Spec.PublishConnectionDetailsTo = r 64 | } 65 | 66 | // SetWriteConnectionSecretToReference of this StackV1. 67 | func (mg *StackV1) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { 68 | mg.Spec.WriteConnectionSecretToReference = r 69 | } 70 | -------------------------------------------------------------------------------- /apis/orchestration/v1alpha1/zz_generated.managedlist.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | // Code generated by angryjet. DO NOT EDIT. 6 | 7 | package v1alpha1 8 | 9 | import resource "github.com/crossplane/crossplane-runtime/pkg/resource" 10 | 11 | // GetItems of this StackV1List. 12 | func (l *StackV1List) GetItems() []resource.Managed { 13 | items := make([]resource.Managed, len(l.Items)) 14 | for i := range l.Items { 15 | items[i] = &l.Items[i] 16 | } 17 | return items 18 | } 19 | -------------------------------------------------------------------------------- /apis/orchestration/v1alpha1/zz_groupversion_info.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | // +kubebuilder:object:generate=true 9 | // +groupName=orchestration.openstack.crossplane.io 10 | // +versionName=v1alpha1 11 | package v1alpha1 12 | 13 | import ( 14 | "k8s.io/apimachinery/pkg/runtime/schema" 15 | "sigs.k8s.io/controller-runtime/pkg/scheme" 16 | ) 17 | 18 | // Package type metadata. 19 | const ( 20 | CRDGroup = "orchestration.openstack.crossplane.io" 21 | CRDVersion = "v1alpha1" 22 | ) 23 | 24 | var ( 25 | // CRDGroupVersion is the API Group Version used to register the objects 26 | CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} 27 | 28 | // SchemeBuilder is used to add go types to the GroupVersionKind scheme 29 | SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} 30 | 31 | // AddToScheme adds the types in this group-version to the given scheme. 32 | AddToScheme = SchemeBuilder.AddToScheme 33 | ) 34 | -------------------------------------------------------------------------------- /apis/sharedfilesystem/v1alpha1/zz_generated.conversion_hubs.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | package v1alpha1 9 | 10 | // Hub marks this type as a conversion hub. 11 | func (tr *SecurityserviceV2) Hub() {} 12 | 13 | // Hub marks this type as a conversion hub. 14 | func (tr *ShareAccessV2) Hub() {} 15 | 16 | // Hub marks this type as a conversion hub. 17 | func (tr *SharenetworkV2) Hub() {} 18 | 19 | // Hub marks this type as a conversion hub. 20 | func (tr *ShareV2) Hub() {} 21 | -------------------------------------------------------------------------------- /apis/sharedfilesystem/v1alpha1/zz_generated.managedlist.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | // Code generated by angryjet. DO NOT EDIT. 6 | 7 | package v1alpha1 8 | 9 | import resource "github.com/crossplane/crossplane-runtime/pkg/resource" 10 | 11 | // GetItems of this SecurityserviceV2List. 12 | func (l *SecurityserviceV2List) GetItems() []resource.Managed { 13 | items := make([]resource.Managed, len(l.Items)) 14 | for i := range l.Items { 15 | items[i] = &l.Items[i] 16 | } 17 | return items 18 | } 19 | 20 | // GetItems of this ShareAccessV2List. 21 | func (l *ShareAccessV2List) GetItems() []resource.Managed { 22 | items := make([]resource.Managed, len(l.Items)) 23 | for i := range l.Items { 24 | items[i] = &l.Items[i] 25 | } 26 | return items 27 | } 28 | 29 | // GetItems of this ShareV2List. 30 | func (l *ShareV2List) GetItems() []resource.Managed { 31 | items := make([]resource.Managed, len(l.Items)) 32 | for i := range l.Items { 33 | items[i] = &l.Items[i] 34 | } 35 | return items 36 | } 37 | 38 | // GetItems of this SharenetworkV2List. 39 | func (l *SharenetworkV2List) GetItems() []resource.Managed { 40 | items := make([]resource.Managed, len(l.Items)) 41 | for i := range l.Items { 42 | items[i] = &l.Items[i] 43 | } 44 | return items 45 | } 46 | -------------------------------------------------------------------------------- /apis/sharedfilesystem/v1alpha1/zz_groupversion_info.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | // +kubebuilder:object:generate=true 9 | // +groupName=sharedfilesystem.openstack.crossplane.io 10 | // +versionName=v1alpha1 11 | package v1alpha1 12 | 13 | import ( 14 | "k8s.io/apimachinery/pkg/runtime/schema" 15 | "sigs.k8s.io/controller-runtime/pkg/scheme" 16 | ) 17 | 18 | // Package type metadata. 19 | const ( 20 | CRDGroup = "sharedfilesystem.openstack.crossplane.io" 21 | CRDVersion = "v1alpha1" 22 | ) 23 | 24 | var ( 25 | // CRDGroupVersion is the API Group Version used to register the objects 26 | CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} 27 | 28 | // SchemeBuilder is used to add go types to the GroupVersionKind scheme 29 | SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} 30 | 31 | // AddToScheme adds the types in this group-version to the given scheme. 32 | AddToScheme = SchemeBuilder.AddToScheme 33 | ) 34 | -------------------------------------------------------------------------------- /apis/v1alpha1/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Upbound Inc. 3 | */ 4 | 5 | // Package v1alpha1 contains the core resources of the openstack jet provider. 6 | // +kubebuilder:object:generate=true 7 | // +groupName=openstack.crossplane.io 8 | // +versionName=v1alpha1 9 | package v1alpha1 10 | -------------------------------------------------------------------------------- /apis/v1alpha1/register.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Upbound Inc. 3 | */ 4 | 5 | package v1alpha1 6 | 7 | import ( 8 | "reflect" 9 | 10 | "k8s.io/apimachinery/pkg/runtime/schema" 11 | "sigs.k8s.io/controller-runtime/pkg/scheme" 12 | ) 13 | 14 | // Package type metadata. 15 | const ( 16 | Group = "openstack.crossplane.io" 17 | Version = "v1alpha1" 18 | ) 19 | 20 | var ( 21 | // SchemeGroupVersion is group version used to register these objects 22 | SchemeGroupVersion = schema.GroupVersion{Group: Group, Version: Version} 23 | 24 | // SchemeBuilder is used to add go types to the GroupVersionKind scheme 25 | SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion} 26 | ) 27 | 28 | // StoreConfig type metadata. 29 | var ( 30 | StoreConfigKind = reflect.TypeOf(StoreConfig{}).Name() 31 | StoreConfigGroupKind = schema.GroupKind{Group: Group, Kind: StoreConfigKind}.String() 32 | StoreConfigKindAPIVersion = StoreConfigKind + "." + SchemeGroupVersion.String() 33 | StoreConfigGroupVersionKind = SchemeGroupVersion.WithKind(StoreConfigKind) 34 | ) 35 | 36 | func init() { 37 | SchemeBuilder.Register(&StoreConfig{}, &StoreConfigList{}) 38 | } 39 | -------------------------------------------------------------------------------- /apis/v1alpha1/types.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Upbound Inc. 3 | */ 4 | 5 | package v1alpha1 6 | 7 | import ( 8 | metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 9 | 10 | xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" 11 | ) 12 | 13 | // A StoreConfigSpec defines the desired state of a ProviderConfig. 14 | type StoreConfigSpec struct { 15 | xpv1.SecretStoreConfig `json:",inline"` 16 | } 17 | 18 | // A StoreConfigStatus represents the status of a StoreConfig. 19 | type StoreConfigStatus struct { 20 | xpv1.ConditionedStatus `json:",inline"` 21 | } 22 | 23 | // +kubebuilder:object:root=true 24 | 25 | // A StoreConfig configures how openstack controller should store connection details. 26 | // +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" 27 | // +kubebuilder:printcolumn:name="TYPE",type="string",JSONPath=".spec.type" 28 | // +kubebuilder:printcolumn:name="DEFAULT-SCOPE",type="string",JSONPath=".spec.defaultScope" 29 | // +kubebuilder:resource:scope=Cluster,categories={crossplane,store,openstack} 30 | // +kubebuilder:subresource:status 31 | type StoreConfig struct { 32 | metav1.TypeMeta `json:",inline"` 33 | metav1.ObjectMeta `json:"metadata,omitempty"` 34 | 35 | Spec StoreConfigSpec `json:"spec"` 36 | Status StoreConfigStatus `json:"status,omitempty"` 37 | } 38 | 39 | // +kubebuilder:object:root=true 40 | 41 | // StoreConfigList contains a list of StoreConfig 42 | type StoreConfigList struct { 43 | metav1.TypeMeta `json:",inline"` 44 | metav1.ListMeta `json:"metadata,omitempty"` 45 | Items []StoreConfig `json:"items"` 46 | } 47 | 48 | // Note(turkenh): To be generated with AngryJet 49 | 50 | // GetStoreConfig returns SecretStoreConfig 51 | func (in *StoreConfig) GetStoreConfig() xpv1.SecretStoreConfig { 52 | return in.Spec.SecretStoreConfig 53 | } 54 | 55 | // GetCondition of this StoreConfig. 56 | func (in *StoreConfig) GetCondition(ct xpv1.ConditionType) xpv1.Condition { 57 | return in.Status.GetCondition(ct) 58 | } 59 | 60 | // SetConditions of this StoreConfig. 61 | func (in *StoreConfig) SetConditions(c ...xpv1.Condition) { 62 | in.Status.SetConditions(c...) 63 | } 64 | -------------------------------------------------------------------------------- /apis/v1alpha1/zz_generated.deepcopy.go: -------------------------------------------------------------------------------- 1 | //go:build !ignore_autogenerated 2 | 3 | /* 4 | Copyright 2022 Upbound Inc. 5 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 6 | */ 7 | 8 | // Code generated by controller-gen. DO NOT EDIT. 9 | 10 | package v1alpha1 11 | 12 | import ( 13 | runtime "k8s.io/apimachinery/pkg/runtime" 14 | ) 15 | 16 | // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. 17 | func (in *StoreConfig) DeepCopyInto(out *StoreConfig) { 18 | *out = *in 19 | out.TypeMeta = in.TypeMeta 20 | in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) 21 | in.Spec.DeepCopyInto(&out.Spec) 22 | in.Status.DeepCopyInto(&out.Status) 23 | } 24 | 25 | // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StoreConfig. 26 | func (in *StoreConfig) DeepCopy() *StoreConfig { 27 | if in == nil { 28 | return nil 29 | } 30 | out := new(StoreConfig) 31 | in.DeepCopyInto(out) 32 | return out 33 | } 34 | 35 | // DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. 36 | func (in *StoreConfig) DeepCopyObject() runtime.Object { 37 | if c := in.DeepCopy(); c != nil { 38 | return c 39 | } 40 | return nil 41 | } 42 | 43 | // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. 44 | func (in *StoreConfigList) DeepCopyInto(out *StoreConfigList) { 45 | *out = *in 46 | out.TypeMeta = in.TypeMeta 47 | in.ListMeta.DeepCopyInto(&out.ListMeta) 48 | if in.Items != nil { 49 | in, out := &in.Items, &out.Items 50 | *out = make([]StoreConfig, len(*in)) 51 | for i := range *in { 52 | (*in)[i].DeepCopyInto(&(*out)[i]) 53 | } 54 | } 55 | } 56 | 57 | // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StoreConfigList. 58 | func (in *StoreConfigList) DeepCopy() *StoreConfigList { 59 | if in == nil { 60 | return nil 61 | } 62 | out := new(StoreConfigList) 63 | in.DeepCopyInto(out) 64 | return out 65 | } 66 | 67 | // DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. 68 | func (in *StoreConfigList) DeepCopyObject() runtime.Object { 69 | if c := in.DeepCopy(); c != nil { 70 | return c 71 | } 72 | return nil 73 | } 74 | 75 | // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. 76 | func (in *StoreConfigSpec) DeepCopyInto(out *StoreConfigSpec) { 77 | *out = *in 78 | in.SecretStoreConfig.DeepCopyInto(&out.SecretStoreConfig) 79 | } 80 | 81 | // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StoreConfigSpec. 82 | func (in *StoreConfigSpec) DeepCopy() *StoreConfigSpec { 83 | if in == nil { 84 | return nil 85 | } 86 | out := new(StoreConfigSpec) 87 | in.DeepCopyInto(out) 88 | return out 89 | } 90 | 91 | // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. 92 | func (in *StoreConfigStatus) DeepCopyInto(out *StoreConfigStatus) { 93 | *out = *in 94 | in.ConditionedStatus.DeepCopyInto(&out.ConditionedStatus) 95 | } 96 | 97 | // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StoreConfigStatus. 98 | func (in *StoreConfigStatus) DeepCopy() *StoreConfigStatus { 99 | if in == nil { 100 | return nil 101 | } 102 | out := new(StoreConfigStatus) 103 | in.DeepCopyInto(out) 104 | return out 105 | } 106 | -------------------------------------------------------------------------------- /apis/v1beta1/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | */ 4 | 5 | // Package v1beta1 contains the core resources of the openstack upjet provider. 6 | // +kubebuilder:object:generate=true 7 | // +groupName=openstack.crossplane.io 8 | // +versionName=v1beta1 9 | package v1beta1 10 | -------------------------------------------------------------------------------- /apis/v1beta1/register.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | */ 4 | 5 | package v1beta1 6 | 7 | import ( 8 | "reflect" 9 | 10 | "k8s.io/apimachinery/pkg/runtime/schema" 11 | "sigs.k8s.io/controller-runtime/pkg/scheme" 12 | ) 13 | 14 | // Package type metadata. 15 | const ( 16 | Group = "openstack.crossplane.io" 17 | Version = "v1beta1" 18 | ) 19 | 20 | var ( 21 | // SchemeGroupVersion is group version used to register these objects 22 | SchemeGroupVersion = schema.GroupVersion{Group: Group, Version: Version} 23 | 24 | // SchemeBuilder is used to add go types to the GroupVersionKind scheme 25 | SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion} 26 | ) 27 | 28 | // ProviderConfig type metadata. 29 | var ( 30 | ProviderConfigKind = reflect.TypeOf(ProviderConfig{}).Name() 31 | ProviderConfigGroupKind = schema.GroupKind{Group: Group, Kind: ProviderConfigKind}.String() 32 | ProviderConfigKindAPIVersion = ProviderConfigKind + "." + SchemeGroupVersion.String() 33 | ProviderConfigGroupVersionKind = SchemeGroupVersion.WithKind(ProviderConfigKind) 34 | ) 35 | 36 | // ProviderConfigUsage type metadata. 37 | var ( 38 | ProviderConfigUsageKind = reflect.TypeOf(ProviderConfigUsage{}).Name() 39 | ProviderConfigUsageGroupKind = schema.GroupKind{Group: Group, Kind: ProviderConfigUsageKind}.String() 40 | ProviderConfigUsageKindAPIVersion = ProviderConfigUsageKind + "." + SchemeGroupVersion.String() 41 | ProviderConfigUsageGroupVersionKind = SchemeGroupVersion.WithKind(ProviderConfigUsageKind) 42 | 43 | ProviderConfigUsageListKind = reflect.TypeOf(ProviderConfigUsageList{}).Name() 44 | ProviderConfigUsageListGroupKind = schema.GroupKind{Group: Group, Kind: ProviderConfigUsageListKind}.String() 45 | ProviderConfigUsageListKindAPIVersion = ProviderConfigUsageListKind + "." + SchemeGroupVersion.String() 46 | ProviderConfigUsageListGroupVersionKind = SchemeGroupVersion.WithKind(ProviderConfigUsageListKind) 47 | ) 48 | 49 | func init() { 50 | SchemeBuilder.Register(&ProviderConfig{}, &ProviderConfigList{}) 51 | SchemeBuilder.Register(&ProviderConfigUsage{}, &ProviderConfigUsageList{}) 52 | } 53 | -------------------------------------------------------------------------------- /apis/v1beta1/types.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | */ 4 | 5 | package v1beta1 6 | 7 | import ( 8 | metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 9 | 10 | xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" 11 | ) 12 | 13 | // A ProviderConfigSpec defines the desired state of a ProviderConfig. 14 | type ProviderConfigSpec struct { 15 | // Credentials required to authenticate to this provider. 16 | Credentials ProviderCredentials `json:"credentials"` 17 | } 18 | 19 | // ProviderCredentials required to authenticate. 20 | type ProviderCredentials struct { 21 | // Source of the provider credentials. 22 | // +kubebuilder:validation:Enum=None;Secret;InjectedIdentity;Environment;Filesystem 23 | Source xpv1.CredentialsSource `json:"source"` 24 | 25 | xpv1.CommonCredentialSelectors `json:",inline"` 26 | } 27 | 28 | // A ProviderConfigStatus reflects the observed state of a ProviderConfig. 29 | type ProviderConfigStatus struct { 30 | xpv1.ProviderConfigStatus `json:",inline"` 31 | } 32 | 33 | // +kubebuilder:object:root=true 34 | 35 | // A ProviderConfig configures a OpenStack provider. 36 | // +kubebuilder:subresource:status 37 | // +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" 38 | // +kubebuilder:printcolumn:name="SECRET-NAME",type="string",JSONPath=".spec.credentials.secretRef.name",priority=1 39 | // +kubebuilder:resource:scope=Cluster 40 | // +kubebuilder:resource:scope=Cluster,categories={crossplane,provider,openstack} 41 | type ProviderConfig struct { 42 | metav1.TypeMeta `json:",inline"` 43 | metav1.ObjectMeta `json:"metadata,omitempty"` 44 | 45 | Spec ProviderConfigSpec `json:"spec"` 46 | Status ProviderConfigStatus `json:"status,omitempty"` 47 | } 48 | 49 | // +kubebuilder:object:root=true 50 | 51 | // ProviderConfigList contains a list of ProviderConfig. 52 | type ProviderConfigList struct { 53 | metav1.TypeMeta `json:",inline"` 54 | metav1.ListMeta `json:"metadata,omitempty"` 55 | Items []ProviderConfig `json:"items"` 56 | } 57 | 58 | // +kubebuilder:object:root=true 59 | 60 | // A ProviderConfigUsage indicates that a resource is using a ProviderConfig. 61 | // +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" 62 | // +kubebuilder:printcolumn:name="CONFIG-NAME",type="string",JSONPath=".providerConfigRef.name" 63 | // +kubebuilder:printcolumn:name="RESOURCE-KIND",type="string",JSONPath=".resourceRef.kind" 64 | // +kubebuilder:printcolumn:name="RESOURCE-NAME",type="string",JSONPath=".resourceRef.name" 65 | // +kubebuilder:resource:scope=Cluster,categories={crossplane,provider,openstack} 66 | type ProviderConfigUsage struct { 67 | metav1.TypeMeta `json:",inline"` 68 | metav1.ObjectMeta `json:"metadata,omitempty"` 69 | 70 | xpv1.ProviderConfigUsage `json:",inline"` 71 | } 72 | 73 | // +kubebuilder:object:root=true 74 | 75 | // ProviderConfigUsageList contains a list of ProviderConfigUsage 76 | type ProviderConfigUsageList struct { 77 | metav1.TypeMeta `json:",inline"` 78 | metav1.ListMeta `json:"metadata,omitempty"` 79 | Items []ProviderConfigUsage `json:"items"` 80 | } 81 | -------------------------------------------------------------------------------- /apis/v1beta1/zz_generated.pc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | // Code generated by angryjet. DO NOT EDIT. 6 | 7 | package v1beta1 8 | 9 | import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" 10 | 11 | // GetCondition of this ProviderConfig. 12 | func (p *ProviderConfig) GetCondition(ct xpv1.ConditionType) xpv1.Condition { 13 | return p.Status.GetCondition(ct) 14 | } 15 | 16 | // GetUsers of this ProviderConfig. 17 | func (p *ProviderConfig) GetUsers() int64 { 18 | return p.Status.Users 19 | } 20 | 21 | // SetConditions of this ProviderConfig. 22 | func (p *ProviderConfig) SetConditions(c ...xpv1.Condition) { 23 | p.Status.SetConditions(c...) 24 | } 25 | 26 | // SetUsers of this ProviderConfig. 27 | func (p *ProviderConfig) SetUsers(i int64) { 28 | p.Status.Users = i 29 | } 30 | -------------------------------------------------------------------------------- /apis/v1beta1/zz_generated.pcu.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | // Code generated by angryjet. DO NOT EDIT. 6 | 7 | package v1beta1 8 | 9 | import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" 10 | 11 | // GetProviderConfigReference of this ProviderConfigUsage. 12 | func (p *ProviderConfigUsage) GetProviderConfigReference() xpv1.Reference { 13 | return p.ProviderConfigReference 14 | } 15 | 16 | // GetResourceReference of this ProviderConfigUsage. 17 | func (p *ProviderConfigUsage) GetResourceReference() xpv1.TypedReference { 18 | return p.ResourceReference 19 | } 20 | 21 | // SetProviderConfigReference of this ProviderConfigUsage. 22 | func (p *ProviderConfigUsage) SetProviderConfigReference(r xpv1.Reference) { 23 | p.ProviderConfigReference = r 24 | } 25 | 26 | // SetResourceReference of this ProviderConfigUsage. 27 | func (p *ProviderConfigUsage) SetResourceReference(r xpv1.TypedReference) { 28 | p.ResourceReference = r 29 | } 30 | -------------------------------------------------------------------------------- /apis/v1beta1/zz_generated.pculist.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | // Code generated by angryjet. DO NOT EDIT. 6 | 7 | package v1beta1 8 | 9 | import resource "github.com/crossplane/crossplane-runtime/pkg/resource" 10 | 11 | // GetItems of this ProviderConfigUsageList. 12 | func (p *ProviderConfigUsageList) GetItems() []resource.ProviderConfigUsage { 13 | items := make([]resource.ProviderConfigUsage, len(p.Items)) 14 | for i := range p.Items { 15 | items[i] = &p.Items[i] 16 | } 17 | return items 18 | } 19 | -------------------------------------------------------------------------------- /apis/vpnaas/v1alpha1/zz_generated.conversion_hubs.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | package v1alpha1 9 | 10 | // Hub marks this type as a conversion hub. 11 | func (tr *EndpointGroupV2) Hub() {} 12 | 13 | // Hub marks this type as a conversion hub. 14 | func (tr *IkePolicyV2) Hub() {} 15 | 16 | // Hub marks this type as a conversion hub. 17 | func (tr *IpsecPolicyV2) Hub() {} 18 | 19 | // Hub marks this type as a conversion hub. 20 | func (tr *ServiceV2) Hub() {} 21 | 22 | // Hub marks this type as a conversion hub. 23 | func (tr *SiteConnectionV2) Hub() {} 24 | -------------------------------------------------------------------------------- /apis/vpnaas/v1alpha1/zz_generated.managedlist.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | // Code generated by angryjet. DO NOT EDIT. 6 | 7 | package v1alpha1 8 | 9 | import resource "github.com/crossplane/crossplane-runtime/pkg/resource" 10 | 11 | // GetItems of this EndpointGroupV2List. 12 | func (l *EndpointGroupV2List) GetItems() []resource.Managed { 13 | items := make([]resource.Managed, len(l.Items)) 14 | for i := range l.Items { 15 | items[i] = &l.Items[i] 16 | } 17 | return items 18 | } 19 | 20 | // GetItems of this IkePolicyV2List. 21 | func (l *IkePolicyV2List) GetItems() []resource.Managed { 22 | items := make([]resource.Managed, len(l.Items)) 23 | for i := range l.Items { 24 | items[i] = &l.Items[i] 25 | } 26 | return items 27 | } 28 | 29 | // GetItems of this IpsecPolicyV2List. 30 | func (l *IpsecPolicyV2List) GetItems() []resource.Managed { 31 | items := make([]resource.Managed, len(l.Items)) 32 | for i := range l.Items { 33 | items[i] = &l.Items[i] 34 | } 35 | return items 36 | } 37 | 38 | // GetItems of this ServiceV2List. 39 | func (l *ServiceV2List) GetItems() []resource.Managed { 40 | items := make([]resource.Managed, len(l.Items)) 41 | for i := range l.Items { 42 | items[i] = &l.Items[i] 43 | } 44 | return items 45 | } 46 | 47 | // GetItems of this SiteConnectionV2List. 48 | func (l *SiteConnectionV2List) GetItems() []resource.Managed { 49 | items := make([]resource.Managed, len(l.Items)) 50 | for i := range l.Items { 51 | items[i] = &l.Items[i] 52 | } 53 | return items 54 | } 55 | -------------------------------------------------------------------------------- /apis/vpnaas/v1alpha1/zz_groupversion_info.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | // +kubebuilder:object:generate=true 9 | // +groupName=vpnaas.openstack.crossplane.io 10 | // +versionName=v1alpha1 11 | package v1alpha1 12 | 13 | import ( 14 | "k8s.io/apimachinery/pkg/runtime/schema" 15 | "sigs.k8s.io/controller-runtime/pkg/scheme" 16 | ) 17 | 18 | // Package type metadata. 19 | const ( 20 | CRDGroup = "vpnaas.openstack.crossplane.io" 21 | CRDVersion = "v1alpha1" 22 | ) 23 | 24 | var ( 25 | // CRDGroupVersion is the API Group Version used to register the objects 26 | CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} 27 | 28 | // SchemeBuilder is used to add go types to the GroupVersionKind scheme 29 | SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} 30 | 31 | // AddToScheme adds the types in this group-version to the given scheme. 32 | AddToScheme = SchemeBuilder.AddToScheme 33 | ) 34 | -------------------------------------------------------------------------------- /apis/zz_register.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Upbound Inc. 3 | Copyright 2023 Jakob Schlagenhaufer, Jan Dittrich 4 | */ 5 | 6 | // Code generated by upjet. DO NOT EDIT. 7 | 8 | // Package apis contains Kubernetes API for the provider. 9 | package apis 10 | 11 | import ( 12 | "k8s.io/apimachinery/pkg/runtime" 13 | 14 | v1alpha1 "github.com/crossplane-contrib/provider-openstack/apis/blockstorage/v1alpha1" 15 | v1alpha1compute "github.com/crossplane-contrib/provider-openstack/apis/compute/v1alpha1" 16 | v1alpha1containerinfra "github.com/crossplane-contrib/provider-openstack/apis/containerinfra/v1alpha1" 17 | v1alpha1db "github.com/crossplane-contrib/provider-openstack/apis/db/v1alpha1" 18 | v1alpha1dns "github.com/crossplane-contrib/provider-openstack/apis/dns/v1alpha1" 19 | v1alpha1fw "github.com/crossplane-contrib/provider-openstack/apis/fw/v1alpha1" 20 | v1alpha1identity "github.com/crossplane-contrib/provider-openstack/apis/identity/v1alpha1" 21 | v1alpha1images "github.com/crossplane-contrib/provider-openstack/apis/images/v1alpha1" 22 | v1alpha1keymanager "github.com/crossplane-contrib/provider-openstack/apis/keymanager/v1alpha1" 23 | v1alpha1lb "github.com/crossplane-contrib/provider-openstack/apis/lb/v1alpha1" 24 | v1alpha1networking "github.com/crossplane-contrib/provider-openstack/apis/networking/v1alpha1" 25 | v1alpha1objectstorage "github.com/crossplane-contrib/provider-openstack/apis/objectstorage/v1alpha1" 26 | v1alpha1orchestration "github.com/crossplane-contrib/provider-openstack/apis/orchestration/v1alpha1" 27 | v1alpha1sharedfilesystem "github.com/crossplane-contrib/provider-openstack/apis/sharedfilesystem/v1alpha1" 28 | v1alpha1apis "github.com/crossplane-contrib/provider-openstack/apis/v1alpha1" 29 | v1beta1 "github.com/crossplane-contrib/provider-openstack/apis/v1beta1" 30 | v1alpha1vpnaas "github.com/crossplane-contrib/provider-openstack/apis/vpnaas/v1alpha1" 31 | ) 32 | 33 | func init() { 34 | // Register the types with the Scheme so the components can map objects to GroupVersionKinds and back 35 | AddToSchemes = append(AddToSchemes, 36 | v1alpha1.SchemeBuilder.AddToScheme, 37 | v1alpha1compute.SchemeBuilder.AddToScheme, 38 | v1alpha1containerinfra.SchemeBuilder.AddToScheme, 39 | v1alpha1db.SchemeBuilder.AddToScheme, 40 | v1alpha1dns.SchemeBuilder.AddToScheme, 41 | v1alpha1fw.SchemeBuilder.AddToScheme, 42 | v1alpha1identity.SchemeBuilder.AddToScheme, 43 | v1alpha1images.SchemeBuilder.AddToScheme, 44 | v1alpha1keymanager.SchemeBuilder.AddToScheme, 45 | v1alpha1lb.SchemeBuilder.AddToScheme, 46 | v1alpha1networking.SchemeBuilder.AddToScheme, 47 | v1alpha1objectstorage.SchemeBuilder.AddToScheme, 48 | v1alpha1orchestration.SchemeBuilder.AddToScheme, 49 | v1alpha1sharedfilesystem.SchemeBuilder.AddToScheme, 50 | v1alpha1apis.SchemeBuilder.AddToScheme, 51 | v1beta1.SchemeBuilder.AddToScheme, 52 | v1alpha1vpnaas.SchemeBuilder.AddToScheme, 53 | ) 54 | } 55 | 56 | // AddToSchemes may be used to add all resources defined in the project to a Scheme 57 | var AddToSchemes runtime.SchemeBuilder 58 | 59 | // AddToScheme adds all Resources to the Scheme 60 | func AddToScheme(s *runtime.Scheme) error { 61 | return AddToSchemes.AddToScheme(s) 62 | } 63 | -------------------------------------------------------------------------------- /cluster/images/provider-openstack/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.21.2 2 | RUN apk --no-cache add ca-certificates bash 3 | 4 | ARG TARGETOS 5 | ARG TARGETARCH 6 | 7 | ENV USER_ID=65532 8 | 9 | USER ${USER_ID} 10 | EXPOSE 8080 11 | 12 | ADD "bin/${TARGETOS}_${TARGETARCH}/provider" /usr/local/bin/provider 13 | 14 | ENTRYPOINT ["provider"] -------------------------------------------------------------------------------- /cluster/images/provider-openstack/Makefile: -------------------------------------------------------------------------------- 1 | # ==================================================================================== 2 | # Setup Project 3 | 4 | include ../../../build/makelib/common.mk 5 | 6 | # ==================================================================================== 7 | # Options 8 | 9 | include ../../../build/makelib/imagelight.mk 10 | 11 | # ==================================================================================== 12 | # Targets 13 | 14 | img.build: 15 | @$(INFO) docker build $(IMAGE) 16 | @$(MAKE) BUILD_ARGS="--load ${BUILD_ARGS}" img.build.shared 17 | @$(OK) docker build $(IMAGE) 18 | 19 | img.publish: 20 | @$(INFO) Skipping image publish for $(IMAGE) 21 | @echo Publish is deferred to xpkg machinery 22 | @$(OK) Image publish skipped for $(IMAGE) 23 | 24 | img.build.shared: 25 | @cp Dockerfile $(IMAGE_TEMP_DIR) || $(FAIL) 26 | @cp -r $(OUTPUT_DIR)/bin/ $(IMAGE_TEMP_DIR)/bin || $(FAIL) 27 | @docker buildx build $(BUILD_ARGS) \ 28 | --platform $(IMAGE_PLATFORMS) \ 29 | -t $(IMAGE) \ 30 | $(IMAGE_TEMP_DIR) || $(FAIL) 31 | 32 | img.promote: 33 | @$(INFO) Skipping image promotion from $(FROM_IMAGE) to $(TO_IMAGE) 34 | @echo Promote is deferred to xpkg machinery 35 | @$(OK) Image promotion skipped for $(FROM_IMAGE) to $(TO_IMAGE) 36 | -------------------------------------------------------------------------------- /cluster/images/provider-openstack/terraformrc.hcl: -------------------------------------------------------------------------------- 1 | provider_installation { 2 | filesystem_mirror { 3 | path = "/terraform/provider-mirror" 4 | include = ["*/*"] 5 | } 6 | direct { 7 | exclude = ["*/*"] 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /cluster/test/setup.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -aeuo pipefail 3 | 4 | echo "Running setup.sh" 5 | echo "Creating cloud credential secret..." 6 | ${KUBECTL} -n upbound-system create secret generic provider-secret --from-literal=credentials="${UPTEST_CLOUD_CREDENTIALS}" --dry-run=client -o yaml | ${KUBECTL} apply -f - 7 | 8 | echo "Waiting until provider is healthy..." 9 | ${KUBECTL} wait provider.pkg --all --for condition=Healthy --timeout 5m 10 | 11 | echo "Waiting for all pods to come online..." 12 | ${KUBECTL} -n upbound-system wait --for=condition=Available deployment --all --timeout=5m 13 | 14 | echo "Creating a default provider config..." 15 | cat <, Jan Dittrich 7 | meta.crossplane.io/source: github.com/crossplane-contrib/provider-openstack 8 | meta.crossplane.io/description: | 9 | Crossplane provider to manage OpenStack resources in Kubernetes. 10 | meta.crossplane.io/readme: | 11 | Provider OpenStack is a Crossplane provider for 12 | [OpenStack](https://openstack.org/). 13 | If you encounter an issue please reach out via GitHub issues! 14 | friendly-name.meta.crossplane.io: Provider OpenStack -------------------------------------------------------------------------------- /scripts/version_diff.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import json 4 | import sys 5 | 6 | # usage: version_diff.py 7 | # example usage: version_diff.py config/generated.lst .work/schema.json.3.38.0 config/schema.json 8 | if __name__ == "__main__": 9 | base_path = sys.argv[2] 10 | bumped_path = sys.argv[3] 11 | print(f'Reporting schema changes between "{base_path}" as base version and "{bumped_path}" as bumped version') 12 | with open(sys.argv[1]) as f: 13 | resources = json.load(f) 14 | with open(base_path) as f: 15 | base = json.load(f) 16 | with open(bumped_path) as f: 17 | bump = json.load(f) 18 | 19 | provider_name = None 20 | for k in base["provider_schemas"]: 21 | # the first key is the provider name 22 | provider_name = k 23 | break 24 | if provider_name is None: 25 | print(f"Cannot extract the provider name from the base schema: {base_path}") 26 | sys.exit(-1) 27 | base_schemas = base["provider_schemas"][provider_name]["resource_schemas"] 28 | bumped_schemas = bump["provider_schemas"][provider_name]["resource_schemas"] 29 | 30 | for name in resources: 31 | try: 32 | if base_schemas[name]["version"] != bumped_schemas[name]["version"]: 33 | print(f'{name}:{base_schemas[name]["version"]}-{bumped_schemas[name]["version"]}') 34 | except KeyError as ke: 35 | print(f'{name} is not found in schema: {ke}') 36 | continue 37 | --------------------------------------------------------------------------------