Documentation
¶
Index ¶
- Constants
- func Check(ctx context.Context, opts *ProviderCheckOpts)
- type AwsClient
- func (c *AwsClient) BucketExists(ctx context.Context, name string) (bool, error)
- func (c AwsClient) CheckAccess(ctx context.Context) ProviderCheckResult
- func (c AwsClient) CheckConfig() error
- func (c AwsClient) CreateBucket(ctx context.Context, name string, force bool) error
- func (c *AwsClient) CreateDynamodbTable(ctx context.Context, name string, force bool) error
- func (c AwsClient) CreateStateBackend(ctx context.Context) error
- func (c AwsClient) CurrentIdentity(ctx context.Context) (CloudProviderIdentity, error)
- func (c *AwsClient) DescribeEksCluster(ctx context.Context) (*eks.DescribeClusterOutput, error)
- func (c *AwsClient) DestroyBucket(ctx context.Context, name string) error
- func (c *AwsClient) DestroyDynamodbTable(ctx context.Context, name string) error
- func (c AwsClient) DestroyStateBackend(ctx context.Context) error
- func (c *AwsClient) DynamodbTableExists(ctx context.Context, name string, d time.Duration) bool
- func (c *AwsClient) EksKubeconfigInfo(ctx context.Context) (KubeconfigInfo, EksToken, error)
- func (c AwsClient) KubeconfigInfo(ctx context.Context) (KubeconfigInfo, error)
- func (c AwsClient) PrepareAccount(ctx context.Context) error
- func (c AwsClient) PrintClusterInfo(ctx context.Context) error
- func (c AwsClient) PrintConfig()
- func (c AwsClient) ProviderName() string
- func (c AwsClient) StateBackendInfo(stage string) CloudProviderStateBackend
- type AwsProviderCheckResult
- type AwsSdkClientFactory
- type CloudProviderClient
- type CloudProviderClientOpts
- type CloudProviderIdentity
- type CloudProviderStateBackend
- type CloudflareAccessCheckResult
- type CloudflareClient
- type CloudflareZonesResponse
- type CloudflareZonesResponseResult
- type DnsProviderClient
- type DynamodbClient
- type EksClient
- type EksToken
- type EmptyProvider
- type EmptyProviderCheckResult
- type GithubCheckAccessResult
- type GithubClient
- type GithubProviderCheckResult
- type GithubTokenSource
- type IamClient
- type IronbankCheckAccessResult
- type IronbankClient
- type KubeconfigInfo
- type KubernetesApi
- type KubernetesApiImpl
- type KubernetesApiMock
- func (api *KubernetesApiMock) AddResources(res ...*metav1.APIResourceList) *KubernetesApiMock
- func (api KubernetesApiMock) ClientSet() (kubernetes.Interface, error)
- func (api KubernetesApiMock) DiscoveryClient() (discovery.DiscoveryInterface, error)
- func (api KubernetesApiMock) DynamicClient() (dynamic.Interface, error)
- func (api *KubernetesApiMock) WithClientObjects(objects ...runtime.Object) *KubernetesApiMock
- func (api *KubernetesApiMock) WithDynamicObjects(objects ...runtime.Object) *KubernetesApiMock
- func (api *KubernetesApiMock) WithError(err error) *KubernetesApiMock
- type KubernetesAppConnectionInfo
- type KubernetesClient
- func (c KubernetesClient) CheckAccess(ctx context.Context) ProviderCheckResult
- func (c KubernetesClient) EnsureKubeconfig(path string) error
- func (c KubernetesClient) Export(ctx context.Context, cfg quartzSchema.ExportConfig) (map[string][]byte, error)
- func (c KubernetesClient) ForEachDynamicResources(ctx context.Context, kind schema.GroupVersionResource, ns string, ...) error
- func (c KubernetesClient) GetAppConnectionInfo(ctx context.Context, name string, opts quartzSchema.ApplicationLookupConfig) KubernetesAppConnectionInfo
- func (c KubernetesClient) GetConfigMapValue(ctx context.Context, ns string, name string) (map[string]string, error)
- func (c KubernetesClient) GetDynamicResource(ctx context.Context, kind schema.GroupVersionResource, ns string, name string) (map[string]interface{}, error)
- func (c KubernetesClient) GetSecret(ctx context.Context, ns string, name string) (*corev1.Secret, error)
- func (c KubernetesClient) GetSecretValue(ctx context.Context, ns string, name string) (map[string]string, error)
- func (c KubernetesClient) LookupKind(ctx context.Context, kind string) (schema.GroupVersionResource, error)
- func (c KubernetesClient) PrintClusterAppInfo(ctx context.Context, apps map[string]quartzSchema.ApplicationLookupConfig)
- func (c KubernetesClient) PrintClusterInfo(ctx context.Context)
- func (c KubernetesClient) ProviderName() string
- func (c KubernetesClient) RefreshExternalSecrets(ctx context.Context) ([]KubernetesResource, error)
- func (c KubernetesClient) Restart(ctx context.Context, kind schema.GroupVersionResource, ns string, name string) error
- func (c KubernetesClient) Update(ctx context.Context, kind schema.GroupVersionResource, ns string, ...) (*unstructured.Unstructured, error)
- func (c KubernetesClient) WaitConditionState(ctx context.Context, kind schema.GroupVersionResource, ns string, name string, ...) error
- func (c KubernetesClient) WriteKubeconfig(w io.Writer) error
- func (c KubernetesClient) WriteKubeconfigFile(path string) error
- type KubernetesLookupCache
- type KubernetesProviderCheckResult
- type KubernetesProviderClient
- type KubernetesResource
- type LazyAwsSdkClient
- func (c *LazyAwsSdkClient) Dynamodb() DynamodbClient
- func (c *LazyAwsSdkClient) Eks() EksClient
- func (c *LazyAwsSdkClient) EksTokenGenerator() (token.Generator, error)
- func (c *LazyAwsSdkClient) Iam() IamClient
- func (c *LazyAwsSdkClient) S3() S3Client
- func (c *LazyAwsSdkClient) S3Region(region string) S3Client
- func (c *LazyAwsSdkClient) Sts() StsClient
- type LocalClient
- func (c LocalClient) CheckAccess(ctx context.Context) ProviderCheckResult
- func (c LocalClient) CheckConfig() error
- func (c LocalClient) CreateStateBackend(_ context.Context) error
- func (c LocalClient) CurrentIdentity(ctx context.Context) (CloudProviderIdentity, error)
- func (c LocalClient) DestroyStateBackend(_ context.Context) error
- func (c LocalClient) KubeconfigInfo(ctx context.Context) (KubeconfigInfo, error)
- func (c LocalClient) PrepareAccount(ctx context.Context) error
- func (c LocalClient) PrintClusterInfo(ctx context.Context) error
- func (c LocalClient) PrintConfig()
- func (c LocalClient) ProviderName() string
- func (c LocalClient) StateBackendInfo(_ string) CloudProviderStateBackend
- type Provider
- type ProviderCheckOpts
- type ProviderCheckResult
- type ProviderCheckResultRow
- type ProviderFactory
- func (f *ProviderFactory) Cloud(ctx context.Context) (CloudProviderClient, error)
- func (f *ProviderFactory) Dns(ctx context.Context) (DnsProviderClient, error)
- func (f *ProviderFactory) ImageRegistry(ctx context.Context) (Provider, error)
- func (f *ProviderFactory) Kubernetes(ctx context.Context) (KubernetesProviderClient, error)
- func (f *ProviderFactory) SourceControl(ctx context.Context) (Provider, error)
- type ProviderFactoryOption
- func WithCloudProvider(p CloudProviderClient) ProviderFactoryOption
- func WithConfig(c schema.QuartzConfig) ProviderFactoryOption
- func WithDnsProvider(p DnsProviderClient) ProviderFactoryOption
- func WithImageRegistryProvider(p Provider) ProviderFactoryOption
- func WithKubernetesProvider(p KubernetesProviderClient) ProviderFactoryOption
- func WithSecrets(s schema.QuartzSecrets) ProviderFactoryOption
- func WithSourceControlProvider(p Provider) ProviderFactoryOption
- type S3Client
- type StsClient
Constants ¶
const (
AWS_PROVIDER = "AWS"
)
Variables ¶
This section is empty.
Functions ¶
func Check ¶
func Check(ctx context.Context, opts *ProviderCheckOpts)
Check performs access checks for all providers in the given options. It logs the results and execution statistics.
Types ¶
type AwsClient ¶
type AwsClient struct {
// contains filtered or unexported fields
}
AwsClient represents an AWS client with configuration and SDK factory. It provides methods to interact with AWS services.
func NewAwsClient ¶
func NewLazyAwsClient ¶
func (*AwsClient) BucketExists ¶
BucketExists checks if an S3 bucket with the specified name exists. It returns true if the bucket exists, false otherwise, and an error if the operation fails.
func (AwsClient) CheckAccess ¶
func (c AwsClient) CheckAccess(ctx context.Context) ProviderCheckResult
func (AwsClient) CheckConfig ¶
func (AwsClient) CreateBucket ¶
CreateBucket creates an S3 bucket with the specified name. If the bucket already exists and `force` is false, the operation is skipped.
func (*AwsClient) CreateDynamodbTable ¶
CreateDynamodbTable creates a DynamoDB table with the specified name. If the table already exists and `force` is false, the operation is skipped.
func (AwsClient) CreateStateBackend ¶
func (AwsClient) CurrentIdentity ¶
func (c AwsClient) CurrentIdentity(ctx context.Context) (CloudProviderIdentity, error)
func (*AwsClient) DescribeEksCluster ¶
DescribeEksCluster describes the EKS cluster associated with the client. It returns the cluster details or an error if the operation fails.
func (*AwsClient) DestroyBucket ¶
DestroyBucket deletes an S3 bucket with the specified name. The bucket must be empty before it can be deleted.
func (*AwsClient) DestroyDynamodbTable ¶
DestroyDynamodbTable deletes a DynamoDB table with the specified name.
func (AwsClient) DestroyStateBackend ¶
func (*AwsClient) DynamodbTableExists ¶
DynamodbTableExists checks if a DynamoDB table with the specified name exists within the given duration.
func (*AwsClient) EksKubeconfigInfo ¶
EksKubeconfigInfo retrieves the kubeconfig information for an EKS cluster. It returns the kubeconfig details, an EKS token, and an error if any occurs.
func (AwsClient) KubeconfigInfo ¶
func (c AwsClient) KubeconfigInfo(ctx context.Context) (KubeconfigInfo, error)
func (AwsClient) PrintConfig ¶
func (c AwsClient) PrintConfig()
func (AwsClient) ProviderName ¶
ProviderName returns the name of the cloud provider ("AWS").
func (AwsClient) StateBackendInfo ¶
func (c AwsClient) StateBackendInfo(stage string) CloudProviderStateBackend
type AwsProviderCheckResult ¶
type AwsProviderCheckResult struct {
Identity CloudProviderIdentity
Error error
}
func (AwsProviderCheckResult) ToTable ¶
func (r AwsProviderCheckResult) ToTable() ([]string, []ProviderCheckResultRow)
type AwsSdkClientFactory ¶
type AwsSdkClientFactory interface {
Sts() StsClient
Iam() IamClient
Dynamodb() DynamodbClient
S3() S3Client
S3Region(region string) S3Client
Eks() EksClient
EksTokenGenerator() (token.Generator, error)
}
AwsSdkClientFactory defines the interface for creating AWS SDK clients.
type CloudProviderClient ¶
type CloudProviderClient interface {
Provider
// CheckConfig validates the cloud provider configuration.
CheckConfig() error
// CurrentIdentity retrieves the current identity of the cloud provider account.
CurrentIdentity(ctx context.Context) (CloudProviderIdentity, error)
// StateBackendInfo retrieves information about the state backend for the specified stage.
StateBackendInfo(stage string) CloudProviderStateBackend
// CreateStateBackend creates the state backend for the cloud provider.
CreateStateBackend(ctx context.Context) error
// DestroyStateBackend destroys the state backend for the cloud provider.
DestroyStateBackend(ctx context.Context) error
// KubeconfigInfo retrieves the kubeconfig information for the cloud provider.
KubeconfigInfo(ctx context.Context) (KubeconfigInfo, error)
// PrintConfig prints the cloud provider configuration.
PrintConfig()
// PrintClusterInfo prints information about the cloud provider's cluster.
PrintClusterInfo(ctx context.Context) error
// PrepareAccount prepares the cloud provider account for use.
PrepareAccount(ctx context.Context) error
}
CloudProviderClient defines the interface for cloud provider clients.
func NewCloudProviderClient ¶
func NewCloudProviderClient(ctx context.Context, cfg schema.QuartzConfig) (CloudProviderClient, error)
NewCloudProviderClient creates a new cloud provider client using the provided Quartz configuration.
func NewCloudProviderClientWithOpts ¶
func NewCloudProviderClientWithOpts(ctx context.Context, o CloudProviderClientOpts) (CloudProviderClient, error)
NewCloudProviderClientWithOpts creates a new cloud provider client using the specified options.
type CloudProviderClientOpts ¶
type CloudProviderClientOpts struct {
Provider string // The name of the cloud provider (e.g., "aws", "local").
Name string // The name of the cloud provider client.
Region string // The region for the cloud provider.
// contains filtered or unexported fields
}
CloudProviderClientOpts contains options for creating a cloud provider client.
type CloudProviderIdentity ¶
type CloudProviderIdentity struct {
AccountId string // The account ID of the cloud provider.
AccountName string // The account name of the cloud provider.
UserId string // The user ID of the cloud provider account.
UserName string // The user name of the cloud provider account.
}
CloudProviderIdentity represents the identity of a cloud provider account.
type CloudProviderStateBackend ¶
type CloudProviderStateBackend struct {
Name string // The name of the state backend.
InitBackendConfig []string // The initialization configuration for the state backend.
}
CloudProviderStateBackend represents the state backend configuration for a cloud provider.
type CloudflareAccessCheckResult ¶
type CloudflareAccessCheckResult struct {
Status bool // Indicates whether the access check was successful.
Error error // Contains any error encountered during the check.
Response CloudflareZonesResponse // The response from the Cloudflare API.
}
CloudflareAccessCheckResult represents the result of a Cloudflare access check.
func (CloudflareAccessCheckResult) ToTable ¶
func (r CloudflareAccessCheckResult) ToTable() ([]string, []ProviderCheckResultRow)
ToTable converts the CloudflareAccessCheckResult into table headers and rows for display.
type CloudflareClient ¶
type CloudflareClient struct {
// contains filtered or unexported fields
}
CloudflareClient represents a client for interacting with the Cloudflare API.
func NewCloudflareClient ¶
func NewCloudflareClient(httpClient util.HttpClientFactory, providerName string, accountId string, apiToken string, domain string) (CloudflareClient, error)
NewCloudflareClient creates a new CloudflareClient instance. Returns an error if required parameters (accountId, apiToken, or domain) are missing.
func (CloudflareClient) CheckAccess ¶
func (c CloudflareClient) CheckAccess(ctx context.Context) ProviderCheckResult
CheckAccess checks access to the Cloudflare API for the specified domain and account. It verifies the required permissions and returns the result as a CloudflareAccessCheckResult.
func (CloudflareClient) ProviderName ¶
func (c CloudflareClient) ProviderName() string
ProviderName returns the name of the Cloudflare provider.
type CloudflareZonesResponse ¶
type CloudflareZonesResponse struct {
Success bool // Indicates whether the API call was successful.
Errors []string // Contains any errors returned by the API.
Messages []string // Contains any messages returned by the API.
Result []CloudflareZonesResponseResult // The list of zones returned by the API.
}
CloudflareZonesResponse represents the response from the Cloudflare API for zones.
type CloudflareZonesResponseResult ¶
type CloudflareZonesResponseResult struct {
Id string // The ID of the zone.
Name string // The name of the zone.
Permissions []string // The permissions associated with the zone.
}
CloudflareZonesResponseResult represents a single zone in the Cloudflare API response.
type DnsProviderClient ¶
type DnsProviderClient interface {
Provider
}
DnsProviderClient defines the interface for DNS provider clients.
func NewDnsProviderClient ¶
func NewDnsProviderClient(ctx context.Context, cfg schema.QuartzConfig, secrets schema.QuartzSecrets) (DnsProviderClient, error)
NewDnsProviderClient creates a new DNS provider client based on the provided configuration and secrets. If the test mode is enabled, it returns a TestDnsProviderClient. Otherwise, it initializes the appropriate DNS provider client.
type DynamodbClient ¶
type DynamodbClient interface {
dynamodb.DescribeTableAPIClient
CreateTable(ctx context.Context, params *dynamodb.CreateTableInput, optFns ...func(*dynamodb.Options)) (*dynamodb.CreateTableOutput, error)
DeleteTable(ctx context.Context, params *dynamodb.DeleteTableInput, optFns ...func(*dynamodb.Options)) (*dynamodb.DeleteTableOutput, error)
}
DynamodbClient defines the interface for interacting with AWS DynamoDB.
type EksClient ¶
type EksClient interface {
DescribeCluster(ctx context.Context, params *eks.DescribeClusterInput, optFns ...func(*eks.Options)) (*eks.DescribeClusterOutput, error)
}
EksClient defines the interface for interacting with AWS EKS.
type EksToken ¶
type EksToken struct {
Token token.Token // The EKS authentication token.
JsonString string // The JSON representation of the token.
}
EksToken represents an EKS authentication token and its JSON representation.
type EmptyProvider ¶
type EmptyProvider struct {
Name string // The name of the provider.
Error error // The error associated with the provider, if any.
}
EmptyProvider represents a placeholder provider with no functionality.
func NewEmptyProvider ¶
func NewEmptyProvider(name string, err error) EmptyProvider
NewEmptyProvider creates a new instance of EmptyProvider with the specified name and error.
func (EmptyProvider) CheckAccess ¶
func (c EmptyProvider) CheckAccess(ctx context.Context) ProviderCheckResult
CheckAccess performs an access check for the EmptyProvider. It always returns an EmptyProviderCheckResult with the associated error.
func (EmptyProvider) ProviderName ¶
func (c EmptyProvider) ProviderName() string
ProviderName returns the name of the EmptyProvider.
type EmptyProviderCheckResult ¶
type EmptyProviderCheckResult struct {
Error error // The error associated with the check result, if any.
}
EmptyProviderCheckResult represents the result of a check for an EmptyProvider.
func (EmptyProviderCheckResult) ToTable ¶
func (r EmptyProviderCheckResult) ToTable() ([]string, []ProviderCheckResultRow)
ToTable converts the EmptyProviderCheckResult into table headers and rows for display.
type GithubCheckAccessResult ¶
type GithubCheckAccessResult struct {
Organization string // The organization name.
Repository string // The repository name.
Error error // Any error encountered during the access check.
Name string // The full name of the repository.
Pull bool // Indicates if the user has pull access.
Push bool // Indicates if the user has push access.
Triage bool // Indicates if the user has triage access.
Maintain bool // Indicates if the user has maintain access.
Admin bool // Indicates if the user has admin access.
Packages bool // Indicates if the user has access to packages.
}
GithubCheckAccessResult represents the result of a GitHub repository access check.
type GithubClient ¶
type GithubClient struct {
// contains filtered or unexported fields
}
GithubClient represents a client for interacting with the GitHub API.
func NewGithubClient ¶
func NewGithubClient(httpClient util.HttpClientFactory, providerName string, cfg schema.QuartzConfig, creds schema.GithubCredentials) (GithubClient, error)
NewGithubClient creates a new GitHub client with the specified configuration and credentials. Returns an error if the credentials are missing.
func (GithubClient) CheckAccess ¶
func (c GithubClient) CheckAccess(ctx context.Context) ProviderCheckResult
CheckAccess performs an access check for the GitHub provider. It returns a GithubProviderCheckResult containing the results of the check.
func (GithubClient) CheckGithubRepoAccess ¶
func (c GithubClient) CheckGithubRepoAccess(ctx context.Context) ([]GithubCheckAccessResult, error)
CheckGithubRepoAccess checks access to the configured GitHub repositories. It returns a list of GithubCheckAccessResult and an error if any issues are encountered.
func (GithubClient) ProviderName ¶
func (c GithubClient) ProviderName() string
ProviderName returns the name of the GitHub provider.
func (GithubClient) Repositories ¶
func (c GithubClient) Repositories() []schema.RepositoryConfig
Repositories retrieves the list of repositories configured in the Quartz configuration.
type GithubProviderCheckResult ¶
type GithubProviderCheckResult struct {
Status bool // Indicates if the check was successful.
Results []GithubCheckAccessResult // The results of the access checks.
Error error // Any error encountered during the check.
}
GithubProviderCheckResult represents the result of a GitHub provider check.
func (GithubProviderCheckResult) ToTable ¶
func (r GithubProviderCheckResult) ToTable() ([]string, []ProviderCheckResultRow)
ToTable converts the GithubProviderCheckResult into table headers and rows for display.
type GithubTokenSource ¶
type GithubTokenSource struct {
AccessToken string // The GitHub access token.
}
GithubTokenSource represents a source for GitHub access tokens.
type IamClient ¶
type IamClient interface {
ListAccountAliases(ctx context.Context, params *iam.ListAccountAliasesInput, optFns ...func(*iam.Options)) (*iam.ListAccountAliasesOutput, error)
CreateServiceLinkedRole(ctx context.Context, params *iam.CreateServiceLinkedRoleInput, optFns ...func(*iam.Options)) (*iam.CreateServiceLinkedRoleOutput, error)
}
IamClient defines the interface for interacting with AWS IAM.
type IronbankCheckAccessResult ¶
type IronbankCheckAccessResult struct {
StatusCode int // The HTTP status code returned by the Ironbank API.
Username string // The username used for the access check.
Error error // Any error encountered during the access check.
}
IronbankCheckAccessResult represents the result of an Ironbank access check.
func (IronbankCheckAccessResult) ToTable ¶
func (r IronbankCheckAccessResult) ToTable() ([]string, []ProviderCheckResultRow)
ToTable converts the IronbankCheckAccessResult into table headers and rows for display.
type IronbankClient ¶
type IronbankClient struct {
// contains filtered or unexported fields
}
IronbankClient represents a client for interacting with the Ironbank API.
func NewIronbankClient ¶
func NewIronbankClient(httpClient util.HttpClientFactory, providerName string, username string, password string) (*IronbankClient, error)
NewIronbankClient creates a new IronbankClient instance with the specified credentials. Returns an error if the username or password is missing.
func (*IronbankClient) CheckAccess ¶
func (c *IronbankClient) CheckAccess(ctx context.Context) ProviderCheckResult
CheckAccess performs an access check against the Ironbank API. It returns an IronbankCheckAccessResult containing the result of the check.
func (*IronbankClient) ProviderName ¶
func (c *IronbankClient) ProviderName() string
ProviderName returns the name of the Ironbank provider.
type KubeconfigInfo ¶
type KubeconfigInfo struct {
Cluster string
Context string
User string
Endpoint string
CertificateAuthority string
Token string
Expiration time.Time
}
KubeconfigInfo contains information about the Kubernetes configuration.
func (KubeconfigInfo) Kubeconfig ¶
func (kc KubeconfigInfo) Kubeconfig(cfg quartzSchema.QuartzConfig) quartzSchema.Kubeconfig
Kubeconfig converts the KubeconfigInfo to a Kubeconfig structure.
func (KubeconfigInfo) ToKubeconfigYamlBytes ¶
func (kc KubeconfigInfo) ToKubeconfigYamlBytes(cfg quartzSchema.QuartzConfig) []byte
ToKubeconfigYamlBytes converts the KubeconfigInfo to YAML bytes.
type KubernetesApi ¶
type KubernetesApi interface {
// ClientSet returns a Kubernetes clientset for interacting with core Kubernetes resources.
ClientSet() (kubernetes.Interface, error)
// DynamicClient returns a dynamic Kubernetes client for interacting with unstructured resources.
DynamicClient() (dynamic.Interface, error)
// DiscoveryClient returns a discovery client for querying API server metadata.
DiscoveryClient() (discovery.DiscoveryInterface, error)
}
KubernetesApi defines the interface for interacting with Kubernetes APIs.
func NewKubernetesApi ¶
func NewKubernetesApi(ctx context.Context, cfg quartzSchema.QuartzConfig, i *KubeconfigInfo) (KubernetesApi, error)
NewKubernetesApi creates a new KubernetesApi instance using the provided configuration and kubeconfig information. If test mode is enabled, it returns a mock implementation.
type KubernetesApiImpl ¶
type KubernetesApiImpl struct {
// contains filtered or unexported fields
}
KubernetesApiImpl is an implementation of KubernetesApi using a REST configuration.
func (KubernetesApiImpl) ClientSet ¶
func (api KubernetesApiImpl) ClientSet() (kubernetes.Interface, error)
ClientSet returns a Kubernetes clientset for interacting with core Kubernetes resources.
func (KubernetesApiImpl) DiscoveryClient ¶
func (api KubernetesApiImpl) DiscoveryClient() (discovery.DiscoveryInterface, error)
DiscoveryClient returns a discovery client for querying API server metadata.
func (KubernetesApiImpl) DynamicClient ¶
func (api KubernetesApiImpl) DynamicClient() (dynamic.Interface, error)
DynamicClient returns a dynamic Kubernetes client for interacting with unstructured resources.
type KubernetesApiMock ¶
type KubernetesApiMock struct {
// contains filtered or unexported fields
}
KubernetesApiMock is a mock implementation of the IKubernetesApi interface for testing purposes.
func NewKubernetesApiMock ¶
func NewKubernetesApiMock() *KubernetesApiMock
NewKubernetesApiMock creates a new instance of KubernetesApiMock with default API resources.
func (*KubernetesApiMock) AddResources ¶
func (api *KubernetesApiMock) AddResources(res ...*metav1.APIResourceList) *KubernetesApiMock
AddResources adds API resources to the mock discovery client.
func (KubernetesApiMock) ClientSet ¶
func (api KubernetesApiMock) ClientSet() (kubernetes.Interface, error)
ClientSet returns a fake Kubernetes clientset populated with the mock client objects.
func (KubernetesApiMock) DiscoveryClient ¶
func (api KubernetesApiMock) DiscoveryClient() (discovery.DiscoveryInterface, error)
DiscoveryClient returns a fake discovery client populated with the mock API resources.
func (KubernetesApiMock) DynamicClient ¶
func (api KubernetesApiMock) DynamicClient() (dynamic.Interface, error)
DynamicClient returns a fake dynamic client populated with the mock dynamic objects.
func (*KubernetesApiMock) WithClientObjects ¶
func (api *KubernetesApiMock) WithClientObjects(objects ...runtime.Object) *KubernetesApiMock
WithClientObjects adds client objects to the mock clientset.
func (*KubernetesApiMock) WithDynamicObjects ¶
func (api *KubernetesApiMock) WithDynamicObjects(objects ...runtime.Object) *KubernetesApiMock
WithDynamicObjects adds dynamic objects to the mock dynamic client.
func (*KubernetesApiMock) WithError ¶
func (api *KubernetesApiMock) WithError(err error) *KubernetesApiMock
WithError sets the error to be returned by the mock API.
type KubernetesAppConnectionInfo ¶
type KubernetesAppConnectionInfo struct {
Name string
PublicEndpoint string
AdminUsername string
AdminPassword string
Error error
}
KubernetesAppConnectionInfo contains information about an application's connection in Kubernetes.
type KubernetesClient ¶
type KubernetesClient struct {
// contains filtered or unexported fields
}
KubernetesClient is the implementation of the Kubernetes provider client.
func NewKubernetesClient ¶
func NewKubernetesClient(api KubernetesApi, kubeconfig KubeconfigInfo, cfg quartzSchema.QuartzConfig) (KubernetesClient, error)
NewKubernetesClient creates a new KubernetesClient instance.
func (KubernetesClient) CheckAccess ¶
func (c KubernetesClient) CheckAccess(ctx context.Context) ProviderCheckResult
CheckAccess checks access to the Kubernetes cluster.
func (KubernetesClient) EnsureKubeconfig ¶
func (c KubernetesClient) EnsureKubeconfig(path string) error
EnsureKubeconfig ensures that the kubeconfig file exists at the specified path.
func (KubernetesClient) Export ¶
func (c KubernetesClient) Export(ctx context.Context, cfg quartzSchema.ExportConfig) (map[string][]byte, error)
Export exports Kubernetes resources based on the provided configuration.
func (KubernetesClient) ForEachDynamicResources ¶
func (c KubernetesClient) ForEachDynamicResources(ctx context.Context, kind schema.GroupVersionResource, ns string, onEachItem func(unstructured.Unstructured)) error
ForEachDynamicResources iterates over all dynamic resources of a specific kind and namespace.
func (KubernetesClient) GetAppConnectionInfo ¶
func (c KubernetesClient) GetAppConnectionInfo(ctx context.Context, name string, opts quartzSchema.ApplicationLookupConfig) KubernetesAppConnectionInfo
GetAppConnectionInfo retrieves connection information for an application.
func (KubernetesClient) GetConfigMapValue ¶
func (c KubernetesClient) GetConfigMapValue(ctx context.Context, ns string, name string) (map[string]string, error)
GetConfigMapValue retrieves the key-value pairs from a ConfigMap.
func (KubernetesClient) GetDynamicResource ¶
func (c KubernetesClient) GetDynamicResource(ctx context.Context, kind schema.GroupVersionResource, ns string, name string) (map[string]interface{}, error)
GetDynamicResource retrieves a dynamic resource from the cluster.
func (KubernetesClient) GetSecret ¶
func (c KubernetesClient) GetSecret(ctx context.Context, ns string, name string) (*corev1.Secret, error)
GetSecret retrieves a Secret from the cluster.
func (KubernetesClient) GetSecretValue ¶
func (c KubernetesClient) GetSecretValue(ctx context.Context, ns string, name string) (map[string]string, error)
GetSecretValue retrieves the key-value pairs from a Secret.
func (KubernetesClient) LookupKind ¶
func (c KubernetesClient) LookupKind(ctx context.Context, kind string) (schema.GroupVersionResource, error)
LookupKind looks up the GroupVersionResource for a given kind.
func (KubernetesClient) PrintClusterAppInfo ¶
func (c KubernetesClient) PrintClusterAppInfo(ctx context.Context, apps map[string]quartzSchema.ApplicationLookupConfig)
PrintClusterAppInfo prints detailed information about the specified applications in the cluster.
func (KubernetesClient) PrintClusterInfo ¶
func (c KubernetesClient) PrintClusterInfo(ctx context.Context)
PrintClusterInfo prints information about the cluster and its applications.
func (KubernetesClient) ProviderName ¶
func (c KubernetesClient) ProviderName() string
ProviderName returns the name of the provider.
func (KubernetesClient) RefreshExternalSecrets ¶
func (c KubernetesClient) RefreshExternalSecrets(ctx context.Context) ([]KubernetesResource, error)
RefreshExternalSecrets triggers a refresh of external secrets in the cluster.
func (KubernetesClient) Restart ¶
func (c KubernetesClient) Restart(ctx context.Context, kind schema.GroupVersionResource, ns string, name string) error
Restart restarts resources of a specific kind in the cluster.
func (KubernetesClient) Update ¶
func (c KubernetesClient) Update(ctx context.Context, kind schema.GroupVersionResource, ns string, obj *unstructured.Unstructured) (*unstructured.Unstructured, error)
Update updates a dynamic resource in the cluster.
func (KubernetesClient) WaitConditionState ¶
func (c KubernetesClient) WaitConditionState(ctx context.Context, kind schema.GroupVersionResource, ns string, name string, state string, timeoutSeconds int) error
WaitConditionState waits for a resource to reach a specific condition state.
func (KubernetesClient) WriteKubeconfig ¶
func (c KubernetesClient) WriteKubeconfig(w io.Writer) error
WriteKubeconfig writes the kubeconfig to the provided writer.
func (KubernetesClient) WriteKubeconfigFile ¶
func (c KubernetesClient) WriteKubeconfigFile(path string) error
WriteKubeconfigFile writes the kubeconfig to the specified file path.
type KubernetesLookupCache ¶
type KubernetesLookupCache struct {
// contains filtered or unexported fields
}
KubernetesLookupCache is a cache for Kubernetes resource kinds.
type KubernetesProviderCheckResult ¶
type KubernetesProviderCheckResult struct {
Status bool
Error error
// contains filtered or unexported fields
}
func (KubernetesProviderCheckResult) ToTable ¶
func (r KubernetesProviderCheckResult) ToTable() ([]string, []ProviderCheckResultRow)
ToTable converts the KubernetesProviderCheckResult into table headers and rows for display.
type KubernetesProviderClient ¶
type KubernetesProviderClient interface {
Provider
LookupKind(ctx context.Context, kind string) (schema.GroupVersionResource, error)
WaitConditionState(ctx context.Context, kind schema.GroupVersionResource, ns string, name string, state string, timeoutSeconds int) error
PrintClusterInfo(ctx context.Context)
WriteKubeconfigFile(path string) error
RefreshExternalSecrets(ctx context.Context) ([]KubernetesResource, error)
Export(ctx context.Context, cfg quartzSchema.ExportConfig) (map[string][]byte, error)
GetConfigMapValue(ctx context.Context, ns string, name string) (map[string]string, error)
GetSecretValue(ctx context.Context, ns string, name string) (map[string]string, error)
Restart(ctx context.Context, kind schema.GroupVersionResource, ns string, name string) error
}
KubernetesProviderClient defines the interface for Kubernetes provider clients.
type KubernetesResource ¶
type KubernetesResource struct {
Name string
Namespace string
Kind schema.GroupVersionResource
Item unstructured.Unstructured
}
KubernetesResource represents a Kubernetes resource.
type LazyAwsSdkClient ¶
type LazyAwsSdkClient struct {
// contains filtered or unexported fields
}
LazyAwsSdkClient is a lazy-loading implementation of AWS SDK clients. It initializes clients only when they are accessed.
func (*LazyAwsSdkClient) Dynamodb ¶
func (c *LazyAwsSdkClient) Dynamodb() DynamodbClient
Dynamodb returns a lazily initialized DynamoDB client.
func (*LazyAwsSdkClient) Eks ¶
func (c *LazyAwsSdkClient) Eks() EksClient
Eks returns a lazily initialized EKS client.
func (*LazyAwsSdkClient) EksTokenGenerator ¶
func (c *LazyAwsSdkClient) EksTokenGenerator() (token.Generator, error)
EksTokenGenerator returns a new EKS token generator.
func (*LazyAwsSdkClient) Iam ¶
func (c *LazyAwsSdkClient) Iam() IamClient
Iam returns a lazily initialized IAM client.
func (*LazyAwsSdkClient) S3 ¶
func (c *LazyAwsSdkClient) S3() S3Client
S3 returns a lazily initialized S3 client.
func (*LazyAwsSdkClient) S3Region ¶
func (c *LazyAwsSdkClient) S3Region(region string) S3Client
S3Region returns an S3 client configured for the specified region.
func (*LazyAwsSdkClient) Sts ¶
func (c *LazyAwsSdkClient) Sts() StsClient
Sts returns a lazily initialized STS client.
type LocalClient ¶
type LocalClient struct {
Name string // The name of the local cluster.
}
LocalClient represents a local provider client.
func (LocalClient) CheckAccess ¶
func (c LocalClient) CheckAccess(ctx context.Context) ProviderCheckResult
CheckAccess performs an access check for the local provider. Always returns an EmptyProviderCheckResult as no access check is required.
func (LocalClient) CheckConfig ¶
func (c LocalClient) CheckConfig() error
CheckConfig validates the configuration for the local provider. Always returns nil as no validation is required for the local provider.
func (LocalClient) CreateStateBackend ¶
func (c LocalClient) CreateStateBackend(_ context.Context) error
CreateStateBackend skips the creation of a state backend for the local provider. Logs a message indicating that the operation is skipped.
func (LocalClient) CurrentIdentity ¶
func (c LocalClient) CurrentIdentity(ctx context.Context) (CloudProviderIdentity, error)
CurrentIdentity returns the identity of the local provider. Always returns a static identity for the local provider.
func (LocalClient) DestroyStateBackend ¶
func (c LocalClient) DestroyStateBackend(_ context.Context) error
DestroyStateBackend skips the destruction of a state backend for the local provider. Logs a message indicating that the operation is skipped.
func (LocalClient) KubeconfigInfo ¶
func (c LocalClient) KubeconfigInfo(ctx context.Context) (KubeconfigInfo, error)
KubeconfigInfo returns an error as kubeconfig information is not supported for the local provider.
func (LocalClient) PrepareAccount ¶
func (c LocalClient) PrepareAccount(ctx context.Context) error
PrepareAccount performs no operation for the local provider. Always returns nil as no account preparation is required.
func (LocalClient) PrintClusterInfo ¶
func (c LocalClient) PrintClusterInfo(ctx context.Context) error
PrintClusterInfo performs no operation for the local provider. Always returns nil as no cluster information is available.
func (LocalClient) PrintConfig ¶
func (c LocalClient) PrintConfig()
PrintConfig prints the configuration of the local provider. Displays the name of the local cluster in a table format.
func (LocalClient) ProviderName ¶
func (c LocalClient) ProviderName() string
ProviderName returns the name of the provider.
func (LocalClient) StateBackendInfo ¶
func (c LocalClient) StateBackendInfo(_ string) CloudProviderStateBackend
StateBackendInfo returns the state backend information for the local provider. Always returns a static state backend configuration.
type Provider ¶
type Provider interface {
// ProviderName returns the name of the provider.
ProviderName() string
// CheckAccess performs an access check for the provider.
CheckAccess(context.Context) ProviderCheckResult
}
Provider defines the interface for all providers.
func NewImageRegistryProviderClient ¶
func NewImageRegistryProviderClient(ctx context.Context, cfg schema.QuartzConfig, secrets schema.QuartzSecrets) (Provider, error)
NewImageRegistryProviderClient creates a new image registry provider client based on the configuration and secrets. If image repository mirroring is disabled, it initializes an Ironbank client. Otherwise, it initializes a GitHub client.
func NewSourceControlProviderClient ¶
func NewSourceControlProviderClient(ctx context.Context, cfg schema.QuartzConfig, secrets schema.QuartzSecrets) (Provider, error)
NewSourceControlProviderClient creates a new source control provider client.
type ProviderCheckOpts ¶
type ProviderCheckOpts struct {
// contains filtered or unexported fields
}
ProviderCheckOpts contains options for performing provider checks.
func NewProviderCheckOpts ¶
func NewProviderCheckOpts(ctx context.Context, f ProviderFactory) ProviderCheckOpts
NewProviderCheckOpts creates a new ProviderCheckOpts instance. It initializes the list of providers to check by iterating over the provided factory.
type ProviderCheckResult ¶
type ProviderCheckResult interface {
// ToTable converts the check result into table headers and rows.
ToTable() ([]string, []ProviderCheckResultRow)
}
IProviderCheckResult defines the interface for provider check results.
type ProviderCheckResultRow ¶
type ProviderCheckResultRow struct {
Status bool // Status indicates whether the check was successful.
Data []string // Data contains the row's data fields.
Error error // Error contains any error associated with the row.
}
ProviderCheckResultRow represents a single row in the provider check result table.
type ProviderFactory ¶
type ProviderFactory struct {
// contains filtered or unexported fields
}
ProviderFactory is responsible for creating and managing provider clients.
func NewProviderFactory ¶
func NewProviderFactory(cfg schema.QuartzConfig, secrets schema.QuartzSecrets, opts ...ProviderFactoryOption) *ProviderFactory
NewProviderFactory creates a new ProviderFactory with the given configuration and secrets.
func (*ProviderFactory) Cloud ¶
func (f *ProviderFactory) Cloud(ctx context.Context) (CloudProviderClient, error)
Cloud returns the cloud provider client, initializing it if necessary.
func (*ProviderFactory) Dns ¶
func (f *ProviderFactory) Dns(ctx context.Context) (DnsProviderClient, error)
Dns returns the DNS provider client, initializing it if necessary.
func (*ProviderFactory) ImageRegistry ¶
func (f *ProviderFactory) ImageRegistry(ctx context.Context) (Provider, error)
ImageRegistry returns the image registry provider client, initializing it if necessary.
func (*ProviderFactory) Kubernetes ¶
func (f *ProviderFactory) Kubernetes(ctx context.Context) (KubernetesProviderClient, error)
Kubernetes returns the Kubernetes provider client, initializing it if necessary.
func (*ProviderFactory) SourceControl ¶
func (f *ProviderFactory) SourceControl(ctx context.Context) (Provider, error)
SourceControl returns the source control provider client, initializing it if necessary.
type ProviderFactoryOption ¶
type ProviderFactoryOption func(*ProviderFactory)
func WithCloudProvider ¶
func WithCloudProvider(p CloudProviderClient) ProviderFactoryOption
WithCloudProvider sets the cloud provider client and returns the updated factory.
func WithConfig ¶
func WithConfig(c schema.QuartzConfig) ProviderFactoryOption
WithConfig sets the Quartz configuration and returns the updated factory.
func WithDnsProvider ¶
func WithDnsProvider(p DnsProviderClient) ProviderFactoryOption
WithDnsProvider sets the DNS provider client and returns the updated factory.
func WithImageRegistryProvider ¶
func WithImageRegistryProvider(p Provider) ProviderFactoryOption
WithImageRegistryProvider sets the image registry provider client and returns the updated factory.
func WithKubernetesProvider ¶
func WithKubernetesProvider(p KubernetesProviderClient) ProviderFactoryOption
WithKubernetesProvider sets the Kubernetes provider client and returns the updated factory.
func WithSecrets ¶
func WithSecrets(s schema.QuartzSecrets) ProviderFactoryOption
WithSecrets sets the Quartz secrets and returns the updated factory.
func WithSourceControlProvider ¶
func WithSourceControlProvider(p Provider) ProviderFactoryOption
WithSourceControlProvider sets the source control provider client and returns the updated factory.
type S3Client ¶
type S3Client interface {
HeadBucket(ctx context.Context, params *s3.HeadBucketInput, optFns ...func(*s3.Options)) (*s3.HeadBucketOutput, error)
CreateBucket(ctx context.Context, params *s3.CreateBucketInput, optFns ...func(*s3.Options)) (*s3.CreateBucketOutput, error)
DeleteBucket(ctx context.Context, params *s3.DeleteBucketInput, optFns ...func(*s3.Options)) (*s3.DeleteBucketOutput, error)
ListObjectVersions(ctx context.Context, params *s3.ListObjectVersionsInput, optFns ...func(*s3.Options)) (*s3.ListObjectVersionsOutput, error)
DeleteObjects(ctx context.Context, params *s3.DeleteObjectsInput, optFns ...func(*s3.Options)) (*s3.DeleteObjectsOutput, error)
}
S3Client defines the interface for interacting with AWS S3.