diff --git a/go.mod b/go.mod index 548a2395372..630028b294e 100644 --- a/go.mod +++ b/go.mod @@ -54,6 +54,7 @@ require ( github.com/opencontainers/runtime-spec v1.0.3-0.20220825212826-86290f6a00fb github.com/openshift/api v3.9.1-0.20191111211345-a27ff30ebf09+incompatible github.com/openshift/client-go v0.0.0-20220525160904-9e1acff93e4a + github.com/openshift/cloud-credential-operator v0.0.0-00010101000000-000000000000 github.com/openshift/console-operator v0.0.0-20220407014945-45d37e70e0c2 github.com/openshift/hive/apis v0.0.0 github.com/openshift/library-go v0.0.0-20220525173854-9b950a41acdc diff --git a/go.sum b/go.sum index 1816ac60080..1f1504f3d63 100644 --- a/go.sum +++ b/go.sum @@ -673,6 +673,8 @@ github.com/openshift/build-machinery-go v0.0.0-20210115170933-e575b44a7a94/go.mo github.com/openshift/build-machinery-go v0.0.0-20211213093930-7e33a7eb4ce3/go.mod h1:b1BuldmJlbA/xYtdZvKi+7j5YGB44qJUJDZ9zwiNCfE= github.com/openshift/client-go v0.0.0-20220603133046-984ee5ebedcf h1:gAYYPWVduONFJ6yuczLleApk0nEH3W0GgxDX2+O+B9E= github.com/openshift/client-go v0.0.0-20220603133046-984ee5ebedcf/go.mod h1:eDO5QeVi2IiXmDwB0e2z1DpAznWroZKe978pzZwFBzg= +github.com/openshift/cloud-credential-operator v0.0.0-20200316201045-d10080b52c9e h1:2gyl9UVyjHSWzdS56KUXxQwIhENbq2x2olqoMQSA/C8= +github.com/openshift/cloud-credential-operator v0.0.0-20200316201045-d10080b52c9e/go.mod h1:iPn+uhIe7nkP5BMHe2QnbLtg5m/AIQ1xvz9s3cig5ss= github.com/openshift/cluster-api-provider-azure v0.1.0-alpha.3.0.20210626224711-5d94c794092f h1:rQwvVLPZfM5o0USkVY6mrAyJwzMUkhjn9Wz2D5vX81k= github.com/openshift/cluster-api-provider-azure v0.1.0-alpha.3.0.20210626224711-5d94c794092f/go.mod h1:GR+ocB8I+Z7JTSBdO+DMu/diBfH66lRlRpnc1KWysUM= github.com/openshift/console-operator v0.0.0-20220318130441-e44516b9c315 h1:zmwv8TgbOgZ5QoaPhLdOivqg706Z+VyuPs703jNMdrE= diff --git a/vendor/github.com/openshift/cloud-credential-operator/LICENSE b/vendor/github.com/openshift/cloud-credential-operator/LICENSE new file mode 100644 index 00000000000..261eeb9e9f8 --- /dev/null +++ b/vendor/github.com/openshift/cloud-credential-operator/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/aws_types.go b/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/aws_types.go new file mode 100644 index 00000000000..fbb295b06c3 --- /dev/null +++ b/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/aws_types.go @@ -0,0 +1,51 @@ +/* +Copyright 2018 The OpenShift Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// TODO: these types should eventually be broken out, along with the actuator, to a separate repo. + +// AWSProviderSpec contains the required information to create a user policy in AWS. +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type AWSProviderSpec struct { + metav1.TypeMeta `json:",inline"` + // StatementEntries contains a list of policy statements that should be associated with this credentials access key. + StatementEntries []StatementEntry `json:"statementEntries"` +} + +// StatementEntry models an AWS policy statement entry. +type StatementEntry struct { + // Effect indicates if this policy statement is to Allow or Deny. + Effect string `json:"effect"` + // Action describes the particular AWS service actions that should be allowed or denied. (i.e. ec2:StartInstances, iam:ChangePassword) + Action []string `json:"action"` + // Resource specifies the object(s) this statement should apply to. (or "*" for all) + Resource string `json:"resource"` +} + +// AWSStatus containes the status of the credentials request in AWS. +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type AWSProviderStatus struct { + metav1.TypeMeta `json:",inline"` + // User is the name of the User created in AWS for these credentials. + User string `json:"user"` + // Policy is the name of the policy attached to the user in AWS. + Policy string `json:"policy"` +} diff --git a/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/azure_types.go b/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/azure_types.go new file mode 100644 index 00000000000..2126753e4c0 --- /dev/null +++ b/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/azure_types.go @@ -0,0 +1,57 @@ +/* +Copyright 2019 The OpenShift Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// TODO: these types should eventually be broken out, along with the actuator, +// to a separate repo. + +// AzureProviderSpec contains the required information to create RBAC role +// bindings for Azure. +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type AzureProviderSpec struct { + metav1.TypeMeta `json:",inline"` + + // RoleBindings contains a list of roles that should be associated with the minted credential. + RoleBindings []RoleBinding `json:"roleBindings"` +} + +// RoleBinding models part of the Azure RBAC Role Binding +type RoleBinding struct { + // Role defines a set of permissions that should be associated with the minted credential. + Role string `json:"role"` +} + +// AzureProviderStatus contains the status of the credentials request in Azure. +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type AzureProviderStatus struct { + metav1.TypeMeta `json:",inline"` + + // ServicePrincipalName is the name of the service principal created in Azure for these credentials. + ServicePrincipalName string `json:"name"` + + // AppID is the application id of the service principal created in Azure for these credentials. + AppID string `json:"appID"` + + // SecretLastResourceVersion is the resource version of the secret resource + // that was last synced. Used to determine if the object has changed and + // requires a sync. + SecretLastResourceVersion string `json:"secretLastResourceVersion"` +} diff --git a/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/codec.go b/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/codec.go new file mode 100644 index 00000000000..4724e815370 --- /dev/null +++ b/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/codec.go @@ -0,0 +1,103 @@ +/* +Copyright 2018 The OpenShift Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "bytes" + "fmt" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/serializer" +) + +// NewScheme creates a new Scheme +func NewScheme() (*runtime.Scheme, error) { + return SchemeBuilder.Build() +} + +// ProviderCodec is a runtime codec for providers. +// +k8s:deepcopy-gen=false +type ProviderCodec struct { + encoder runtime.Encoder + decoder runtime.Decoder +} + +// NewCodec creates a serializer/deserializer for the provider configuration +func NewCodec() (*ProviderCodec, error) { + scheme, err := NewScheme() + if err != nil { + return nil, err + } + codecFactory := serializer.NewCodecFactory(scheme) + encoder, err := newEncoder(&codecFactory) + if err != nil { + return nil, err + } + codec := ProviderCodec{ + encoder: encoder, + decoder: codecFactory.UniversalDecoder(SchemeGroupVersion), + } + return &codec, nil +} + +// EncodeProvider serializes an object to the provider spec. +func (codec *ProviderCodec) EncodeProviderSpec(in runtime.Object) (*runtime.RawExtension, error) { + var buf bytes.Buffer + if err := codec.encoder.Encode(in, &buf); err != nil { + return nil, fmt.Errorf("encoding failed: %v", err) + } + return &runtime.RawExtension{Raw: buf.Bytes()}, nil +} + +// DecodeProviderSpec deserializes an object from the provider config. +func (codec *ProviderCodec) DecodeProviderSpec(providerConfig *runtime.RawExtension, out runtime.Object) error { + _, _, err := codec.decoder.Decode(providerConfig.Raw, nil, out) + if err != nil { + return fmt.Errorf("decoding failure: %v", err) + } + return nil +} + +// EncodeProviderStatus serializes the provider status. +func (codec *ProviderCodec) EncodeProviderStatus(in runtime.Object) (*runtime.RawExtension, error) { + var buf bytes.Buffer + if err := codec.encoder.Encode(in, &buf); err != nil { + return nil, fmt.Errorf("encoding failed: %v", err) + } + return &runtime.RawExtension{Raw: buf.Bytes()}, nil +} + +// DecodeProviderStatus deserializes the provider status. +func (codec *ProviderCodec) DecodeProviderStatus(providerStatus *runtime.RawExtension, out runtime.Object) error { + if providerStatus != nil { + _, _, err := codec.decoder.Decode(providerStatus.Raw, nil, out) + if err != nil { + return fmt.Errorf("decoding failure: %v", err) + } + return nil + } + return nil +} + +func newEncoder(codecFactory *serializer.CodecFactory) (runtime.Encoder, error) { + serializerInfos := codecFactory.SupportedMediaTypes() + if len(serializerInfos) == 0 { + return nil, fmt.Errorf("unable to find any serlializers") + } + encoder := codecFactory.EncoderForVersion(serializerInfos[0].Serializer, SchemeGroupVersion) + return encoder, nil +} diff --git a/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/credentialsrequest_types.go b/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/credentialsrequest_types.go new file mode 100644 index 00000000000..3eeabd2f57a --- /dev/null +++ b/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/credentialsrequest_types.go @@ -0,0 +1,153 @@ +/* +Copyright 2018 The OpenShift Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" +) + +const ( + // FinalizerDeprovision is used on CredentialsRequests to ensure we delete the + // credentials in AWS before allowing the CredentialsRequest to be deleted in etcd. + FinalizerDeprovision string = "cloudcredential.openshift.io/deprovision" + + // AnnotationCredentialsRequest is used on Secrets created as a target of CredentailsRequests. + // The annotation value will map back to the namespace/name of the CredentialsRequest that created + // or adopted the secret. + AnnotationCredentialsRequest string = "cloudcredential.openshift.io/credentials-request" + + // AnnotationAWSPolicyLastApplied is added to target Secrets indicating the last AWS policy + // we successfully applied. It is used to compare if changes are necessary, without requiring + // AWS credentials to view the actual state. + AnnotationAWSPolicyLastApplied string = "cloudcredential.openshift.io/aws-policy-last-applied" + + // CloudCredOperatorNamespace is the namespace where the credentials operator runs. + CloudCredOperatorNamespace = "openshift-cloud-credential-operator" + + // CloudCredOperatorConfigMap is an optional ConfigMap that can be used to alter behavior of the operator. + CloudCredOperatorConfigMap = "cloud-credential-operator-config" +) + +// NOTE: Run "make" to regenerate code after modifying this file + +// CredentialsRequestSpec defines the desired state of CredentialsRequest +type CredentialsRequestSpec struct { + // SecretRef points to the secret where the credentials should be stored once generated. + SecretRef corev1.ObjectReference `json:"secretRef"` + + // ProviderSpec contains the cloud provider specific credentials specification. + ProviderSpec *runtime.RawExtension `json:"providerSpec,omitempty"` +} + +// CredentialsRequestStatus defines the observed state of CredentialsRequest +type CredentialsRequestStatus struct { + // Provisioned is true once the credentials have been initially provisioned. + Provisioned bool `json:"provisioned"` + + // LastSyncTimestamp is the time that the credentials were last synced. + LastSyncTimestamp *metav1.Time `json:"lastSyncTimestamp,omitempty"` + + // LastSyncGeneration is the generation of the credentials request resource + // that was last synced. Used to determine if the object has changed and + // requires a sync. + LastSyncGeneration int64 `json:"lastSyncGeneration"` + + // ProviderStatus contains cloud provider specific status. + ProviderStatus *runtime.RawExtension `json:"providerStatus,omitempty"` + + // Conditions includes detailed status for the CredentialsRequest + // +optional + Conditions []CredentialsRequestCondition `json:"conditions,omitempty"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// CredentialsRequest is the Schema for the credentialsrequests API +// +k8s:openapi-gen=true +// +kubebuilder:subresource:status +type CredentialsRequest struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec CredentialsRequestSpec `json:"spec"` + Status CredentialsRequestStatus `json:"status,omitempty"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// CredentialsRequestList contains a list of CredentialsRequest +type CredentialsRequestList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []CredentialsRequest `json:"items"` +} + +// CredentialsRequestCondition contains details for any of the conditions on a CredentialsRequest object +type CredentialsRequestCondition struct { + // Type is the specific type of the condition + Type CredentialsRequestConditionType `json:"type"` + // Status is the status of the condition + Status corev1.ConditionStatus `json:"status"` + // LastProbeTime is the last time we probed the condition + LastProbeTime metav1.Time `json:"lastProbeTime,omitempty"` + // LastTransitionTime is the last time the condition transitioned from one status to another. + LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty"` + // Reason is a unique, one-word, CamelCase reason for the condition's last transition + Reason string `json:"reason,omitempty"` + // Message is a human-readable message indicating details about the last transition + Message string `json:"message,omitempty"` +} + +// CredentialsRequestConditionType are the valid condition types for a CredentialsRequest +type CredentialsRequestConditionType string + +// These are valid conditions for a CredentialsRequest +const ( + // InsufficientCloudCredentials is true when the cloud credentials are deemed to be insufficient + // to either mint custom creds to satisfy the CredentialsRequest or insufficient to + // be able to be passed along as-is to satisfy the CredentialsRequest + InsufficientCloudCredentials CredentialsRequestConditionType = "InsufficientCloudCreds" + // MissingTargetNamespace is true when the namespace specified to hold the resulting + // credentials is not present + MissingTargetNamespace CredentialsRequestConditionType = "MissingTargetNamespace" + // CredentialsProvisionFailure is true whenver there has been an issue while trying + // to provision the credentials (either passthrough or minting). Error message will + // be stored directly in the condition message. + CredentialsProvisionFailure CredentialsRequestConditionType = "CredentialsProvisionFailure" + // CredentialsDeprovisionFailure is true whenever there is an error when trying + // to clean up any previously-created cloud resources + CredentialsDeprovisionFailure CredentialsRequestConditionType = "CredentialsDeprovisionFailure" + // Ignored is true when the CredentialsRequest's ProviderSpec is for + // a different infrastructure platform than what the cluster has been + // deployed to. This is normal as the release image contains CredentialsRequests for all + // possible clouds/infrastructure, and cloud-credential-operator will only act on the + // CredentialsRequests where the cloud/infra matches. + Ignored CredentialsRequestConditionType = "Ignored" +) + +func init() { + SchemeBuilder.Register( + &CredentialsRequest{}, &CredentialsRequestList{}, + &AWSProviderStatus{}, &AWSProviderSpec{}, + &AzureProviderStatus{}, &AzureProviderSpec{}, + &GCPProviderStatus{}, &GCPProviderSpec{}, + &VSphereProviderStatus{}, &VSphereProviderSpec{}, + ) +} diff --git a/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/doc.go b/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/doc.go new file mode 100644 index 00000000000..9b77a72e6f2 --- /dev/null +++ b/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/doc.go @@ -0,0 +1,23 @@ +/* +Copyright 2018 The OpenShift Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package v1 contains API Schema definitions for the cloudcredential v1 API group +// +k8s:openapi-gen=true +// +k8s:deepcopy-gen=package,register +// +k8s:conversion-gen=github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential +// +k8s:defaulter-gen=TypeMeta +// +groupName=cloudcredential.openshift.io +package v1 diff --git a/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/gcp_types.go b/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/gcp_types.go new file mode 100644 index 00000000000..32f88970944 --- /dev/null +++ b/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/gcp_types.go @@ -0,0 +1,44 @@ +/* +Copyright 2019 The OpenShift Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// TODO: these types should eventually be broken out, along with the actuator, to a separate repo. + +// GCPProviderSpec contains the required information to create a service account with policy bindings in GCP. +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type GCPProviderSpec struct { + metav1.TypeMeta `json:",inline"` + // PredefinedRoles is the list of GCP pre-defined roles + // that the CredentialsRequest requires. + PredefinedRoles []string `json:"predefinedRoles"` + // SkipServiceCheck can be set to true to skip the check whether the requested roles + // have the necessary services enabled + // +optional + SkipServiceCheck bool `json:"skipServiceCheck,omitempty"` +} + +// GCPProviderStatus contains the status of the GCP credentials request. +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type GCPProviderStatus struct { + metav1.TypeMeta `json:",inline"` + // ServiceAccountID is the ID of the service account created in GCP for the requested credentials. + ServiceAccountID string `json:"serviceAccountID"` +} diff --git a/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/openstack_types.go b/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/openstack_types.go new file mode 100644 index 00000000000..d83ffb7b271 --- /dev/null +++ b/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/openstack_types.go @@ -0,0 +1,36 @@ +/* +Copyright 2019 The OpenShift Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// TODO: these types should eventually be broken out, along with the actuator, +// to a separate repo. + +// OpenStackProviderSpec the specification of the credentials request in OpenStack. +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type OpenStackProviderSpec struct { + metav1.TypeMeta `json:",inline"` +} + +// OpenStackProviderStatus contains the status of the credentials request in OpenStack. +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type OpenStackProviderStatus struct { + metav1.TypeMeta `json:",inline"` +} diff --git a/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/ovirt_types.go b/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/ovirt_types.go new file mode 100644 index 00000000000..c88b75f82b3 --- /dev/null +++ b/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/ovirt_types.go @@ -0,0 +1,36 @@ +/* +Copyright 2019 The OpenShift Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// TODO: these types should eventually be broken out, along with the actuator, +// to a separate repo. + +// OvirtProviderSpec the specification of the credentials request in Ovirt. +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type OvirtProviderSpec struct { + metav1.TypeMeta `json:",inline"` +} + +// OvirtProviderStatus contains the status of the credentials request in Ovirt. +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type OvirtProviderStatus struct { + metav1.TypeMeta `json:",inline"` +} diff --git a/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/register.go b/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/register.go new file mode 100644 index 00000000000..36bc3a66f50 --- /dev/null +++ b/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/register.go @@ -0,0 +1,44 @@ +/* +Copyright 2018 The OpenShift Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package v1 contains API Schema definitions for the cloudcredential v1 API group +// +k8s:openapi-gen=true +// +k8s:deepcopy-gen=package,register +// +k8s:conversion-gen=github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential +// +k8s:defaulter-gen=TypeMeta +// +groupName=cloudcredential.openshift.io +package v1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +var ( + // SchemeGroupVersion is group version used to register these objects + SchemeGroupVersion = schema.GroupVersion{Group: "cloudcredential.openshift.io", Version: "v1"} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion} + + // AddToScheme is required by pkg/client/... + AddToScheme = SchemeBuilder.AddToScheme +) + +// Resource is required by pkg/client/listers/... +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} diff --git a/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/vsphere_types.go b/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/vsphere_types.go new file mode 100644 index 00000000000..062ee454a1e --- /dev/null +++ b/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/vsphere_types.go @@ -0,0 +1,61 @@ +/* +Copyright 2020 The OpenShift Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// TODO: these types should eventually be broken out, along with the actuator, +// to a separate repo. + +// VSphereProviderSpec contains the required information to create RBAC role +// bindings for VSphere. +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type VSphereProviderSpec struct { + metav1.TypeMeta `json:",inline"` + + // Permissions contains a list of groups of privileges that are being requested. + Permissions []VSpherePermission `json:"permissions"` +} + +// VSpherePermission captures the details of the privileges being requested for the list of entities. +type VSpherePermission struct { + // Privileges is the list of access being requested. + Privileges []string `json:"privileges"` + + // TODO: when implementing mint-mode will need to figure out how to allow + // a CredentialsRequest to indicate that the above list of privileges should + // be bound to a specific scope(s) (eg Storage, Hosts/Clusters, Networking, Global, etc). + // Entities is the list of entities for which the list of permissions should be granted + // access to. + // Entities []string `json:"entities"` + + // Also will need to allow specifying whether permissions should "Propagate to children". + // Propagate bool `json:"propagate"` +} + +// VSphereProviderStatus contains the status of the credentials request in VSphere. +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type VSphereProviderStatus struct { + metav1.TypeMeta `json:",inline"` + + // SecretLastResourceVersion is the resource version of the secret resource + // that was last synced. Used to determine if the object has changed and + // requires a sync. + SecretLastResourceVersion string `json:"secretLastResourceVersion"` +} diff --git a/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/zz_generated.deepcopy.go b/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/zz_generated.deepcopy.go new file mode 100644 index 00000000000..122f310329e --- /dev/null +++ b/vendor/github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1/zz_generated.deepcopy.go @@ -0,0 +1,539 @@ +// +build !ignore_autogenerated + +/* +Copyright 2018 The OpenShift Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +// Code generated by main. DO NOT EDIT. + +package v1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSProviderSpec) DeepCopyInto(out *AWSProviderSpec) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.StatementEntries != nil { + in, out := &in.StatementEntries, &out.StatementEntries + *out = make([]StatementEntry, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSProviderSpec. +func (in *AWSProviderSpec) DeepCopy() *AWSProviderSpec { + if in == nil { + return nil + } + out := new(AWSProviderSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *AWSProviderSpec) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSProviderStatus) DeepCopyInto(out *AWSProviderStatus) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSProviderStatus. +func (in *AWSProviderStatus) DeepCopy() *AWSProviderStatus { + if in == nil { + return nil + } + out := new(AWSProviderStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *AWSProviderStatus) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AzureProviderSpec) DeepCopyInto(out *AzureProviderSpec) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.RoleBindings != nil { + in, out := &in.RoleBindings, &out.RoleBindings + *out = make([]RoleBinding, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureProviderSpec. +func (in *AzureProviderSpec) DeepCopy() *AzureProviderSpec { + if in == nil { + return nil + } + out := new(AzureProviderSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *AzureProviderSpec) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AzureProviderStatus) DeepCopyInto(out *AzureProviderStatus) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureProviderStatus. +func (in *AzureProviderStatus) DeepCopy() *AzureProviderStatus { + if in == nil { + return nil + } + out := new(AzureProviderStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *AzureProviderStatus) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CredentialsRequest) DeepCopyInto(out *CredentialsRequest) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CredentialsRequest. +func (in *CredentialsRequest) DeepCopy() *CredentialsRequest { + if in == nil { + return nil + } + out := new(CredentialsRequest) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CredentialsRequest) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CredentialsRequestCondition) DeepCopyInto(out *CredentialsRequestCondition) { + *out = *in + in.LastProbeTime.DeepCopyInto(&out.LastProbeTime) + in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CredentialsRequestCondition. +func (in *CredentialsRequestCondition) DeepCopy() *CredentialsRequestCondition { + if in == nil { + return nil + } + out := new(CredentialsRequestCondition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CredentialsRequestList) DeepCopyInto(out *CredentialsRequestList) { + *out = *in + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CredentialsRequest, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CredentialsRequestList. +func (in *CredentialsRequestList) DeepCopy() *CredentialsRequestList { + if in == nil { + return nil + } + out := new(CredentialsRequestList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CredentialsRequestList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CredentialsRequestSpec) DeepCopyInto(out *CredentialsRequestSpec) { + *out = *in + out.SecretRef = in.SecretRef + if in.ProviderSpec != nil { + in, out := &in.ProviderSpec, &out.ProviderSpec + *out = new(runtime.RawExtension) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CredentialsRequestSpec. +func (in *CredentialsRequestSpec) DeepCopy() *CredentialsRequestSpec { + if in == nil { + return nil + } + out := new(CredentialsRequestSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CredentialsRequestStatus) DeepCopyInto(out *CredentialsRequestStatus) { + *out = *in + if in.LastSyncTimestamp != nil { + in, out := &in.LastSyncTimestamp, &out.LastSyncTimestamp + *out = (*in).DeepCopy() + } + if in.ProviderStatus != nil { + in, out := &in.ProviderStatus, &out.ProviderStatus + *out = new(runtime.RawExtension) + (*in).DeepCopyInto(*out) + } + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]CredentialsRequestCondition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CredentialsRequestStatus. +func (in *CredentialsRequestStatus) DeepCopy() *CredentialsRequestStatus { + if in == nil { + return nil + } + out := new(CredentialsRequestStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GCPProviderSpec) DeepCopyInto(out *GCPProviderSpec) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.PredefinedRoles != nil { + in, out := &in.PredefinedRoles, &out.PredefinedRoles + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPProviderSpec. +func (in *GCPProviderSpec) DeepCopy() *GCPProviderSpec { + if in == nil { + return nil + } + out := new(GCPProviderSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *GCPProviderSpec) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GCPProviderStatus) DeepCopyInto(out *GCPProviderStatus) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPProviderStatus. +func (in *GCPProviderStatus) DeepCopy() *GCPProviderStatus { + if in == nil { + return nil + } + out := new(GCPProviderStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *GCPProviderStatus) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OpenStackProviderSpec) DeepCopyInto(out *OpenStackProviderSpec) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenStackProviderSpec. +func (in *OpenStackProviderSpec) DeepCopy() *OpenStackProviderSpec { + if in == nil { + return nil + } + out := new(OpenStackProviderSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *OpenStackProviderSpec) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OpenStackProviderStatus) DeepCopyInto(out *OpenStackProviderStatus) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenStackProviderStatus. +func (in *OpenStackProviderStatus) DeepCopy() *OpenStackProviderStatus { + if in == nil { + return nil + } + out := new(OpenStackProviderStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *OpenStackProviderStatus) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OvirtProviderSpec) DeepCopyInto(out *OvirtProviderSpec) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OvirtProviderSpec. +func (in *OvirtProviderSpec) DeepCopy() *OvirtProviderSpec { + if in == nil { + return nil + } + out := new(OvirtProviderSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *OvirtProviderSpec) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OvirtProviderStatus) DeepCopyInto(out *OvirtProviderStatus) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OvirtProviderStatus. +func (in *OvirtProviderStatus) DeepCopy() *OvirtProviderStatus { + if in == nil { + return nil + } + out := new(OvirtProviderStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *OvirtProviderStatus) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RoleBinding) DeepCopyInto(out *RoleBinding) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleBinding. +func (in *RoleBinding) DeepCopy() *RoleBinding { + if in == nil { + return nil + } + out := new(RoleBinding) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StatementEntry) DeepCopyInto(out *StatementEntry) { + *out = *in + if in.Action != nil { + in, out := &in.Action, &out.Action + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatementEntry. +func (in *StatementEntry) DeepCopy() *StatementEntry { + if in == nil { + return nil + } + out := new(StatementEntry) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VSpherePermission) DeepCopyInto(out *VSpherePermission) { + *out = *in + if in.Privileges != nil { + in, out := &in.Privileges, &out.Privileges + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VSpherePermission. +func (in *VSpherePermission) DeepCopy() *VSpherePermission { + if in == nil { + return nil + } + out := new(VSpherePermission) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VSphereProviderSpec) DeepCopyInto(out *VSphereProviderSpec) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.Permissions != nil { + in, out := &in.Permissions, &out.Permissions + *out = make([]VSpherePermission, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VSphereProviderSpec. +func (in *VSphereProviderSpec) DeepCopy() *VSphereProviderSpec { + if in == nil { + return nil + } + out := new(VSphereProviderSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *VSphereProviderSpec) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VSphereProviderStatus) DeepCopyInto(out *VSphereProviderStatus) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VSphereProviderStatus. +func (in *VSphereProviderStatus) DeepCopy() *VSphereProviderStatus { + if in == nil { + return nil + } + out := new(VSphereProviderStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *VSphereProviderStatus) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} diff --git a/vendor/modules.txt b/vendor/modules.txt index 41023ccf258..227ce25781e 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1044,6 +1044,9 @@ github.com/openshift/client-go/samples/clientset/versioned/typed/samples/v1 github.com/openshift/client-go/security/clientset/versioned github.com/openshift/client-go/security/clientset/versioned/scheme github.com/openshift/client-go/security/clientset/versioned/typed/security/v1 +# github.com/openshift/cloud-credential-operator v0.0.0-00010101000000-000000000000 => github.com/openshift/cloud-credential-operator v0.0.0-20200316201045-d10080b52c9e +## explicit +github.com/openshift/cloud-credential-operator/pkg/apis/cloudcredential/v1 # github.com/openshift/console-operator v0.0.0-20220407014945-45d37e70e0c2 => github.com/openshift/console-operator v0.0.0-20220318130441-e44516b9c315 ## explicit; go 1.16 github.com/openshift/console-operator/pkg/api