Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
19 changes: 14 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,18 @@ Release notes are generated from [Conventional Commits](https://www.conventional

### Bug Fixes

- **observe:** Move YAMLs to examples/, update grpc, refresh changelog [6a9b19f](https://github.com/platformrelay/provider-gridscale/commit/6a9b19fc67c57cb2e0a01b096733f04e8633d525)
- **backuplist:** Fix deprecated API, goimports, regenerate managed/deepcopy files [64a5f5c](https://github.com/platformrelay/provider-gridscale/commit/64a5f5c6c2f78dee4ba7a468f327f1e365ce9cdd)

- **backuplist:** Fix deprecated API, goimports, regenerate managed/deepcopy files [5d9a3a4](https://github.com/platformrelay/provider-gridscale/commit/5d9a3a445d759c791d41727f48f8847bf88b257f)
- **backuplist:** Gofmt, README count 33, API docs, grpc v1.82.1, changelog [99a0d12](https://github.com/platformrelay/provider-gridscale/commit/99a0d12a4bbab55983393faf79c8e05cd641e09e)

- **backuplist:** Gofmt, README count 33, API docs, grpc v1.82.1, changelog [d2ff5a3](https://github.com/platformrelay/provider-gridscale/commit/d2ff5a3e09cc95a4227d64e2af7ed3cfee3ed593)
- **observe:** Move YAMLs to examples/, update grpc, refresh changelog [80107f1](https://github.com/platformrelay/provider-gridscale/commit/80107f12349b2e42f92af29566d8ecce411fa4af)


### Documentation

- **observe:** Add 38 observe-only example YAMLs and docs E8-S01 [f8a3884](https://github.com/platformrelay/provider-gridscale/commit/f8a3884bf50cf75bdf9b90b4403ea242c0437f5e)
- **api:** Regenerate CRD reference docs and README for PublicNetwork E8-S03 [4070c5f](https://github.com/platformrelay/provider-gridscale/commit/4070c5f8439e818c1a33a6f566a7384f899b9c85)

- **observe:** Add 38 observe-only example YAMLs and docs E8-S01 [e92f89e](https://github.com/platformrelay/provider-gridscale/commit/e92f89e051884187ec9c33e6cb9d2f9f8ee3cfa6)

- **backlog:** Mark backlog exhausted (U-1/LB-1/D-020-FU/E5 all landed) ([#29](https://github.com/platformrelay/provider-gridscale/pull/29))[ec942b9](https://github.com/platformrelay/provider-gridscale/commit/ec942b96cf443609fa53ecf52182f5a3bc3d515a)

Expand All @@ -30,7 +32,14 @@ Release notes are generated from [Conventional Commits](https://www.conventional

### Features

- **backuplist:** Add BackupList CRD and observe-only controller E8-S02 [73d9201](https://github.com/platformrelay/provider-gridscale/commit/73d9201b756ca3cf81888311a6661017b743ac0d)
- **publicnetwork:** Add PublicNetwork CRD and observe-only controller E8-S03 [82ea712](https://github.com/platformrelay/provider-gridscale/commit/82ea712b7f50defb77f2c3006db5d5fc833c3af1)

- **backuplist:** Add BackupList CRD and observe-only controller E8-S02 [643d488](https://github.com/platformrelay/provider-gridscale/commit/643d488f87f98ea538886e5b42b02a12902d92cd)


### Tests

- **publicnetwork:** Add namespaced tests and fix errObserveOnly sentinel E8-S03 [4a6df9a](https://github.com/platformrelay/provider-gridscale/commit/4a6df9ac46fbbfda45b93c01df1a86b247af07f3)

## [0.2.2](https://github.com/platformrelay/provider-gridscale/compare/v0.2.1..v0.2.2) - 2026-07-25

Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ clusters in YAML — Crossplane reconciles them against
- **Cluster *and* namespaced APIs** — `gridscale.platformrelay.io` (cluster) and
`gridscale.m.platformrelay.io` (namespaced) so multi-tenant teams can own
their own `ProviderConfig`.
- **33 managed resources / 8 API groups** — servers, storage, networking, PaaS
- **34 managed resources / 8 API groups** — servers, storage, networking, PaaS
databases, K8s, object storage, marketplace apps, and more.
- **Signed packages** — GHCR + Upbound Marketplace publishes are keyless-cosign
signed with an SBOM (from `v0.2.0` onward).
Expand Down Expand Up @@ -113,20 +113,20 @@ Namespaced `ProviderConfig` / `ClusterProviderConfig` live under

## Supported resources

33 managed resources across 8 API groups, each served under both the
34 managed resources across 8 API groups, each served under both the
cluster-scoped and namespaced families. Kind names below are the exact API
server values (Upjet casing) — copy straight into `kind:`.

| API group | Managed resources (`Kind`) |
| --- | --- |
| `gridscale` | `Backupschedule`, `Filesystem`, `Firewall`, `IPv4`, `IPv6`, `Isoimage`, `K8S`, `Loadbalancer`, `Mariadb`, `Memcached` †, `MySQL` †, `Network`, `Paas`, `Postgresql`, `Server`, `Snapshot`, `Snapshotschedule`, `Sqlserver`, `Sshkey`, `Storage`, `Template` |
| `gridscale` | `Backupschedule`, `Filesystem`, `Firewall`, `IPv4`, `IPv6`, `Isoimage`, `K8S`, `Loadbalancer`, `Mariadb`, `Memcached` †, `MySQL` †, `Network`, `Paas`, `Postgresql`, `PublicNetwork`, `Server`, `Snapshot`, `Snapshotschedule`, `Sqlserver`, `Sshkey`, `Storage`, `Template` |
| `marketplace` | `Application`, `ApplicationImport` |
| `mysql8` | `MySQL8` |
| `object` | `StorageAccesskey`, `StorageBucket` |
| `paas` | `Securityzone` |
| `redis` | `Cache`, `Store` |
| `ssl` | `Certificate` |
| `storage` | `Clone`, `StorageImport` |
| `storage` | `BackupList`, `Clone`, `StorageImport` |

† Upstream-deprecated — see [Deprecations](#deprecations).

Expand Down
81 changes: 81 additions & 0 deletions apis/cluster/gridscale/v1alpha1/publicnetwork_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
// SPDX-FileCopyrightText: 2024 The Crossplane Authors <https://crossplane.io>
//
// SPDX-License-Identifier: Apache-2.0

package v1alpha1

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

v1 "github.com/crossplane/crossplane-runtime/v2/apis/common/v1"
)

// PublicNetworkParameters are the configurable fields of a PublicNetwork.
// No inputs are required — the controller discovers the public network automatically.
type PublicNetworkParameters struct{}

// PublicNetworkObservation are the observable fields of a PublicNetwork.
type PublicNetworkObservation struct {
Name *string `json:"name,omitempty"`
Status *string `json:"status,omitempty"`
NetworkType *string `json:"networkType,omitempty"`
LocationUUID *string `json:"locationUUID,omitempty"`
LocationName *string `json:"locationName,omitempty"`
LocationCountry *string `json:"locationCountry,omitempty"`
LocationIATA *string `json:"locationIATA,omitempty"`
L2Security *bool `json:"l2Security,omitempty"`
DeleteBlock *bool `json:"deleteBlock,omitempty"`
Labels []string `json:"labels,omitempty"`
CreateTime *string `json:"createTime,omitempty"`
ChangeTime *string `json:"changeTime,omitempty"`
}

// PublicNetworkSpec defines the desired state of PublicNetwork.
type PublicNetworkSpec struct {
v1.ResourceSpec `json:",inline"`
ForProvider PublicNetworkParameters `json:"forProvider"`
}

// PublicNetworkStatus defines the observed state of PublicNetwork.
type PublicNetworkStatus struct {
v1.ResourceStatus `json:",inline"`
AtProvider PublicNetworkObservation `json:"atProvider,omitempty"`
}

// +kubebuilder:object:root=true
// +kubebuilder:subresource:status
// +kubebuilder:storageversion
// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status"
// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status"
// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp"
// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,gridscale}

// PublicNetwork is the Schema for the PublicNetworks API. Returns the account's public network details.
type PublicNetwork struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec PublicNetworkSpec `json:"spec"`
Status PublicNetworkStatus `json:"status,omitempty"`
}

// +kubebuilder:object:root=true

// PublicNetworkList contains a list of PublicNetwork.
type PublicNetworkList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []PublicNetwork `json:"items"`
}

// Repository type metadata.
var (
PublicNetwork_Kind = "PublicNetwork"
PublicNetwork_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: PublicNetwork_Kind}.String()
PublicNetwork_KindAPIVersion = PublicNetwork_Kind + "." + CRDGroupVersion.String()
PublicNetwork_GroupVersionKind = CRDGroupVersion.WithKind(PublicNetwork_Kind)
)

func init() {
SchemeBuilder.Register(&PublicNetwork{}, &PublicNetworkList{})
}
183 changes: 183 additions & 0 deletions apis/cluster/gridscale/v1alpha1/zz_generated.deepcopy.go

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

Loading
Loading