Skip to content

Commit

Permalink
incorporated comments during demo
Browse files Browse the repository at this point in the history
  • Loading branch information
ravi-shankar-sap committed Jul 17, 2024
1 parent f2723de commit df7bc63
Show file tree
Hide file tree
Showing 11 changed files with 315 additions and 216 deletions.
3 changes: 3 additions & 0 deletions api/cloud-resources/v1beta1/labels.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,7 @@ const (

LabelRedisInstanceName = "cloud-resources.kyma-project.io/redisInstanceName"
LabelRedisInstanceNamespace = "cloud-resources.kyma-project.io/redisInstanceNamespace"

LabelScheduleName = "cloud-resources.kyma-project.io/scheduleName"
LabelScheduleNamespace = "cloud-resources.kyma-project.io/scheduleNamespace"
)
20 changes: 15 additions & 5 deletions api/cloud-resources/v1beta1/nfsbackupschedule_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ const (
ReasonNfsVolumeNotFound = "NfsVolumeNotFound"
ReasonNfsVolumeNotReady = "NfsVolumeNotReady"
ReasonBackupCreateFailed = "BackupCreateFailed"
ReasonBackupListFailed = "BackupListFailed"
)

// NfsBackupScheduleSpec defines the desired state of NfsBackupSchedule
Expand Down Expand Up @@ -89,29 +90,38 @@ type NfsBackupScheduleStatus struct {
// +listMapKey=type
Conditions []metav1.Condition `json:"conditions,omitempty"`

// NextRunTimes contains the time when the next backup will be created
// NextRunTimes contains the times when the next backup will be created
// +optional
NextRunTimes []string `json:"nextRunTimes,omitempty"`

//NextDeleteTimes contains the map of backup objects and
//their expected deletion times (calculated based on MaxRetentionDays).
// +optional
NextDeleteTimes map[string]string `json:"nextDeleteTimes,omitempty"`

// LastCreateRun specifies the time when the last backup was created
// +optional
LastCreateRun *metav1.Time `json:"lastCreateRun,omitempty"`

// LastCreatedBackup contains the object reference of the backup object created during last run.
// +optional
LastCreatedBackup corev1.ObjectReference `json:"lastCreatedBackup,omitempty"`

// LastDeleteRun specifies the time when the backups exceeding the retention period were deleted
// +optional
LastDeleteRun *metav1.Time `json:"lastDeleteRun,omitempty"`

// LastDeletedBackups contains the object references of the backup object deleted during last run.
// +optional
LastDeletedBackups []corev1.ObjectReference `json:"lastDeletedBackups,omitempty"`

// Schedule specifies the cron expression of the current active schedule
// +optional
Schedule string `json:"schedule,omitempty"`

// BackupIndex specifies the current index of the backup created by this schedule
// +kubebuilder:default=0
BackupIndex int `json:"backupIndex,omitempty"`

// Backups specifies the list of backups created by this schedule
// +optional
Backups []corev1.ObjectReference `json:"backups,omitempty"`
}

//+kubebuilder:object:root=true
Expand Down
12 changes: 10 additions & 2 deletions api/cloud-resources/v1beta1/zz_generated.deepcopy.go

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

178 changes: 111 additions & 67 deletions config/crd/bases/cloud-resources.kyma-project.io_nfsbackupschedules.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -125,71 +125,6 @@ spec:
description: BackupIndex specifies the current index of the backup
created by this schedule
type: integer
backups:
description: Backups specifies the list of backups created by this
schedule
items:
description: "ObjectReference contains enough information to let
you inspect or modify the referred object. --- New uses of this
type are discouraged because of difficulty describing its usage
when embedded in APIs. 1. Ignored fields. It includes many fields
which are not generally honored. For instance, ResourceVersion
and FieldPath are both very rarely valid in actual usage. 2. Invalid
usage help. It is impossible to add specific help for individual
usage. In most embedded usages, there are particular restrictions
like, \"must refer only to types A and B\" or \"UID not honored\"
or \"name must be restricted\". Those cannot be well described
when embedded. 3. Inconsistent validation. Because the usages
are different, the validation rules are different by usage, which
makes it hard for users to predict what will happen. 4. The fields
are both imprecise and overly precise. Kind is not a precise
mapping to a URL. This can produce ambiguity during interpretation
and require a REST mapping. In most cases, the dependency is
on the group,resource tuple and the version of the actual struct
is irrelevant. 5. We cannot easily change it. Because this type
is embedded in many locations, updates to this type will affect
numerous schemas. Don't make new APIs embed an underspecified
API type they do not control. \n Instead of using this type, create
a locally provided and used type that is well-focused on your
reference. For example, ServiceReferences for admission registration:
https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
."
properties:
apiVersion:
description: API version of the referent.
type: string
fieldPath:
description: 'If referring to a piece of an object instead of
an entire object, this string should contain a valid JSON/Go
field access statement, such as desiredState.manifest.containers[2].
For example, if the object reference is to a container within
a pod, this would take on a value like: "spec.containers{name}"
(where "name" refers to the name of the container that triggered
the event) or if no container name is specified "spec.containers[2]"
(container with index 2 in this pod). This syntax is chosen
only to have some well-defined way of referencing a part of
an object. TODO: this design is not final and this field is
subject to change in the future.'
type: string
kind:
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
namespace:
description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
type: string
resourceVersion:
description: 'Specific resourceVersion to which this reference
is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
type: string
uid:
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
type: string
type: object
x-kubernetes-map-type: atomic
type: array
conditions:
description: List of status conditions
items:
Expand Down Expand Up @@ -267,14 +202,123 @@ spec:
was created
format: date-time
type: string
lastCreatedBackup:
description: LastCreatedBackup contains the object reference of the
backup object created during last run.
properties:
apiVersion:
description: API version of the referent.
type: string
fieldPath:
description: 'If referring to a piece of an object instead of
an entire object, this string should contain a valid JSON/Go
field access statement, such as desiredState.manifest.containers[2].
For example, if the object reference is to a container within
a pod, this would take on a value like: "spec.containers{name}"
(where "name" refers to the name of the container that triggered
the event) or if no container name is specified "spec.containers[2]"
(container with index 2 in this pod). This syntax is chosen
only to have some well-defined way of referencing a part of
an object. TODO: this design is not final and this field is
subject to change in the future.'
type: string
kind:
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
namespace:
description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
type: string
resourceVersion:
description: 'Specific resourceVersion to which this reference
is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
type: string
uid:
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
type: string
type: object
x-kubernetes-map-type: atomic
lastDeleteRun:
description: LastDeleteRun specifies the time when the backups exceeding
the retention period were deleted
format: date-time
type: string
lastDeletedBackups:
description: LastDeletedBackups contains the object references of
the backup object deleted during last run.
items:
description: "ObjectReference contains enough information to let
you inspect or modify the referred object. --- New uses of this
type are discouraged because of difficulty describing its usage
when embedded in APIs. 1. Ignored fields. It includes many fields
which are not generally honored. For instance, ResourceVersion
and FieldPath are both very rarely valid in actual usage. 2. Invalid
usage help. It is impossible to add specific help for individual
usage. In most embedded usages, there are particular restrictions
like, \"must refer only to types A and B\" or \"UID not honored\"
or \"name must be restricted\". Those cannot be well described
when embedded. 3. Inconsistent validation. Because the usages
are different, the validation rules are different by usage, which
makes it hard for users to predict what will happen. 4. The fields
are both imprecise and overly precise. Kind is not a precise
mapping to a URL. This can produce ambiguity during interpretation
and require a REST mapping. In most cases, the dependency is
on the group,resource tuple and the version of the actual struct
is irrelevant. 5. We cannot easily change it. Because this type
is embedded in many locations, updates to this type will affect
numerous schemas. Don't make new APIs embed an underspecified
API type they do not control. \n Instead of using this type, create
a locally provided and used type that is well-focused on your
reference. For example, ServiceReferences for admission registration:
https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
."
properties:
apiVersion:
description: API version of the referent.
type: string
fieldPath:
description: 'If referring to a piece of an object instead of
an entire object, this string should contain a valid JSON/Go
field access statement, such as desiredState.manifest.containers[2].
For example, if the object reference is to a container within
a pod, this would take on a value like: "spec.containers{name}"
(where "name" refers to the name of the container that triggered
the event) or if no container name is specified "spec.containers[2]"
(container with index 2 in this pod). This syntax is chosen
only to have some well-defined way of referencing a part of
an object. TODO: this design is not final and this field is
subject to change in the future.'
type: string
kind:
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
namespace:
description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
type: string
resourceVersion:
description: 'Specific resourceVersion to which this reference
is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
type: string
uid:
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
type: string
type: object
x-kubernetes-map-type: atomic
type: array
nextDeleteTimes:
additionalProperties:
type: string
description: NextDeleteTimes contains the map of backup objects and
their expected deletion times (calculated based on MaxRetentionDays).
type: object
nextRunTimes:
description: NextRunTimes contains the time when the next backup will
be created
description: NextRunTimes contains the times when the next backup
will be created
items:
type: string
type: array
Expand Down
Loading

0 comments on commit df7bc63

Please sign in to comment.