func (a *Account) IsReadyUnclaimedAndHasClaimLink() bool {
	return a.IsReady() &&
		a.HasClaimLink() &&
		!a.IsClaimed()
}
IsReadyUnclaimedAndHasClaimLink returns true if an account is ready, unclaimed, and has a claim link
package v1alpha1
import (
	corev1 "k8s.io/api/core/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
type AccountStateStatus string
const (
	AccountStatusRequested AccountStateStatus = "Requested"
	AccountStatusClaimed AccountStateStatus = "Claimed"
	AccountCrNamespace = "aws-account-operator"
	AccountOperatorIAMRole = "OrganizationAccountAccessRole"
	SREAccessRoleName = "RH-SRE-CCS-Access"
	AccountFinalizer = "finalizer.aws.managed.openshift.io"
)
type AccountSpec struct {
	AwsAccountID  string `json:"awsAccountID"`
	IAMUserSecret string `json:"iamUserSecret"`
	BYOC          bool   `json:"byoc,omitempty"`
	ClaimLink string `json:"claimLink"`
	ClaimLinkNamespace string      `json:"claimLinkNamespace,omitempty"`
	LegalEntity        LegalEntity `json:"legalEntity,omitempty"`
	ManualSTSMode      bool        `json:"manualSTSMode,omitempty"`
}
type AccountStatus struct {
	Claimed       bool   `json:"claimed,omitempty"`
	SupportCaseID string `json:"supportCaseID,omitempty"`
	Conditions               []AccountCondition `json:"conditions,omitempty"`
	State                    string             `json:"state,omitempty"`
	RotateCredentials        bool               `json:"rotateCredentials,omitempty"`
	RotateConsoleCredentials bool               `json:"rotateConsoleCredentials,omitempty"`
	Reused                   bool               `json:"reused,omitempty"`
}
type AccountCondition struct {
	Type AccountConditionType `json:"type,omitempty"`
	Status corev1.ConditionStatus `json:"status,omitempty"`
	LastProbeTime metav1.Time `json:"lastProbeTime,omitempty"`
	LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty"`
	Reason string `json:"reason,omitempty"`
	Message string `json:"message,omitempty"`
}
type AccountConditionType string
const (
	AccountCreating AccountConditionType = "Creating"
	AccountReady AccountConditionType = "Ready"
	AccountFailed AccountConditionType = "Failed"
	AccountCreationFailed AccountConditionType = "AccountCreationFailed"
	AccountPending AccountConditionType = "Pending"
	AccountPendingVerification AccountConditionType = "PendingVerification"
	AccountReused AccountConditionType = "Reused"
	AccountClientError AccountConditionType = "AccountClientError"
	AccountAuthorizationError AccountConditionType = "AuthorizationError"
	AccountAuthenticationError AccountConditionType = "AuthenticationError"
	AccountUnhandledError AccountConditionType = "UnhandledError"
	AccountInternalError AccountConditionType = "InternalError"
	AccountInitializingRegions = "InitializingRegions"
	AccountQuotaIncreaseRequested AccountConditionType = "QuotaIncreaseRequested"
)
type Account struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`
	Spec   AccountSpec   `json:"spec,omitempty"`
	Status AccountStatus `json:"status,omitempty"`
}
type AccountList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Account `json:"items"`
}
func init() {
	SchemeBuilder.Register(&Account{}, &AccountList{})
}
func (a *Account) IsFailed() bool {
	failedStates := [7]string{
		string(AccountFailed),
		string(AccountCreationFailed),
		string(AccountClientError),
		string(AccountAuthorizationError),
		string(AccountAuthenticationError),
		string(AccountUnhandledError),
		string(AccountInternalError),
	}
	for _, state := range failedStates {
		if a.Status.State == state {
			return true
		}
	}
	return false
}
func (a *Account) HasState() bool {
	return a.Status.State != ""
}
func (a *Account) HasSupportCaseID() bool {
	return a.Status.SupportCaseID != ""
}
func (a *Account) IsPendingVerification() bool {
	return a.Status.State == string(AccountPendingVerification)
}
func (a *Account) IsReady() bool {
	return a.Status.State == string(AccountReady)
}
func (a *Account) IsCreating() bool {
	return a.Status.State == string(AccountCreating)
}
func (a *Account) HasClaimLink() bool {
	return a.Spec.ClaimLink != ""
}
func (a *Account) IsClaimed() bool {
	return a.Status.Claimed
}
func (a *Account) IsPendingDeletion() bool {
	return a.DeletionTimestamp != nil
}
func (a *Account) IsBYOC() bool {
	return a.Spec.BYOC
}
func (a *Account) HasAwsAccountID() bool {
	return a.Spec.AwsAccountID != ""
}