diff --git a/docs/api-types/README.md b/docs/api-types/README.md
index 46bcea71d0..5638927888 100644
--- a/docs/api-types/README.md
+++ b/docs/api-types/README.md
@@ -2,6 +2,9 @@
## API types
+Here we list the API types that have some functionality that you can only configure via json/yaml vs the `ark` cli
+(hooks)
+
* [Backup][1]
[1]: backup.md
diff --git a/docs/api-types/backup.md b/docs/api-types/backup.md
index feef7c3dcb..40fe71c65d 100644
--- a/docs/api-types/backup.md
+++ b/docs/api-types/backup.md
@@ -60,6 +60,12 @@ spec:
# AWS. Valid values are true, false, and null/unset. If unset, Ark performs snapshots as long as
# a persistent volume provider is configured for Ark.
snapshotVolumes: null
+ # Where to store the tarball and logs.
+ storageLocation: aws-primary
+ # The list of locations in which to store volume snapshots created for this backup.
+ volumeSnapshotLocations:
+ - aws-primary
+ - gcp-primary
# The amount of time before this backup is eligible for garbage collection.
ttl: 24h0m0s
# Actions to perform at different times during a backup. The only hook currently supported is
diff --git a/docs/backupstoragelocation-definition.md b/docs/api-types/backupstoragelocation.md
similarity index 100%
rename from docs/backupstoragelocation-definition.md
rename to docs/api-types/backupstoragelocation.md
diff --git a/docs/api-types/volumesnapshotlocation.md b/docs/api-types/volumesnapshotlocation.md
new file mode 100644
index 0000000000..86244460c7
--- /dev/null
+++ b/docs/api-types/volumesnapshotlocation.md
@@ -0,0 +1,59 @@
+# Ark Volume Snapshot Location
+
+## Volume Snapshot Location
+
+A volume snapshot location is the location in which to store the volume snapshots created for a backup.
+
+Ark can be configured to take snapshots of volumes from multiple providers. Ark also allows you to configure multiple possible `VolumeSnapshotLocation` per provider, although you can only select one location per provider at backup time.
+
+Each VolumeSnapshotLocation describes a provider + location. These are represented in the cluster via the `VolumeSnapshotLocation` CRD. Ark must have at least one `VolumeSnapshotLocation` per cloud provider.
+
+A sample YAML `VolumeSnapshotLocation` looks like the following:
+
+```yaml
+apiVersion: ark.heptio.com/v1
+kind: VolumeSnapshotLocation
+metadata:
+ name: aws-default
+ namespace: heptio-ark
+spec:
+ provider: aws
+ config:
+ region: us-west-2
+```
+
+### Parameter Reference
+
+The configurable parameters are as follows:
+
+#### Main config parameters
+
+| Key | Type | Default | Meaning |
+| --- | --- | --- | --- |
+| `provider` | String (Ark natively supports `aws`, `gcp`, and `azure`. Other providers may be available via external plugins.)| Required Field | The name for whichever cloud provider will be used to actually store the volume. |
+| `config` | See the corresponding [AWS][0], [GCP][1], and [Azure][2]-specific configs or your provider's documentation.
+
+#### AWS
+
+##### config
+
+| Key | Type | Default | Meaning |
+| --- | --- | --- | --- |
+| `region` | string | Empty | *Example*: "us-east-1"
See [AWS documentation][3] for the full list.
Queried from the AWS S3 API if not provided. |
+
+#### Azure
+
+##### config
+
+| Key | Type | Default | Meaning |
+| --- | --- | --- | --- |
+| `apiTimeout` | metav1.Duration | 2m0s | How long to wait for an Azure API request to complete before timeout. |
+
+#### GCP
+
+No parameters required.
+
+[0]: #aws
+[1]: #gcp
+[2]: #azure
+[3]: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-available-regions
\ No newline at end of file
diff --git a/docs/aws-config.md b/docs/aws-config.md
index a943738137..5cc8c40f3d 100644
--- a/docs/aws-config.md
+++ b/docs/aws-config.md
@@ -303,4 +303,4 @@ It can be set up for Ark by creating a role that will have required permissions,
[6]: config-definition.md#aws
[14]: http://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html
[20]: faq.md
-[21]: backupstoragelocation-definition.md#aws
+[21]: api-types/backupstoragelocation.md#aws
diff --git a/docs/azure-config.md b/docs/azure-config.md
index ba9d747afc..e0eb503962 100644
--- a/docs/azure-config.md
+++ b/docs/azure-config.md
@@ -165,5 +165,5 @@ In the root of your Ark directory, run:
[18]: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli
[19]: https://docs.microsoft.com/en-us/azure/architecture/best-practices/naming-conventions#storage
[20]: faq.md
-[21]: backupstoragelocation-definition.md#azure
+[21]: api-types/backupstoragelocation.md#azure
[22]: https://azure.microsoft.com/en-us/services/kubernetes-service/
diff --git a/docs/gcp-config.md b/docs/gcp-config.md
index f916da8be4..dc4466cbe9 100644
--- a/docs/gcp-config.md
+++ b/docs/gcp-config.md
@@ -129,7 +129,7 @@ In the root of your Ark directory, run:
```
[0]: namespace.md
- [7]: backupstoragelocation-definition.md#gcp
+ [7]: api-types/backupstoragelocation.md#gcp
[15]: https://cloud.google.com/compute/docs/access/service-accounts
[16]: https://cloud.google.com/sdk/docs/
[20]: faq.md
diff --git a/docs/ibm-config.md b/docs/ibm-config.md
index b27f2c13f2..64b4b700b5 100644
--- a/docs/ibm-config.md
+++ b/docs/ibm-config.md
@@ -78,5 +78,5 @@ In the root of your Ark directory, run:
[3]: https://console.bluemix.net/docs/services/cloud-object-storage/iam/service-credentials.html#service-credentials
[4]: https://www.ibm.com/support/knowledgecenter/SSBS6K_2.1.0/kc_welcome_containers.html
[5]: https://console.bluemix.net/docs/containers/container_index.html#container_index
- [6]: backupstoragelocation-definition.md#aws
+ [6]: api-types/backupstoragelocation.md#aws
[14]: http://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html
diff --git a/examples/aws/06-ark-volumesnapshotlocation.yaml b/examples/aws/06-ark-volumesnapshotlocation.yaml
new file mode 100644
index 0000000000..b93ebabfea
--- /dev/null
+++ b/examples/aws/06-ark-volumesnapshotlocation.yaml
@@ -0,0 +1,24 @@
+# Copyright 2018 the Heptio Ark contributors.
+#
+# 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.
+
+---
+apiVersion: ark.heptio.com/v1
+kind: VolumeSnapshotLocation
+metadata:
+ name: aws-default
+ namespace: heptio-ark
+spec:
+ provider: aws
+ config:
+ region:
\ No newline at end of file
diff --git a/examples/azure/06-ark-volumesnapshotlocation.yaml b/examples/azure/06-ark-volumesnapshotlocation.yaml
new file mode 100644
index 0000000000..ca0f7f1c8d
--- /dev/null
+++ b/examples/azure/06-ark-volumesnapshotlocation.yaml
@@ -0,0 +1,24 @@
+# Copyright 2018 the Heptio Ark contributors.
+#
+# 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.
+
+---
+apiVersion: ark.heptio.com/v1
+kind: VolumeSnapshotLocation
+metadata:
+ name: azure-default
+ namespace: heptio-ark
+spec:
+ provider: azure
+ config:
+ apiTimeout: 2m0s
\ No newline at end of file
diff --git a/examples/common/00-prereqs.yaml b/examples/common/00-prereqs.yaml
index c9c096415e..a32f5996c5 100644
--- a/examples/common/00-prereqs.yaml
+++ b/examples/common/00-prereqs.yaml
@@ -162,6 +162,36 @@ spec:
plural: backupstoragelocations
kind: BackupStorageLocation
+---
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+ name: volumesnapshotlocations.ark.heptio.com
+ labels:
+ component: ark
+spec:
+ group: ark.heptio.com
+ version: v1
+ scope: Namespaced
+ names:
+ plural: volumesnapshotlocations
+ kind: VolumeSnapshotLocation
+
+---
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+ name: volumesnapshots.ark.heptio.com
+ labels:
+ component: ark
+spec:
+ group: ark.heptio.com
+ version: v1
+ scope: Namespaced
+ names:
+ plural: volumesnapshots
+ kind: VolumeSnapshot
+
---
apiVersion: v1
kind: Namespace
diff --git a/examples/gcp/06-ark-volumesnapshotlocation.yaml b/examples/gcp/06-ark-volumesnapshotlocation.yaml
new file mode 100644
index 0000000000..c42c3cfdc6
--- /dev/null
+++ b/examples/gcp/06-ark-volumesnapshotlocation.yaml
@@ -0,0 +1,22 @@
+# Copyright 2018 the Heptio Ark contributors.
+#
+# 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.
+
+---
+apiVersion: ark.heptio.com/v1
+kind: VolumeSnapshotLocation
+metadata:
+ name: gcp-default
+ namespace: heptio-ark
+spec:
+ provider: gcp
\ No newline at end of file
diff --git a/pkg/apis/ark/v1/backup.go b/pkg/apis/ark/v1/backup.go
index 8aef922ca3..1f0e19653f 100644
--- a/pkg/apis/ark/v1/backup.go
+++ b/pkg/apis/ark/v1/backup.go
@@ -61,6 +61,9 @@ type BackupSpec struct {
// StorageLocation is a string containing the name of a BackupStorageLocation where the backup should be stored.
StorageLocation string `json:"storageLocation"`
+
+ // VolumeSnapshotLocations is a list containing names of VolumeSnapshotLocations associated with this backup.
+ VolumeSnapshotLocations []string `json:"volumeSnapshotLocations"`
}
// BackupHooks contains custom behaviors that should be executed at different phases of the backup.
diff --git a/pkg/apis/ark/v1/register.go b/pkg/apis/ark/v1/register.go
index 5d70dcc767..f80729b60b 100644
--- a/pkg/apis/ark/v1/register.go
+++ b/pkg/apis/ark/v1/register.go
@@ -59,16 +59,18 @@ func newTypeInfo(pluralName string, itemType, itemListType runtime.Object) typeI
// API group, keyed on Kind.
func CustomResources() map[string]typeInfo {
return map[string]typeInfo{
- "Backup": newTypeInfo("backups", &Backup{}, &BackupList{}),
- "Restore": newTypeInfo("restores", &Restore{}, &RestoreList{}),
- "Schedule": newTypeInfo("schedules", &Schedule{}, &ScheduleList{}),
- "Config": newTypeInfo("configs", &Config{}, &ConfigList{}),
- "DownloadRequest": newTypeInfo("downloadrequests", &DownloadRequest{}, &DownloadRequestList{}),
- "DeleteBackupRequest": newTypeInfo("deletebackuprequests", &DeleteBackupRequest{}, &DeleteBackupRequestList{}),
- "PodVolumeBackup": newTypeInfo("podvolumebackups", &PodVolumeBackup{}, &PodVolumeBackupList{}),
- "PodVolumeRestore": newTypeInfo("podvolumerestores", &PodVolumeRestore{}, &PodVolumeRestoreList{}),
- "ResticRepository": newTypeInfo("resticrepositories", &ResticRepository{}, &ResticRepositoryList{}),
- "BackupStorageLocation": newTypeInfo("backupstoragelocations", &BackupStorageLocation{}, &BackupStorageLocationList{}),
+ "Backup": newTypeInfo("backups", &Backup{}, &BackupList{}),
+ "Restore": newTypeInfo("restores", &Restore{}, &RestoreList{}),
+ "Schedule": newTypeInfo("schedules", &Schedule{}, &ScheduleList{}),
+ "Config": newTypeInfo("configs", &Config{}, &ConfigList{}),
+ "DownloadRequest": newTypeInfo("downloadrequests", &DownloadRequest{}, &DownloadRequestList{}),
+ "DeleteBackupRequest": newTypeInfo("deletebackuprequests", &DeleteBackupRequest{}, &DeleteBackupRequestList{}),
+ "PodVolumeBackup": newTypeInfo("podvolumebackups", &PodVolumeBackup{}, &PodVolumeBackupList{}),
+ "PodVolumeRestore": newTypeInfo("podvolumerestores", &PodVolumeRestore{}, &PodVolumeRestoreList{}),
+ "ResticRepository": newTypeInfo("resticrepositories", &ResticRepository{}, &ResticRepositoryList{}),
+ "BackupStorageLocation": newTypeInfo("backupstoragelocations", &BackupStorageLocation{}, &BackupStorageLocationList{}),
+ "VolumeSnapshotLocation": newTypeInfo("volumesnapshotlocations", &VolumeSnapshotLocation{}, &VolumeSnapshotLocationList{}),
+ "VolumeSnapshot": newTypeInfo("volumesnapshots", &VolumeSnapshot{}, &VolumeSnapshotList{}),
}
}
diff --git a/pkg/apis/ark/v1/volume_snapshot.go b/pkg/apis/ark/v1/volume_snapshot.go
new file mode 100644
index 0000000000..34d48b4348
--- /dev/null
+++ b/pkg/apis/ark/v1/volume_snapshot.go
@@ -0,0 +1,89 @@
+/*
+Copyright 2018 the Heptio Ark contributors.
+
+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"
+
+// +genclient
+// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
+
+// VolumeSnapshot represents a snapshot of a persistent volume
+type VolumeSnapshot struct {
+ metav1.TypeMeta `json:",inline"`
+ metav1.ObjectMeta `json:"metadata"`
+
+ Spec VolumeSnapshotSpec `json:"spec"`
+ Status VolumeSnapshotStatus `json:"status"`
+}
+
+// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
+
+// VolumeSnapshotList is a list of VolumeSnapshots.
+type VolumeSnapshotList struct {
+ metav1.TypeMeta `json:",inline"`
+ metav1.ListMeta `json:"metadata"`
+ Items []VolumeSnapshot `json:"items"`
+}
+
+// VolumeSnapshotSpec defines the specification for an Ark VolumeSnapshot.
+type VolumeSnapshotSpec struct {
+ // Type is the type of the disk/volume in the cloud provider
+ // API.
+ Type string `json:"type"`
+
+ // AvailabilityZone is the where the volume is provisioned
+ // in the cloud provider.
+ AvailabilityZone string `json:"availabilityZone,omitempty"`
+
+ // Iops is the optional value of provisioned IOPS for the
+ // disk/volume in the cloud provider API.
+ Iops *int64 `json:"iops,omitempty"`
+
+ // Backup is a string containing the name of name of the Ark backup this snapshot is associated with.
+ Backup string `json:"backup"`
+
+ // Location is the name of the VolumeSnapshotLocation where this snapshot is stored.
+ Location string `json:"location"`
+}
+
+// VolumeSnapshotStatus captures the current status of an Ark VolumeSnapshot.
+type VolumeSnapshotStatus struct {
+ // SnapshotID is the UUID generated by Ark.
+ SnapshotID string `json:"snapshotID"`
+
+ // ProviderSnapshotID is the ID of the snapshot taken in the cloud
+ // provider API of this volume.
+ ProviderSnapshotID string `json:"providerSnapshotID"`
+
+ // Phase is the current state of the VolumeSnapshot.
+ Phase VolumeSnapshotPhase `json:"phase,omitempty"`
+}
+
+// VolumeSnapshotPhase is the lifecyle phase of an Ark VolumeSnapshot.
+type VolumeSnapshotPhase string
+
+const (
+ // VolumeSnapshotPhaseNew means the volume snapshot has been created but not
+ // yet processed by the VolumeSnapshotController.
+ VolumeSnapshotPhaseNew VolumeSnapshotPhase = "New"
+
+ // VolumeSnapshotPhaseCompleted means the volume snapshot was successfully created and can be restored from..
+ VolumeSnapshotPhaseCompleted VolumeSnapshotPhase = "Completed"
+
+ // VolumeSnapshotPhaseFailed means the volume snapshot was unable to execute.
+ VolumeSnapshotPhaseFailed VolumeSnapshotPhase = "Failed"
+)
diff --git a/pkg/apis/ark/v1/volume_snapshot_location.go b/pkg/apis/ark/v1/volume_snapshot_location.go
new file mode 100644
index 0000000000..af14d852d9
--- /dev/null
+++ b/pkg/apis/ark/v1/volume_snapshot_location.go
@@ -0,0 +1,65 @@
+/*
+Copyright 2018 the Heptio Ark contributors.
+
+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"
+
+// +genclient
+// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
+
+// VolumeSnapshotLocation is a location where Ark stores volume snapshots.
+type VolumeSnapshotLocation struct {
+ metav1.TypeMeta `json:",inline"`
+ metav1.ObjectMeta `json:"metadata"`
+
+ Spec VolumeSnapshotLocationSpec `json:"spec"`
+ Status VolumeSnapshotLocationStatus `json:"status"`
+}
+
+// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
+
+// VolumeSnapshotLocationList is a list of VolumeSnapshotLocations.
+type VolumeSnapshotLocationList struct {
+ metav1.TypeMeta `json:",inline"`
+ metav1.ListMeta `json:"metadata"`
+ Items []VolumeSnapshotLocation `json:"items"`
+}
+
+// VolumeSnapshotLocationSpec defines the specification for an Ark VolumeSnapshotLocation.
+type VolumeSnapshotLocationSpec struct {
+ // Provider is the provider of the volume storage.
+ Provider string `json:"provider"`
+
+ // Config is for provider-specific configuration fields.
+ Config map[string]string `json:"config"`
+}
+
+// VolumeSnapshotLocationPhase is the lifecyle phase of an Ark VolumeSnapshotLocation.
+type VolumeSnapshotLocationPhase string
+
+const (
+ // VolumeSnapshotLocationPhaseAvailable means the location is available to read and write from.
+ VolumeSnapshotLocationPhaseAvailable VolumeSnapshotLocationPhase = "Available"
+
+ // VolumeSnapshotLocationPhaseUnavailable means the location is unavailable to read and write from.
+ VolumeSnapshotLocationPhaseUnavailable VolumeSnapshotLocationPhase = "Unavailable"
+)
+
+// VolumeSnapshotLocationStatus describes the current status of an Ark VolumeSnapshotLocation.
+type VolumeSnapshotLocationStatus struct {
+ Phase VolumeSnapshotLocationPhase `json:"phase,omitempty"`
+}
diff --git a/pkg/apis/ark/v1/zz_generated.deepcopy.go b/pkg/apis/ark/v1/zz_generated.deepcopy.go
index 2a420dd47e..0e478e803b 100644
--- a/pkg/apis/ark/v1/zz_generated.deepcopy.go
+++ b/pkg/apis/ark/v1/zz_generated.deepcopy.go
@@ -252,6 +252,11 @@ func (in *BackupSpec) DeepCopyInto(out *BackupSpec) {
}
}
in.Hooks.DeepCopyInto(&out.Hooks)
+ if in.VolumeSnapshotLocations != nil {
+ in, out := &in.VolumeSnapshotLocations, &out.VolumeSnapshotLocations
+ *out = make([]string, len(*in))
+ copy(*out, *in)
+ }
return
}
@@ -1370,3 +1375,205 @@ func (in *VolumeBackupInfo) DeepCopy() *VolumeBackupInfo {
in.DeepCopyInto(out)
return out
}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *VolumeSnapshot) DeepCopyInto(out *VolumeSnapshot) {
+ *out = *in
+ out.TypeMeta = in.TypeMeta
+ in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
+ in.Spec.DeepCopyInto(&out.Spec)
+ out.Status = in.Status
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeSnapshot.
+func (in *VolumeSnapshot) DeepCopy() *VolumeSnapshot {
+ if in == nil {
+ return nil
+ }
+ out := new(VolumeSnapshot)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *VolumeSnapshot) 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 *VolumeSnapshotList) DeepCopyInto(out *VolumeSnapshotList) {
+ *out = *in
+ out.TypeMeta = in.TypeMeta
+ out.ListMeta = in.ListMeta
+ if in.Items != nil {
+ in, out := &in.Items, &out.Items
+ *out = make([]VolumeSnapshot, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeSnapshotList.
+func (in *VolumeSnapshotList) DeepCopy() *VolumeSnapshotList {
+ if in == nil {
+ return nil
+ }
+ out := new(VolumeSnapshotList)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *VolumeSnapshotList) 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 *VolumeSnapshotLocation) DeepCopyInto(out *VolumeSnapshotLocation) {
+ *out = *in
+ out.TypeMeta = in.TypeMeta
+ in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
+ in.Spec.DeepCopyInto(&out.Spec)
+ out.Status = in.Status
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeSnapshotLocation.
+func (in *VolumeSnapshotLocation) DeepCopy() *VolumeSnapshotLocation {
+ if in == nil {
+ return nil
+ }
+ out := new(VolumeSnapshotLocation)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *VolumeSnapshotLocation) 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 *VolumeSnapshotLocationList) DeepCopyInto(out *VolumeSnapshotLocationList) {
+ *out = *in
+ out.TypeMeta = in.TypeMeta
+ out.ListMeta = in.ListMeta
+ if in.Items != nil {
+ in, out := &in.Items, &out.Items
+ *out = make([]VolumeSnapshotLocation, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeSnapshotLocationList.
+func (in *VolumeSnapshotLocationList) DeepCopy() *VolumeSnapshotLocationList {
+ if in == nil {
+ return nil
+ }
+ out := new(VolumeSnapshotLocationList)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *VolumeSnapshotLocationList) 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 *VolumeSnapshotLocationSpec) DeepCopyInto(out *VolumeSnapshotLocationSpec) {
+ *out = *in
+ if in.Config != nil {
+ in, out := &in.Config, &out.Config
+ *out = make(map[string]string, len(*in))
+ for key, val := range *in {
+ (*out)[key] = val
+ }
+ }
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeSnapshotLocationSpec.
+func (in *VolumeSnapshotLocationSpec) DeepCopy() *VolumeSnapshotLocationSpec {
+ if in == nil {
+ return nil
+ }
+ out := new(VolumeSnapshotLocationSpec)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *VolumeSnapshotLocationStatus) DeepCopyInto(out *VolumeSnapshotLocationStatus) {
+ *out = *in
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeSnapshotLocationStatus.
+func (in *VolumeSnapshotLocationStatus) DeepCopy() *VolumeSnapshotLocationStatus {
+ if in == nil {
+ return nil
+ }
+ out := new(VolumeSnapshotLocationStatus)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *VolumeSnapshotSpec) DeepCopyInto(out *VolumeSnapshotSpec) {
+ *out = *in
+ if in.Iops != nil {
+ in, out := &in.Iops, &out.Iops
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(int64)
+ **out = **in
+ }
+ }
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeSnapshotSpec.
+func (in *VolumeSnapshotSpec) DeepCopy() *VolumeSnapshotSpec {
+ if in == nil {
+ return nil
+ }
+ out := new(VolumeSnapshotSpec)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *VolumeSnapshotStatus) DeepCopyInto(out *VolumeSnapshotStatus) {
+ *out = *in
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeSnapshotStatus.
+func (in *VolumeSnapshotStatus) DeepCopy() *VolumeSnapshotStatus {
+ if in == nil {
+ return nil
+ }
+ out := new(VolumeSnapshotStatus)
+ in.DeepCopyInto(out)
+ return out
+}
diff --git a/pkg/generated/clientset/versioned/typed/ark/v1/ark_client.go b/pkg/generated/clientset/versioned/typed/ark/v1/ark_client.go
index 8abe24f1e3..a2bf60aeac 100644
--- a/pkg/generated/clientset/versioned/typed/ark/v1/ark_client.go
+++ b/pkg/generated/clientset/versioned/typed/ark/v1/ark_client.go
@@ -37,6 +37,8 @@ type ArkV1Interface interface {
ResticRepositoriesGetter
RestoresGetter
SchedulesGetter
+ VolumeSnapshotsGetter
+ VolumeSnapshotLocationsGetter
}
// ArkV1Client is used to interact with features provided by the ark.heptio.com group.
@@ -84,6 +86,14 @@ func (c *ArkV1Client) Schedules(namespace string) ScheduleInterface {
return newSchedules(c, namespace)
}
+func (c *ArkV1Client) VolumeSnapshots(namespace string) VolumeSnapshotInterface {
+ return newVolumeSnapshots(c, namespace)
+}
+
+func (c *ArkV1Client) VolumeSnapshotLocations(namespace string) VolumeSnapshotLocationInterface {
+ return newVolumeSnapshotLocations(c, namespace)
+}
+
// NewForConfig creates a new ArkV1Client for the given config.
func NewForConfig(c *rest.Config) (*ArkV1Client, error) {
config := *c
diff --git a/pkg/generated/clientset/versioned/typed/ark/v1/fake/fake_ark_client.go b/pkg/generated/clientset/versioned/typed/ark/v1/fake/fake_ark_client.go
index 656fc0e57d..69d0821017 100644
--- a/pkg/generated/clientset/versioned/typed/ark/v1/fake/fake_ark_client.go
+++ b/pkg/generated/clientset/versioned/typed/ark/v1/fake/fake_ark_client.go
@@ -68,6 +68,14 @@ func (c *FakeArkV1) Schedules(namespace string) v1.ScheduleInterface {
return &FakeSchedules{c, namespace}
}
+func (c *FakeArkV1) VolumeSnapshots(namespace string) v1.VolumeSnapshotInterface {
+ return &FakeVolumeSnapshots{c, namespace}
+}
+
+func (c *FakeArkV1) VolumeSnapshotLocations(namespace string) v1.VolumeSnapshotLocationInterface {
+ return &FakeVolumeSnapshotLocations{c, namespace}
+}
+
// RESTClient returns a RESTClient that is used to communicate
// with API server by this client implementation.
func (c *FakeArkV1) RESTClient() rest.Interface {
diff --git a/pkg/generated/clientset/versioned/typed/ark/v1/fake/fake_volumesnapshot.go b/pkg/generated/clientset/versioned/typed/ark/v1/fake/fake_volumesnapshot.go
new file mode 100644
index 0000000000..1138b1d269
--- /dev/null
+++ b/pkg/generated/clientset/versioned/typed/ark/v1/fake/fake_volumesnapshot.go
@@ -0,0 +1,140 @@
+/*
+Copyright 2018 the Heptio Ark contributors.
+
+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 client-gen. DO NOT EDIT.
+
+package fake
+
+import (
+ ark_v1 "github.com/heptio/ark/pkg/apis/ark/v1"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ labels "k8s.io/apimachinery/pkg/labels"
+ schema "k8s.io/apimachinery/pkg/runtime/schema"
+ types "k8s.io/apimachinery/pkg/types"
+ watch "k8s.io/apimachinery/pkg/watch"
+ testing "k8s.io/client-go/testing"
+)
+
+// FakeVolumeSnapshots implements VolumeSnapshotInterface
+type FakeVolumeSnapshots struct {
+ Fake *FakeArkV1
+ ns string
+}
+
+var volumesnapshotsResource = schema.GroupVersionResource{Group: "ark.heptio.com", Version: "v1", Resource: "volumesnapshots"}
+
+var volumesnapshotsKind = schema.GroupVersionKind{Group: "ark.heptio.com", Version: "v1", Kind: "VolumeSnapshot"}
+
+// Get takes name of the volumeSnapshot, and returns the corresponding volumeSnapshot object, and an error if there is any.
+func (c *FakeVolumeSnapshots) Get(name string, options v1.GetOptions) (result *ark_v1.VolumeSnapshot, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewGetAction(volumesnapshotsResource, c.ns, name), &ark_v1.VolumeSnapshot{})
+
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*ark_v1.VolumeSnapshot), err
+}
+
+// List takes label and field selectors, and returns the list of VolumeSnapshots that match those selectors.
+func (c *FakeVolumeSnapshots) List(opts v1.ListOptions) (result *ark_v1.VolumeSnapshotList, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewListAction(volumesnapshotsResource, volumesnapshotsKind, c.ns, opts), &ark_v1.VolumeSnapshotList{})
+
+ if obj == nil {
+ return nil, err
+ }
+
+ label, _, _ := testing.ExtractFromListOptions(opts)
+ if label == nil {
+ label = labels.Everything()
+ }
+ list := &ark_v1.VolumeSnapshotList{ListMeta: obj.(*ark_v1.VolumeSnapshotList).ListMeta}
+ for _, item := range obj.(*ark_v1.VolumeSnapshotList).Items {
+ if label.Matches(labels.Set(item.Labels)) {
+ list.Items = append(list.Items, item)
+ }
+ }
+ return list, err
+}
+
+// Watch returns a watch.Interface that watches the requested volumeSnapshots.
+func (c *FakeVolumeSnapshots) Watch(opts v1.ListOptions) (watch.Interface, error) {
+ return c.Fake.
+ InvokesWatch(testing.NewWatchAction(volumesnapshotsResource, c.ns, opts))
+
+}
+
+// Create takes the representation of a volumeSnapshot and creates it. Returns the server's representation of the volumeSnapshot, and an error, if there is any.
+func (c *FakeVolumeSnapshots) Create(volumeSnapshot *ark_v1.VolumeSnapshot) (result *ark_v1.VolumeSnapshot, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewCreateAction(volumesnapshotsResource, c.ns, volumeSnapshot), &ark_v1.VolumeSnapshot{})
+
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*ark_v1.VolumeSnapshot), err
+}
+
+// Update takes the representation of a volumeSnapshot and updates it. Returns the server's representation of the volumeSnapshot, and an error, if there is any.
+func (c *FakeVolumeSnapshots) Update(volumeSnapshot *ark_v1.VolumeSnapshot) (result *ark_v1.VolumeSnapshot, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewUpdateAction(volumesnapshotsResource, c.ns, volumeSnapshot), &ark_v1.VolumeSnapshot{})
+
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*ark_v1.VolumeSnapshot), err
+}
+
+// UpdateStatus was generated because the type contains a Status member.
+// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
+func (c *FakeVolumeSnapshots) UpdateStatus(volumeSnapshot *ark_v1.VolumeSnapshot) (*ark_v1.VolumeSnapshot, error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewUpdateSubresourceAction(volumesnapshotsResource, "status", c.ns, volumeSnapshot), &ark_v1.VolumeSnapshot{})
+
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*ark_v1.VolumeSnapshot), err
+}
+
+// Delete takes name of the volumeSnapshot and deletes it. Returns an error if one occurs.
+func (c *FakeVolumeSnapshots) Delete(name string, options *v1.DeleteOptions) error {
+ _, err := c.Fake.
+ Invokes(testing.NewDeleteAction(volumesnapshotsResource, c.ns, name), &ark_v1.VolumeSnapshot{})
+
+ return err
+}
+
+// DeleteCollection deletes a collection of objects.
+func (c *FakeVolumeSnapshots) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
+ action := testing.NewDeleteCollectionAction(volumesnapshotsResource, c.ns, listOptions)
+
+ _, err := c.Fake.Invokes(action, &ark_v1.VolumeSnapshotList{})
+ return err
+}
+
+// Patch applies the patch and returns the patched volumeSnapshot.
+func (c *FakeVolumeSnapshots) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *ark_v1.VolumeSnapshot, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewPatchSubresourceAction(volumesnapshotsResource, c.ns, name, data, subresources...), &ark_v1.VolumeSnapshot{})
+
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*ark_v1.VolumeSnapshot), err
+}
diff --git a/pkg/generated/clientset/versioned/typed/ark/v1/fake/fake_volumesnapshotlocation.go b/pkg/generated/clientset/versioned/typed/ark/v1/fake/fake_volumesnapshotlocation.go
new file mode 100644
index 0000000000..2574e53a37
--- /dev/null
+++ b/pkg/generated/clientset/versioned/typed/ark/v1/fake/fake_volumesnapshotlocation.go
@@ -0,0 +1,140 @@
+/*
+Copyright 2018 the Heptio Ark contributors.
+
+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 client-gen. DO NOT EDIT.
+
+package fake
+
+import (
+ ark_v1 "github.com/heptio/ark/pkg/apis/ark/v1"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ labels "k8s.io/apimachinery/pkg/labels"
+ schema "k8s.io/apimachinery/pkg/runtime/schema"
+ types "k8s.io/apimachinery/pkg/types"
+ watch "k8s.io/apimachinery/pkg/watch"
+ testing "k8s.io/client-go/testing"
+)
+
+// FakeVolumeSnapshotLocations implements VolumeSnapshotLocationInterface
+type FakeVolumeSnapshotLocations struct {
+ Fake *FakeArkV1
+ ns string
+}
+
+var volumesnapshotlocationsResource = schema.GroupVersionResource{Group: "ark.heptio.com", Version: "v1", Resource: "volumesnapshotlocations"}
+
+var volumesnapshotlocationsKind = schema.GroupVersionKind{Group: "ark.heptio.com", Version: "v1", Kind: "VolumeSnapshotLocation"}
+
+// Get takes name of the volumeSnapshotLocation, and returns the corresponding volumeSnapshotLocation object, and an error if there is any.
+func (c *FakeVolumeSnapshotLocations) Get(name string, options v1.GetOptions) (result *ark_v1.VolumeSnapshotLocation, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewGetAction(volumesnapshotlocationsResource, c.ns, name), &ark_v1.VolumeSnapshotLocation{})
+
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*ark_v1.VolumeSnapshotLocation), err
+}
+
+// List takes label and field selectors, and returns the list of VolumeSnapshotLocations that match those selectors.
+func (c *FakeVolumeSnapshotLocations) List(opts v1.ListOptions) (result *ark_v1.VolumeSnapshotLocationList, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewListAction(volumesnapshotlocationsResource, volumesnapshotlocationsKind, c.ns, opts), &ark_v1.VolumeSnapshotLocationList{})
+
+ if obj == nil {
+ return nil, err
+ }
+
+ label, _, _ := testing.ExtractFromListOptions(opts)
+ if label == nil {
+ label = labels.Everything()
+ }
+ list := &ark_v1.VolumeSnapshotLocationList{ListMeta: obj.(*ark_v1.VolumeSnapshotLocationList).ListMeta}
+ for _, item := range obj.(*ark_v1.VolumeSnapshotLocationList).Items {
+ if label.Matches(labels.Set(item.Labels)) {
+ list.Items = append(list.Items, item)
+ }
+ }
+ return list, err
+}
+
+// Watch returns a watch.Interface that watches the requested volumeSnapshotLocations.
+func (c *FakeVolumeSnapshotLocations) Watch(opts v1.ListOptions) (watch.Interface, error) {
+ return c.Fake.
+ InvokesWatch(testing.NewWatchAction(volumesnapshotlocationsResource, c.ns, opts))
+
+}
+
+// Create takes the representation of a volumeSnapshotLocation and creates it. Returns the server's representation of the volumeSnapshotLocation, and an error, if there is any.
+func (c *FakeVolumeSnapshotLocations) Create(volumeSnapshotLocation *ark_v1.VolumeSnapshotLocation) (result *ark_v1.VolumeSnapshotLocation, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewCreateAction(volumesnapshotlocationsResource, c.ns, volumeSnapshotLocation), &ark_v1.VolumeSnapshotLocation{})
+
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*ark_v1.VolumeSnapshotLocation), err
+}
+
+// Update takes the representation of a volumeSnapshotLocation and updates it. Returns the server's representation of the volumeSnapshotLocation, and an error, if there is any.
+func (c *FakeVolumeSnapshotLocations) Update(volumeSnapshotLocation *ark_v1.VolumeSnapshotLocation) (result *ark_v1.VolumeSnapshotLocation, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewUpdateAction(volumesnapshotlocationsResource, c.ns, volumeSnapshotLocation), &ark_v1.VolumeSnapshotLocation{})
+
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*ark_v1.VolumeSnapshotLocation), err
+}
+
+// UpdateStatus was generated because the type contains a Status member.
+// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
+func (c *FakeVolumeSnapshotLocations) UpdateStatus(volumeSnapshotLocation *ark_v1.VolumeSnapshotLocation) (*ark_v1.VolumeSnapshotLocation, error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewUpdateSubresourceAction(volumesnapshotlocationsResource, "status", c.ns, volumeSnapshotLocation), &ark_v1.VolumeSnapshotLocation{})
+
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*ark_v1.VolumeSnapshotLocation), err
+}
+
+// Delete takes name of the volumeSnapshotLocation and deletes it. Returns an error if one occurs.
+func (c *FakeVolumeSnapshotLocations) Delete(name string, options *v1.DeleteOptions) error {
+ _, err := c.Fake.
+ Invokes(testing.NewDeleteAction(volumesnapshotlocationsResource, c.ns, name), &ark_v1.VolumeSnapshotLocation{})
+
+ return err
+}
+
+// DeleteCollection deletes a collection of objects.
+func (c *FakeVolumeSnapshotLocations) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
+ action := testing.NewDeleteCollectionAction(volumesnapshotlocationsResource, c.ns, listOptions)
+
+ _, err := c.Fake.Invokes(action, &ark_v1.VolumeSnapshotLocationList{})
+ return err
+}
+
+// Patch applies the patch and returns the patched volumeSnapshotLocation.
+func (c *FakeVolumeSnapshotLocations) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *ark_v1.VolumeSnapshotLocation, err error) {
+ obj, err := c.Fake.
+ Invokes(testing.NewPatchSubresourceAction(volumesnapshotlocationsResource, c.ns, name, data, subresources...), &ark_v1.VolumeSnapshotLocation{})
+
+ if obj == nil {
+ return nil, err
+ }
+ return obj.(*ark_v1.VolumeSnapshotLocation), err
+}
diff --git a/pkg/generated/clientset/versioned/typed/ark/v1/generated_expansion.go b/pkg/generated/clientset/versioned/typed/ark/v1/generated_expansion.go
index 4181aa73a6..c50e95cd9b 100644
--- a/pkg/generated/clientset/versioned/typed/ark/v1/generated_expansion.go
+++ b/pkg/generated/clientset/versioned/typed/ark/v1/generated_expansion.go
@@ -37,3 +37,7 @@ type ResticRepositoryExpansion interface{}
type RestoreExpansion interface{}
type ScheduleExpansion interface{}
+
+type VolumeSnapshotExpansion interface{}
+
+type VolumeSnapshotLocationExpansion interface{}
diff --git a/pkg/generated/clientset/versioned/typed/ark/v1/volumesnapshot.go b/pkg/generated/clientset/versioned/typed/ark/v1/volumesnapshot.go
new file mode 100644
index 0000000000..b5c8d55fcb
--- /dev/null
+++ b/pkg/generated/clientset/versioned/typed/ark/v1/volumesnapshot.go
@@ -0,0 +1,174 @@
+/*
+Copyright 2018 the Heptio Ark contributors.
+
+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 client-gen. DO NOT EDIT.
+
+package v1
+
+import (
+ v1 "github.com/heptio/ark/pkg/apis/ark/v1"
+ scheme "github.com/heptio/ark/pkg/generated/clientset/versioned/scheme"
+ meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ types "k8s.io/apimachinery/pkg/types"
+ watch "k8s.io/apimachinery/pkg/watch"
+ rest "k8s.io/client-go/rest"
+)
+
+// VolumeSnapshotsGetter has a method to return a VolumeSnapshotInterface.
+// A group's client should implement this interface.
+type VolumeSnapshotsGetter interface {
+ VolumeSnapshots(namespace string) VolumeSnapshotInterface
+}
+
+// VolumeSnapshotInterface has methods to work with VolumeSnapshot resources.
+type VolumeSnapshotInterface interface {
+ Create(*v1.VolumeSnapshot) (*v1.VolumeSnapshot, error)
+ Update(*v1.VolumeSnapshot) (*v1.VolumeSnapshot, error)
+ UpdateStatus(*v1.VolumeSnapshot) (*v1.VolumeSnapshot, error)
+ Delete(name string, options *meta_v1.DeleteOptions) error
+ DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error
+ Get(name string, options meta_v1.GetOptions) (*v1.VolumeSnapshot, error)
+ List(opts meta_v1.ListOptions) (*v1.VolumeSnapshotList, error)
+ Watch(opts meta_v1.ListOptions) (watch.Interface, error)
+ Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.VolumeSnapshot, err error)
+ VolumeSnapshotExpansion
+}
+
+// volumeSnapshots implements VolumeSnapshotInterface
+type volumeSnapshots struct {
+ client rest.Interface
+ ns string
+}
+
+// newVolumeSnapshots returns a VolumeSnapshots
+func newVolumeSnapshots(c *ArkV1Client, namespace string) *volumeSnapshots {
+ return &volumeSnapshots{
+ client: c.RESTClient(),
+ ns: namespace,
+ }
+}
+
+// Get takes name of the volumeSnapshot, and returns the corresponding volumeSnapshot object, and an error if there is any.
+func (c *volumeSnapshots) Get(name string, options meta_v1.GetOptions) (result *v1.VolumeSnapshot, err error) {
+ result = &v1.VolumeSnapshot{}
+ err = c.client.Get().
+ Namespace(c.ns).
+ Resource("volumesnapshots").
+ Name(name).
+ VersionedParams(&options, scheme.ParameterCodec).
+ Do().
+ Into(result)
+ return
+}
+
+// List takes label and field selectors, and returns the list of VolumeSnapshots that match those selectors.
+func (c *volumeSnapshots) List(opts meta_v1.ListOptions) (result *v1.VolumeSnapshotList, err error) {
+ result = &v1.VolumeSnapshotList{}
+ err = c.client.Get().
+ Namespace(c.ns).
+ Resource("volumesnapshots").
+ VersionedParams(&opts, scheme.ParameterCodec).
+ Do().
+ Into(result)
+ return
+}
+
+// Watch returns a watch.Interface that watches the requested volumeSnapshots.
+func (c *volumeSnapshots) Watch(opts meta_v1.ListOptions) (watch.Interface, error) {
+ opts.Watch = true
+ return c.client.Get().
+ Namespace(c.ns).
+ Resource("volumesnapshots").
+ VersionedParams(&opts, scheme.ParameterCodec).
+ Watch()
+}
+
+// Create takes the representation of a volumeSnapshot and creates it. Returns the server's representation of the volumeSnapshot, and an error, if there is any.
+func (c *volumeSnapshots) Create(volumeSnapshot *v1.VolumeSnapshot) (result *v1.VolumeSnapshot, err error) {
+ result = &v1.VolumeSnapshot{}
+ err = c.client.Post().
+ Namespace(c.ns).
+ Resource("volumesnapshots").
+ Body(volumeSnapshot).
+ Do().
+ Into(result)
+ return
+}
+
+// Update takes the representation of a volumeSnapshot and updates it. Returns the server's representation of the volumeSnapshot, and an error, if there is any.
+func (c *volumeSnapshots) Update(volumeSnapshot *v1.VolumeSnapshot) (result *v1.VolumeSnapshot, err error) {
+ result = &v1.VolumeSnapshot{}
+ err = c.client.Put().
+ Namespace(c.ns).
+ Resource("volumesnapshots").
+ Name(volumeSnapshot.Name).
+ Body(volumeSnapshot).
+ Do().
+ Into(result)
+ return
+}
+
+// UpdateStatus was generated because the type contains a Status member.
+// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
+
+func (c *volumeSnapshots) UpdateStatus(volumeSnapshot *v1.VolumeSnapshot) (result *v1.VolumeSnapshot, err error) {
+ result = &v1.VolumeSnapshot{}
+ err = c.client.Put().
+ Namespace(c.ns).
+ Resource("volumesnapshots").
+ Name(volumeSnapshot.Name).
+ SubResource("status").
+ Body(volumeSnapshot).
+ Do().
+ Into(result)
+ return
+}
+
+// Delete takes name of the volumeSnapshot and deletes it. Returns an error if one occurs.
+func (c *volumeSnapshots) Delete(name string, options *meta_v1.DeleteOptions) error {
+ return c.client.Delete().
+ Namespace(c.ns).
+ Resource("volumesnapshots").
+ Name(name).
+ Body(options).
+ Do().
+ Error()
+}
+
+// DeleteCollection deletes a collection of objects.
+func (c *volumeSnapshots) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error {
+ return c.client.Delete().
+ Namespace(c.ns).
+ Resource("volumesnapshots").
+ VersionedParams(&listOptions, scheme.ParameterCodec).
+ Body(options).
+ Do().
+ Error()
+}
+
+// Patch applies the patch and returns the patched volumeSnapshot.
+func (c *volumeSnapshots) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.VolumeSnapshot, err error) {
+ result = &v1.VolumeSnapshot{}
+ err = c.client.Patch(pt).
+ Namespace(c.ns).
+ Resource("volumesnapshots").
+ SubResource(subresources...).
+ Name(name).
+ Body(data).
+ Do().
+ Into(result)
+ return
+}
diff --git a/pkg/generated/clientset/versioned/typed/ark/v1/volumesnapshotlocation.go b/pkg/generated/clientset/versioned/typed/ark/v1/volumesnapshotlocation.go
new file mode 100644
index 0000000000..7a285ecaa7
--- /dev/null
+++ b/pkg/generated/clientset/versioned/typed/ark/v1/volumesnapshotlocation.go
@@ -0,0 +1,174 @@
+/*
+Copyright 2018 the Heptio Ark contributors.
+
+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 client-gen. DO NOT EDIT.
+
+package v1
+
+import (
+ v1 "github.com/heptio/ark/pkg/apis/ark/v1"
+ scheme "github.com/heptio/ark/pkg/generated/clientset/versioned/scheme"
+ meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ types "k8s.io/apimachinery/pkg/types"
+ watch "k8s.io/apimachinery/pkg/watch"
+ rest "k8s.io/client-go/rest"
+)
+
+// VolumeSnapshotLocationsGetter has a method to return a VolumeSnapshotLocationInterface.
+// A group's client should implement this interface.
+type VolumeSnapshotLocationsGetter interface {
+ VolumeSnapshotLocations(namespace string) VolumeSnapshotLocationInterface
+}
+
+// VolumeSnapshotLocationInterface has methods to work with VolumeSnapshotLocation resources.
+type VolumeSnapshotLocationInterface interface {
+ Create(*v1.VolumeSnapshotLocation) (*v1.VolumeSnapshotLocation, error)
+ Update(*v1.VolumeSnapshotLocation) (*v1.VolumeSnapshotLocation, error)
+ UpdateStatus(*v1.VolumeSnapshotLocation) (*v1.VolumeSnapshotLocation, error)
+ Delete(name string, options *meta_v1.DeleteOptions) error
+ DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error
+ Get(name string, options meta_v1.GetOptions) (*v1.VolumeSnapshotLocation, error)
+ List(opts meta_v1.ListOptions) (*v1.VolumeSnapshotLocationList, error)
+ Watch(opts meta_v1.ListOptions) (watch.Interface, error)
+ Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.VolumeSnapshotLocation, err error)
+ VolumeSnapshotLocationExpansion
+}
+
+// volumeSnapshotLocations implements VolumeSnapshotLocationInterface
+type volumeSnapshotLocations struct {
+ client rest.Interface
+ ns string
+}
+
+// newVolumeSnapshotLocations returns a VolumeSnapshotLocations
+func newVolumeSnapshotLocations(c *ArkV1Client, namespace string) *volumeSnapshotLocations {
+ return &volumeSnapshotLocations{
+ client: c.RESTClient(),
+ ns: namespace,
+ }
+}
+
+// Get takes name of the volumeSnapshotLocation, and returns the corresponding volumeSnapshotLocation object, and an error if there is any.
+func (c *volumeSnapshotLocations) Get(name string, options meta_v1.GetOptions) (result *v1.VolumeSnapshotLocation, err error) {
+ result = &v1.VolumeSnapshotLocation{}
+ err = c.client.Get().
+ Namespace(c.ns).
+ Resource("volumesnapshotlocations").
+ Name(name).
+ VersionedParams(&options, scheme.ParameterCodec).
+ Do().
+ Into(result)
+ return
+}
+
+// List takes label and field selectors, and returns the list of VolumeSnapshotLocations that match those selectors.
+func (c *volumeSnapshotLocations) List(opts meta_v1.ListOptions) (result *v1.VolumeSnapshotLocationList, err error) {
+ result = &v1.VolumeSnapshotLocationList{}
+ err = c.client.Get().
+ Namespace(c.ns).
+ Resource("volumesnapshotlocations").
+ VersionedParams(&opts, scheme.ParameterCodec).
+ Do().
+ Into(result)
+ return
+}
+
+// Watch returns a watch.Interface that watches the requested volumeSnapshotLocations.
+func (c *volumeSnapshotLocations) Watch(opts meta_v1.ListOptions) (watch.Interface, error) {
+ opts.Watch = true
+ return c.client.Get().
+ Namespace(c.ns).
+ Resource("volumesnapshotlocations").
+ VersionedParams(&opts, scheme.ParameterCodec).
+ Watch()
+}
+
+// Create takes the representation of a volumeSnapshotLocation and creates it. Returns the server's representation of the volumeSnapshotLocation, and an error, if there is any.
+func (c *volumeSnapshotLocations) Create(volumeSnapshotLocation *v1.VolumeSnapshotLocation) (result *v1.VolumeSnapshotLocation, err error) {
+ result = &v1.VolumeSnapshotLocation{}
+ err = c.client.Post().
+ Namespace(c.ns).
+ Resource("volumesnapshotlocations").
+ Body(volumeSnapshotLocation).
+ Do().
+ Into(result)
+ return
+}
+
+// Update takes the representation of a volumeSnapshotLocation and updates it. Returns the server's representation of the volumeSnapshotLocation, and an error, if there is any.
+func (c *volumeSnapshotLocations) Update(volumeSnapshotLocation *v1.VolumeSnapshotLocation) (result *v1.VolumeSnapshotLocation, err error) {
+ result = &v1.VolumeSnapshotLocation{}
+ err = c.client.Put().
+ Namespace(c.ns).
+ Resource("volumesnapshotlocations").
+ Name(volumeSnapshotLocation.Name).
+ Body(volumeSnapshotLocation).
+ Do().
+ Into(result)
+ return
+}
+
+// UpdateStatus was generated because the type contains a Status member.
+// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
+
+func (c *volumeSnapshotLocations) UpdateStatus(volumeSnapshotLocation *v1.VolumeSnapshotLocation) (result *v1.VolumeSnapshotLocation, err error) {
+ result = &v1.VolumeSnapshotLocation{}
+ err = c.client.Put().
+ Namespace(c.ns).
+ Resource("volumesnapshotlocations").
+ Name(volumeSnapshotLocation.Name).
+ SubResource("status").
+ Body(volumeSnapshotLocation).
+ Do().
+ Into(result)
+ return
+}
+
+// Delete takes name of the volumeSnapshotLocation and deletes it. Returns an error if one occurs.
+func (c *volumeSnapshotLocations) Delete(name string, options *meta_v1.DeleteOptions) error {
+ return c.client.Delete().
+ Namespace(c.ns).
+ Resource("volumesnapshotlocations").
+ Name(name).
+ Body(options).
+ Do().
+ Error()
+}
+
+// DeleteCollection deletes a collection of objects.
+func (c *volumeSnapshotLocations) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error {
+ return c.client.Delete().
+ Namespace(c.ns).
+ Resource("volumesnapshotlocations").
+ VersionedParams(&listOptions, scheme.ParameterCodec).
+ Body(options).
+ Do().
+ Error()
+}
+
+// Patch applies the patch and returns the patched volumeSnapshotLocation.
+func (c *volumeSnapshotLocations) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.VolumeSnapshotLocation, err error) {
+ result = &v1.VolumeSnapshotLocation{}
+ err = c.client.Patch(pt).
+ Namespace(c.ns).
+ Resource("volumesnapshotlocations").
+ SubResource(subresources...).
+ Name(name).
+ Body(data).
+ Do().
+ Into(result)
+ return
+}
diff --git a/pkg/generated/informers/externalversions/ark/v1/interface.go b/pkg/generated/informers/externalversions/ark/v1/interface.go
index 3b253965c9..da71f31e9a 100644
--- a/pkg/generated/informers/externalversions/ark/v1/interface.go
+++ b/pkg/generated/informers/externalversions/ark/v1/interface.go
@@ -44,6 +44,10 @@ type Interface interface {
Restores() RestoreInformer
// Schedules returns a ScheduleInformer.
Schedules() ScheduleInformer
+ // VolumeSnapshots returns a VolumeSnapshotInformer.
+ VolumeSnapshots() VolumeSnapshotInformer
+ // VolumeSnapshotLocations returns a VolumeSnapshotLocationInformer.
+ VolumeSnapshotLocations() VolumeSnapshotLocationInformer
}
type version struct {
@@ -106,3 +110,13 @@ func (v *version) Restores() RestoreInformer {
func (v *version) Schedules() ScheduleInformer {
return &scheduleInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
+
+// VolumeSnapshots returns a VolumeSnapshotInformer.
+func (v *version) VolumeSnapshots() VolumeSnapshotInformer {
+ return &volumeSnapshotInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
+}
+
+// VolumeSnapshotLocations returns a VolumeSnapshotLocationInformer.
+func (v *version) VolumeSnapshotLocations() VolumeSnapshotLocationInformer {
+ return &volumeSnapshotLocationInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
+}
diff --git a/pkg/generated/informers/externalversions/ark/v1/volumesnapshot.go b/pkg/generated/informers/externalversions/ark/v1/volumesnapshot.go
new file mode 100644
index 0000000000..c206a3dff7
--- /dev/null
+++ b/pkg/generated/informers/externalversions/ark/v1/volumesnapshot.go
@@ -0,0 +1,89 @@
+/*
+Copyright 2018 the Heptio Ark contributors.
+
+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 informer-gen. DO NOT EDIT.
+
+package v1
+
+import (
+ time "time"
+
+ ark_v1 "github.com/heptio/ark/pkg/apis/ark/v1"
+ versioned "github.com/heptio/ark/pkg/generated/clientset/versioned"
+ internalinterfaces "github.com/heptio/ark/pkg/generated/informers/externalversions/internalinterfaces"
+ v1 "github.com/heptio/ark/pkg/generated/listers/ark/v1"
+ meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ runtime "k8s.io/apimachinery/pkg/runtime"
+ watch "k8s.io/apimachinery/pkg/watch"
+ cache "k8s.io/client-go/tools/cache"
+)
+
+// VolumeSnapshotInformer provides access to a shared informer and lister for
+// VolumeSnapshots.
+type VolumeSnapshotInformer interface {
+ Informer() cache.SharedIndexInformer
+ Lister() v1.VolumeSnapshotLister
+}
+
+type volumeSnapshotInformer struct {
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
+}
+
+// NewVolumeSnapshotInformer constructs a new informer for VolumeSnapshot type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewVolumeSnapshotInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredVolumeSnapshotInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredVolumeSnapshotInformer constructs a new informer for VolumeSnapshot type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredVolumeSnapshotInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
+ return cache.NewSharedIndexInformer(
+ &cache.ListWatch{
+ ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
+ return client.ArkV1().VolumeSnapshots(namespace).List(options)
+ },
+ WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
+ return client.ArkV1().VolumeSnapshots(namespace).Watch(options)
+ },
+ },
+ &ark_v1.VolumeSnapshot{},
+ resyncPeriod,
+ indexers,
+ )
+}
+
+func (f *volumeSnapshotInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredVolumeSnapshotInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
+}
+
+func (f *volumeSnapshotInformer) Informer() cache.SharedIndexInformer {
+ return f.factory.InformerFor(&ark_v1.VolumeSnapshot{}, f.defaultInformer)
+}
+
+func (f *volumeSnapshotInformer) Lister() v1.VolumeSnapshotLister {
+ return v1.NewVolumeSnapshotLister(f.Informer().GetIndexer())
+}
diff --git a/pkg/generated/informers/externalversions/ark/v1/volumesnapshotlocation.go b/pkg/generated/informers/externalversions/ark/v1/volumesnapshotlocation.go
new file mode 100644
index 0000000000..71d88b766d
--- /dev/null
+++ b/pkg/generated/informers/externalversions/ark/v1/volumesnapshotlocation.go
@@ -0,0 +1,89 @@
+/*
+Copyright 2018 the Heptio Ark contributors.
+
+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 informer-gen. DO NOT EDIT.
+
+package v1
+
+import (
+ time "time"
+
+ ark_v1 "github.com/heptio/ark/pkg/apis/ark/v1"
+ versioned "github.com/heptio/ark/pkg/generated/clientset/versioned"
+ internalinterfaces "github.com/heptio/ark/pkg/generated/informers/externalversions/internalinterfaces"
+ v1 "github.com/heptio/ark/pkg/generated/listers/ark/v1"
+ meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ runtime "k8s.io/apimachinery/pkg/runtime"
+ watch "k8s.io/apimachinery/pkg/watch"
+ cache "k8s.io/client-go/tools/cache"
+)
+
+// VolumeSnapshotLocationInformer provides access to a shared informer and lister for
+// VolumeSnapshotLocations.
+type VolumeSnapshotLocationInformer interface {
+ Informer() cache.SharedIndexInformer
+ Lister() v1.VolumeSnapshotLocationLister
+}
+
+type volumeSnapshotLocationInformer struct {
+ factory internalinterfaces.SharedInformerFactory
+ tweakListOptions internalinterfaces.TweakListOptionsFunc
+ namespace string
+}
+
+// NewVolumeSnapshotLocationInformer constructs a new informer for VolumeSnapshotLocation type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewVolumeSnapshotLocationInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+ return NewFilteredVolumeSnapshotLocationInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredVolumeSnapshotLocationInformer constructs a new informer for VolumeSnapshotLocation type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredVolumeSnapshotLocationInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
+ return cache.NewSharedIndexInformer(
+ &cache.ListWatch{
+ ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
+ return client.ArkV1().VolumeSnapshotLocations(namespace).List(options)
+ },
+ WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
+ if tweakListOptions != nil {
+ tweakListOptions(&options)
+ }
+ return client.ArkV1().VolumeSnapshotLocations(namespace).Watch(options)
+ },
+ },
+ &ark_v1.VolumeSnapshotLocation{},
+ resyncPeriod,
+ indexers,
+ )
+}
+
+func (f *volumeSnapshotLocationInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+ return NewFilteredVolumeSnapshotLocationInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
+}
+
+func (f *volumeSnapshotLocationInformer) Informer() cache.SharedIndexInformer {
+ return f.factory.InformerFor(&ark_v1.VolumeSnapshotLocation{}, f.defaultInformer)
+}
+
+func (f *volumeSnapshotLocationInformer) Lister() v1.VolumeSnapshotLocationLister {
+ return v1.NewVolumeSnapshotLocationLister(f.Informer().GetIndexer())
+}
diff --git a/pkg/generated/informers/externalversions/generic.go b/pkg/generated/informers/externalversions/generic.go
index bea5129160..9a9fb7ba07 100644
--- a/pkg/generated/informers/externalversions/generic.go
+++ b/pkg/generated/informers/externalversions/generic.go
@@ -73,6 +73,10 @@ func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource
return &genericInformer{resource: resource.GroupResource(), informer: f.Ark().V1().Restores().Informer()}, nil
case v1.SchemeGroupVersion.WithResource("schedules"):
return &genericInformer{resource: resource.GroupResource(), informer: f.Ark().V1().Schedules().Informer()}, nil
+ case v1.SchemeGroupVersion.WithResource("volumesnapshots"):
+ return &genericInformer{resource: resource.GroupResource(), informer: f.Ark().V1().VolumeSnapshots().Informer()}, nil
+ case v1.SchemeGroupVersion.WithResource("volumesnapshotlocations"):
+ return &genericInformer{resource: resource.GroupResource(), informer: f.Ark().V1().VolumeSnapshotLocations().Informer()}, nil
}
diff --git a/pkg/generated/listers/ark/v1/expansion_generated.go b/pkg/generated/listers/ark/v1/expansion_generated.go
index 2a1d153e7d..1b75869c17 100644
--- a/pkg/generated/listers/ark/v1/expansion_generated.go
+++ b/pkg/generated/listers/ark/v1/expansion_generated.go
@@ -97,3 +97,19 @@ type ScheduleListerExpansion interface{}
// ScheduleNamespaceListerExpansion allows custom methods to be added to
// ScheduleNamespaceLister.
type ScheduleNamespaceListerExpansion interface{}
+
+// VolumeSnapshotListerExpansion allows custom methods to be added to
+// VolumeSnapshotLister.
+type VolumeSnapshotListerExpansion interface{}
+
+// VolumeSnapshotNamespaceListerExpansion allows custom methods to be added to
+// VolumeSnapshotNamespaceLister.
+type VolumeSnapshotNamespaceListerExpansion interface{}
+
+// VolumeSnapshotLocationListerExpansion allows custom methods to be added to
+// VolumeSnapshotLocationLister.
+type VolumeSnapshotLocationListerExpansion interface{}
+
+// VolumeSnapshotLocationNamespaceListerExpansion allows custom methods to be added to
+// VolumeSnapshotLocationNamespaceLister.
+type VolumeSnapshotLocationNamespaceListerExpansion interface{}
diff --git a/pkg/generated/listers/ark/v1/volumesnapshot.go b/pkg/generated/listers/ark/v1/volumesnapshot.go
new file mode 100644
index 0000000000..a597f1226d
--- /dev/null
+++ b/pkg/generated/listers/ark/v1/volumesnapshot.go
@@ -0,0 +1,94 @@
+/*
+Copyright 2018 the Heptio Ark contributors.
+
+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 lister-gen. DO NOT EDIT.
+
+package v1
+
+import (
+ v1 "github.com/heptio/ark/pkg/apis/ark/v1"
+ "k8s.io/apimachinery/pkg/api/errors"
+ "k8s.io/apimachinery/pkg/labels"
+ "k8s.io/client-go/tools/cache"
+)
+
+// VolumeSnapshotLister helps list VolumeSnapshots.
+type VolumeSnapshotLister interface {
+ // List lists all VolumeSnapshots in the indexer.
+ List(selector labels.Selector) (ret []*v1.VolumeSnapshot, err error)
+ // VolumeSnapshots returns an object that can list and get VolumeSnapshots.
+ VolumeSnapshots(namespace string) VolumeSnapshotNamespaceLister
+ VolumeSnapshotListerExpansion
+}
+
+// volumeSnapshotLister implements the VolumeSnapshotLister interface.
+type volumeSnapshotLister struct {
+ indexer cache.Indexer
+}
+
+// NewVolumeSnapshotLister returns a new VolumeSnapshotLister.
+func NewVolumeSnapshotLister(indexer cache.Indexer) VolumeSnapshotLister {
+ return &volumeSnapshotLister{indexer: indexer}
+}
+
+// List lists all VolumeSnapshots in the indexer.
+func (s *volumeSnapshotLister) List(selector labels.Selector) (ret []*v1.VolumeSnapshot, err error) {
+ err = cache.ListAll(s.indexer, selector, func(m interface{}) {
+ ret = append(ret, m.(*v1.VolumeSnapshot))
+ })
+ return ret, err
+}
+
+// VolumeSnapshots returns an object that can list and get VolumeSnapshots.
+func (s *volumeSnapshotLister) VolumeSnapshots(namespace string) VolumeSnapshotNamespaceLister {
+ return volumeSnapshotNamespaceLister{indexer: s.indexer, namespace: namespace}
+}
+
+// VolumeSnapshotNamespaceLister helps list and get VolumeSnapshots.
+type VolumeSnapshotNamespaceLister interface {
+ // List lists all VolumeSnapshots in the indexer for a given namespace.
+ List(selector labels.Selector) (ret []*v1.VolumeSnapshot, err error)
+ // Get retrieves the VolumeSnapshot from the indexer for a given namespace and name.
+ Get(name string) (*v1.VolumeSnapshot, error)
+ VolumeSnapshotNamespaceListerExpansion
+}
+
+// volumeSnapshotNamespaceLister implements the VolumeSnapshotNamespaceLister
+// interface.
+type volumeSnapshotNamespaceLister struct {
+ indexer cache.Indexer
+ namespace string
+}
+
+// List lists all VolumeSnapshots in the indexer for a given namespace.
+func (s volumeSnapshotNamespaceLister) List(selector labels.Selector) (ret []*v1.VolumeSnapshot, err error) {
+ err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
+ ret = append(ret, m.(*v1.VolumeSnapshot))
+ })
+ return ret, err
+}
+
+// Get retrieves the VolumeSnapshot from the indexer for a given namespace and name.
+func (s volumeSnapshotNamespaceLister) Get(name string) (*v1.VolumeSnapshot, error) {
+ obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
+ if err != nil {
+ return nil, err
+ }
+ if !exists {
+ return nil, errors.NewNotFound(v1.Resource("volumesnapshot"), name)
+ }
+ return obj.(*v1.VolumeSnapshot), nil
+}
diff --git a/pkg/generated/listers/ark/v1/volumesnapshotlocation.go b/pkg/generated/listers/ark/v1/volumesnapshotlocation.go
new file mode 100644
index 0000000000..95084c8d92
--- /dev/null
+++ b/pkg/generated/listers/ark/v1/volumesnapshotlocation.go
@@ -0,0 +1,94 @@
+/*
+Copyright 2018 the Heptio Ark contributors.
+
+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 lister-gen. DO NOT EDIT.
+
+package v1
+
+import (
+ v1 "github.com/heptio/ark/pkg/apis/ark/v1"
+ "k8s.io/apimachinery/pkg/api/errors"
+ "k8s.io/apimachinery/pkg/labels"
+ "k8s.io/client-go/tools/cache"
+)
+
+// VolumeSnapshotLocationLister helps list VolumeSnapshotLocations.
+type VolumeSnapshotLocationLister interface {
+ // List lists all VolumeSnapshotLocations in the indexer.
+ List(selector labels.Selector) (ret []*v1.VolumeSnapshotLocation, err error)
+ // VolumeSnapshotLocations returns an object that can list and get VolumeSnapshotLocations.
+ VolumeSnapshotLocations(namespace string) VolumeSnapshotLocationNamespaceLister
+ VolumeSnapshotLocationListerExpansion
+}
+
+// volumeSnapshotLocationLister implements the VolumeSnapshotLocationLister interface.
+type volumeSnapshotLocationLister struct {
+ indexer cache.Indexer
+}
+
+// NewVolumeSnapshotLocationLister returns a new VolumeSnapshotLocationLister.
+func NewVolumeSnapshotLocationLister(indexer cache.Indexer) VolumeSnapshotLocationLister {
+ return &volumeSnapshotLocationLister{indexer: indexer}
+}
+
+// List lists all VolumeSnapshotLocations in the indexer.
+func (s *volumeSnapshotLocationLister) List(selector labels.Selector) (ret []*v1.VolumeSnapshotLocation, err error) {
+ err = cache.ListAll(s.indexer, selector, func(m interface{}) {
+ ret = append(ret, m.(*v1.VolumeSnapshotLocation))
+ })
+ return ret, err
+}
+
+// VolumeSnapshotLocations returns an object that can list and get VolumeSnapshotLocations.
+func (s *volumeSnapshotLocationLister) VolumeSnapshotLocations(namespace string) VolumeSnapshotLocationNamespaceLister {
+ return volumeSnapshotLocationNamespaceLister{indexer: s.indexer, namespace: namespace}
+}
+
+// VolumeSnapshotLocationNamespaceLister helps list and get VolumeSnapshotLocations.
+type VolumeSnapshotLocationNamespaceLister interface {
+ // List lists all VolumeSnapshotLocations in the indexer for a given namespace.
+ List(selector labels.Selector) (ret []*v1.VolumeSnapshotLocation, err error)
+ // Get retrieves the VolumeSnapshotLocation from the indexer for a given namespace and name.
+ Get(name string) (*v1.VolumeSnapshotLocation, error)
+ VolumeSnapshotLocationNamespaceListerExpansion
+}
+
+// volumeSnapshotLocationNamespaceLister implements the VolumeSnapshotLocationNamespaceLister
+// interface.
+type volumeSnapshotLocationNamespaceLister struct {
+ indexer cache.Indexer
+ namespace string
+}
+
+// List lists all VolumeSnapshotLocations in the indexer for a given namespace.
+func (s volumeSnapshotLocationNamespaceLister) List(selector labels.Selector) (ret []*v1.VolumeSnapshotLocation, err error) {
+ err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
+ ret = append(ret, m.(*v1.VolumeSnapshotLocation))
+ })
+ return ret, err
+}
+
+// Get retrieves the VolumeSnapshotLocation from the indexer for a given namespace and name.
+func (s volumeSnapshotLocationNamespaceLister) Get(name string) (*v1.VolumeSnapshotLocation, error) {
+ obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
+ if err != nil {
+ return nil, err
+ }
+ if !exists {
+ return nil, errors.NewNotFound(v1.Resource("volumesnapshotlocation"), name)
+ }
+ return obj.(*v1.VolumeSnapshotLocation), nil
+}