Skip to content

Commit

Permalink
Implement Alibaba cloud SLS project
Browse files Browse the repository at this point in the history
Support provision Alibaba Cloud SLS project, create `examples` directory
for official examples and update makefile
  • Loading branch information
zzxwill committed Mar 10, 2021
1 parent cca235d commit 76eacc0
Show file tree
Hide file tree
Showing 18 changed files with 1,080 additions and 73 deletions.
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -140,10 +140,10 @@ demo:
docker build . -t ${IMG} -f ./hack/demo/Dockerfile
kind load docker-image $(IMG) || { echo >&2 "kind not installed or error loading image: $(IMG)"; exit 1; }
kubectl apply -f ./package/crds
cat ./cluster/examples/provider.yaml | sed \
cat ./examples/provider.yaml | sed \
-e "s|((ACCESS_KEY_ID))|"${ACCESS_KEY_ID}"|g" \
-e "s|((ACCESS_KEY_SECRET))|"${ACCESS_KEY_SECRET}"|g" \
| kubectl apply -f -
./hack/demo/helm_install_crossplane_master.sh
kubectl apply -f ./cluster/examples/database/rds.yaml
kubectl apply -f ./examples/database/rds.yaml
kubectl apply -f ./hack/demo/deploy/
2 changes: 2 additions & 0 deletions apis/alibaba.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"

databasev1alpha1 "github.com/crossplane/provider-alibaba/apis/database/v1alpha1"
slsv1alpha1 "github.com/crossplane/provider-alibaba/apis/sls/v1alpha1"
"github.com/crossplane/provider-alibaba/apis/v1alpha1"
)

Expand All @@ -29,6 +30,7 @@ func init() {
AddToSchemes = append(AddToSchemes,
v1alpha1.SchemeBuilder.AddToScheme,
databasev1alpha1.SchemeBuilder.AddToScheme,
slsv1alpha1.AddToScheme,
)
}

Expand Down
1 change: 1 addition & 0 deletions apis/sls/sls.go
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
package sls
36 changes: 36 additions & 0 deletions apis/sls/v1alpha1/groupversion_info.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
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 v1alpha1 contains API Schema definitions for the sls v1alpha1 API group
// +kubebuilder:object:generate=true
// +groupName=sls.alibaba.crossplane.io
package v1alpha1

import (
"k8s.io/apimachinery/pkg/runtime/schema"
"sigs.k8s.io/controller-runtime/pkg/scheme"
)

var (
// GroupVersion is group version used to register these objects
GroupVersion = schema.GroupVersion{Group: "sls.alibaba.crossplane.io", Version: "v1alpha1"}

// SchemeBuilder is used to add go types to the GroupVersionKind scheme
SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}

// AddToScheme adds the types in this group-version to the given scheme.
AddToScheme = SchemeBuilder.AddToScheme
)
101 changes: 101 additions & 0 deletions apis/sls/v1alpha1/project_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
/*
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 v1alpha1

import (
"reflect"

xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1"

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

var (
// SLSProjectKind is the kind of SLSProject
SLSProjectKind = reflect.TypeOf(SLSProject{}).Name()
// SLSProjectGroupKind is the group and kind of SLSProject
SLSProjectGroupKind = schema.GroupKind{Group: GroupVersion.Group, Kind: SLSProjectKind}.String()
// SLSProjectKindAPIVersion is the kind, APIVersion of SLSProject
SLSProjectKindAPIVersion = SLSProjectKind + "." + GroupVersion.Version
// SLSProjectGroupVersionKind is the group, version and kind of SLSProject
SLSProjectGroupVersionKind = GroupVersion.WithKind(SLSProjectKind)
)

// SLS Project states.
const (
// The instance is healthy and available
SLSProjectStateRunning = "Running"
// The instance is being created. The instance is inaccessible while it is being created.
SLSProjectStateCreating = "Creating"
// The instance is being deleted.
SLSProjectStateDeleting = "Deleting"
)

// SLSProjectSpec defines the desired state of SLS Project
type SLSProjectSpec struct {
xpv1.ResourceSpec `json:",inline"`
ForProvider SLSProjectParameters `json:"forProvider"`
}

// SLSProjectObservation is the representation of the current state that is observed.
type SLSProjectObservation struct {
// Name specifies the DB instance ID.
Name string `json:"name"`
Status string `json:"status"`
}

// SLSProjectStatus defines the observed state of SLS Project
type SLSProjectStatus struct {
xpv1.ResourceStatus `json:",inline"`
AtProvider SLSProjectObservation `json:"atProvider,omitempty"`
}

// SLSProjectParameters define the desired state of an SLS project.
type SLSProjectParameters struct {
Name string `json:"name"`
Description string `json:"description"`
}

// +kubebuilder:object:root=true

// SLSProject is the Schema for the SLS Projects API
// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status"
// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status"
// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp"
// +kubebuilder:subresource:status
// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,alibaba}
type SLSProject struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`

Spec SLSProjectSpec `json:"spec"`
Status SLSProjectStatus `json:"status,omitempty"`
}

// +kubebuilder:object:root=true

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

func init() {
SchemeBuilder.Register(&SLSProject{}, &SLSProjectList{})
}
148 changes: 148 additions & 0 deletions apis/sls/v1alpha1/zz_generated.deepcopy.go

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

77 changes: 77 additions & 0 deletions apis/sls/v1alpha1/zz_generated.managed.go

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

Loading

0 comments on commit 76eacc0

Please sign in to comment.