Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

adding support for multiple client options on connect #433

Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions apis/v1beta1/providerconfig_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@ type ProviderConfigSpec struct {

// ProjectID is the project name (not numerical ID) of this GCP ProviderConfig.
ProjectID string `json:"projectID"`

// ClientOptions can override default Google API client options
//+optional
ClientOptions *ClientOptions `json:"clientOptions,omitempty"`
}

// ProviderCredentials required to authenticate.
Expand All @@ -40,6 +44,16 @@ type ProviderCredentials struct {
xpv1.CommonCredentialSelectors `json:",inline"`
}

// ClientOptions are options for a Google API client.
type ClientOptions struct {
// Endpoint overrides the default endpoint.
//+optional
Endpoint *string `json:"endpoint,omitempty"`
// WithoutAuthentication - specifies that no authentication should be used. It is suitable only for testing and for accessing public resources.
//+optional
WithoutAuthentication *bool `json:"withoutAuthentication,omitempty"`
}

// A ProviderConfigStatus represents the status of a ProviderConfig.
type ProviderConfigStatus struct {
xpv1.ProviderConfigStatus `json:",inline"`
Expand Down
297 changes: 161 additions & 136 deletions package/crds/gcp.crossplane.io_providerconfigs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,156 +10,181 @@ spec:
group: gcp.crossplane.io
names:
categories:
- crossplane
- provider
- gcp
- crossplane
- provider
- gcp
kind: ProviderConfig
listKind: ProviderConfigList
plural: providerconfigs
singular: providerconfig
scope: Cluster
versions:
- additionalPrinterColumns:
- jsonPath: .spec.projectID
name: PROJECT-ID
type: string
- jsonPath: .metadata.creationTimestamp
name: AGE
type: date
- jsonPath: .spec.credentialsSecretRef.name
name: SECRET-NAME
priority: 1
type: string
name: v1beta1
schema:
openAPIV3Schema:
description: A ProviderConfig configures how GCP controller should connect
to GCP API.
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: A ProviderConfigSpec defines the desired state of a ProviderConfig.
properties:
credentials:
description: Credentials required to authenticate to this provider.
properties:
env:
description: Env is a reference to an environment variable that
contains credentials that must be used to connect to the provider.
- additionalPrinterColumns:
- jsonPath: .spec.projectID
name: PROJECT-ID
type: string
- jsonPath: .metadata.creationTimestamp
name: AGE
type: date
- jsonPath: .spec.credentialsSecretRef.name
name: SECRET-NAME
priority: 1
type: string
name: v1beta1
schema:
openAPIV3Schema:
description:
A ProviderConfig configures how GCP controller should connect
to GCP API.
properties:
apiVersion:
description:
"APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources"
type: string
kind:
description:
"Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"
type: string
metadata:
type: object
spec:
description: A ProviderConfigSpec defines the desired state of a ProviderConfig.
properties:
credentials:
description: Credentials required to authenticate to this provider.
properties:
env:
description:
Env is a reference to an environment variable that
contains credentials that must be used to connect to the provider.
properties:
name:
description: Name is the name of an environment variable.
type: string
required:
- name
type: object
fs:
description:
Fs is a reference to a filesystem location that contains
credentials that must be used to connect to the provider.
properties:
path:
description: Path is a filesystem path.
type: string
required:
- path
type: object
secretRef:
description:
A SecretRef is a reference to a secret key that contains
the credentials that must be used to connect to the provider.
properties:
key:
description: The key to select.
type: string
name:
description: Name of the secret.
type: string
namespace:
description: Namespace of the secret.
type: string
required:
- key
- name
- namespace
type: object
source:
description: Source of the provider credentials.
enum:
- None
- Secret
- InjectedIdentity
- Environment
- Filesystem
type: string
required:
- source
type: object
projectID:
description:
ProjectID is the project name (not numerical ID) of this
GCP ProviderConfig.
type: string
clientOptions:
description: clientOptions are options for a Google API client.
properties:
endpoint:
description: Endpoint overrides the default endpoint.
type: string
withoutAuthentication:
description:
WithoutAuthentication - specifies that no authentication
should be used. It is suitable only for testing and for accessing
public resources.
type: boolean
type: object
required:
- credentials
- projectID
type: object
status:
description: A ProviderConfigStatus represents the status of a ProviderConfig.
properties:
conditions:
description: Conditions of the resource.
items:
description: A Condition that may apply to a resource.
properties:
name:
description: Name is the name of an environment variable.
lastTransitionTime:
description:
LastTransitionTime is the last time this condition
transitioned from one status to another.
format: date-time
type: string
required:
- name
type: object
fs:
description: Fs is a reference to a filesystem location that contains
credentials that must be used to connect to the provider.
properties:
path:
description: Path is a filesystem path.
message:
description:
A Message containing details about this condition's
last transition from one status to another, if any.
type: string
required:
- path
type: object
secretRef:
description: A SecretRef is a reference to a secret key that contains
the credentials that must be used to connect to the provider.
properties:
key:
description: The key to select.
reason:
description:
A Reason for this condition's last transition from
one status to another.
type: string
name:
description: Name of the secret.
status:
description:
Status of this condition; is it currently True,
False, or Unknown?
type: string
namespace:
description: Namespace of the secret.
type:
description:
Type of this condition. At most one of each condition
type may apply to a resource at any point in time.
type: string
required:
- key
- name
- namespace
- lastTransitionTime
- reason
- status
- type
type: object
source:
description: Source of the provider credentials.
enum:
- None
- Secret
- InjectedIdentity
- Environment
- Filesystem
type: string
required:
- source
type: object
projectID:
description: ProjectID is the project name (not numerical ID) of this
GCP ProviderConfig.
type: string
required:
- credentials
- projectID
type: object
status:
description: A ProviderConfigStatus represents the status of a ProviderConfig.
properties:
conditions:
description: Conditions of the resource.
items:
description: A Condition that may apply to a resource.
properties:
lastTransitionTime:
description: LastTransitionTime is the last time this condition
transitioned from one status to another.
format: date-time
type: string
message:
description: A Message containing details about this condition's
last transition from one status to another, if any.
type: string
reason:
description: A Reason for this condition's last transition from
one status to another.
type: string
status:
description: Status of this condition; is it currently True,
False, or Unknown?
type: string
type:
description: Type of this condition. At most one of each condition
type may apply to a resource at any point in time.
type: string
required:
- lastTransitionTime
- reason
- status
- type
type: object
type: array
users:
description: Users of this provider configuration.
format: int64
type: integer
type: object
required:
- spec
type: object
served: true
storage: true
subresources:
status: {}
type: array
users:
description: Users of this provider configuration.
format: int64
type: integer
type: object
required:
- spec
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
Expand Down
Loading