Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
0b7be7f
[AISOS-380] Add ResyncPeriod field to CommonOptions in controller_opt…
Apr 19, 2026
7557421
[AISOS-380] Add resyncPeriod field to controller_options.go with vali…
Apr 19, 2026
3a98d90
[AISOS-381] Add LastSyncTime field to CommonStatus in common_types.go
Apr 19, 2026
5c807aa
[AISOS-382] Add --default-resync-period CLI flag to manager
Apr 19, 2026
0e209af
[AISOS-383] Implement DetermineResyncPeriod function with unit tests
Apr 19, 2026
ac24f84
[AISOS-384] Update code generator templates to include resyncPeriod a…
Apr 19, 2026
20b3685
[AISOS-385] Add GetResyncPeriod() method to APIObjectAdapter interface
Apr 19, 2026
616f4ba
[AISOS-386] Regenerate all resources and CRDs with new fields
Apr 19, 2026
239bbc0
[AISOS-387] Create resync scheduler package with jitter calculation
Apr 19, 2026
b4ebbdf
[AISOS-388] Modify shouldReconcile to support periodic resync
Apr 19, 2026
0dbc421
[AISOS-389] Integrate resync requeue scheduling into reconcileNormal
Apr 19, 2026
8924abc
[AISOS-390] Update status writer to set lastSyncTime on successful re…
Apr 19, 2026
f51e48a
[AISOS-391] Handle unmanaged resources during resync: add integration…
Apr 19, 2026
59784ba
[AISOS-392] Add E2E tests for resync scheduling behavior
Apr 19, 2026
fa6abfe
[AISOS-393] Add IsImported method to APIObjectAdapter interface
Apr 19, 2026
422da56
[AISOS-394] Modify GetOrCreateOSResource to support recreation on ext…
Apr 19, 2026
685c404
[AISOS-395] Clear status.id before recreation of externally deleted r…
Apr 19, 2026
d660ec4
[AISOS-396] Add unit tests for external deletion handling in GetOrCre…
Apr 19, 2026
53d15ca
[AISOS-397] Add E2E tests for external deletion and recreation behavior
Apr 19, 2026
2e1c509
[AISOS-398] Add user documentation for drift detection and external d…
Apr 19, 2026
5c6a3fd
[AISOS-376-review] Wire DefaultResyncPeriod from manager options to c…
Apr 19, 2026
3ebabf9
[AISOS-376-ci-fix] Fix CI failures: lint and codegen
Apr 19, 2026
210fcce
[AISOS-376-ci-fix] Fix Available=Unknown → False when terminal error …
Apr 19, 2026
48df99a
[AISOS-376-ci-fix] Increase network-resync-period assert timeout from…
Apr 19, 2026
0d1cdd0
[AISOS-376-ci-fix] Increase e2e test assertion timeouts for network r…
Apr 19, 2026
92f3d41
[AISOS-376-ci-fix] Increase network-resync-jitter assert timeout 60s→…
Apr 19, 2026
6930072
[AISOS-376-ci-fix] Increase network-resync-jitter timeout from 120s t…
Apr 20, 2026
ea1807e
[AISOS-376-ci-fix] Fix CalculateJitteredDuration to use positive-only…
Apr 20, 2026
4342121
[AISOS-376] review: address PR feedback
Apr 20, 2026
c72ecbb
[AISOS-376] review: address PR feedback
Apr 20, 2026
6468f6c
[AISOS-376-ci-analyze] Analyze CI failures (attempt 0)
Apr 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,6 @@ __pycache__/

/bundle/
bundle.Dockerfile

# Forge workflow state (do not commit)
.forge/
12 changes: 12 additions & 0 deletions api/v1alpha1/common_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,18 @@ type NeutronStatusMetadata struct {
// +kubebuilder:validation:MaxLength:=253
type KubernetesNameRef string

// CommonStatus defines status fields that are common to all ORC resources.
type CommonStatus struct {
// lastSyncTime is the timestamp of the last successful reconciliation
// that fetched state from OpenStack. It is updated each time the
// controller successfully reads the resource state from the OpenStack
// API. It is not updated on reconciliations that do not contact
// OpenStack (e.g. when the object is being deleted and is waiting for
// dependents to be removed).
// +optional
LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

// +kubebuilder:validation:MinLength:=1
// +kubebuilder:validation:MaxLength:=64
type KeystoneName string
25 changes: 25 additions & 0 deletions api/v1alpha1/controller_options.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ limitations under the License.

package v1alpha1

import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

// +kubebuilder:validation:Enum:=managed;unmanaged
type ManagementPolicy string

Expand Down Expand Up @@ -63,3 +67,24 @@ func (o *ManagedOptions) GetOnDelete() OnDelete {
}
return o.OnDelete
}

// CommonOptions defines options which apply to all ORC objects regardless of
// management policy.
type CommonOptions struct {
// resyncPeriod defines how frequently the controller will re-reconcile this
// resource even when no changes have been detected. This implements a
// two-tier resolution: the per-resource value takes precedence over the
// global controller default; if neither is set, periodic resync is
// disabled. The value must be a valid Go duration string, e.g. "10m", "1h".
// +optional
ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config
}

// GetResyncPeriod returns the resync period from CommonOptions. If called on a
// nil receiver it safely returns nil.
func (o *CommonOptions) GetResyncPeriod() *metav1.Duration {
if o == nil {
return nil
}
return o.ResyncPeriod
}
15 changes: 15 additions & 0 deletions api/v1alpha1/zz_generated.addressscope-resource.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions api/v1alpha1/zz_generated.applicationcredential-resource.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading