diff --git a/Gopkg.toml b/Gopkg.toml new file mode 100644 index 0000000000..7236107dfb --- /dev/null +++ b/Gopkg.toml @@ -0,0 +1,13 @@ +required = ["k8s.io/code-generator/cmd/client-gen"] + +[[constraint]] + name = "k8s.io/apimachinery" + branch = "release-1.9" + +[[constraint]] + name = "k8s.io/client-go" + branch = "release-6.0" + +[[constraint]] + name = "k8s.io/code-generator" + branch = "release-1.9" diff --git a/pkg/apis/policy/register.go b/pkg/apis/policy/register.go new file mode 100644 index 0000000000..a3301eb74f --- /dev/null +++ b/pkg/apis/policy/register.go @@ -0,0 +1,5 @@ +package policy + +const ( + GroupName = "policy.nirmata.io" +) diff --git a/pkg/apis/policy/v1alpha1/doc.go b/pkg/apis/policy/v1alpha1/doc.go new file mode 100644 index 0000000000..1c267880d8 --- /dev/null +++ b/pkg/apis/policy/v1alpha1/doc.go @@ -0,0 +1 @@ +package v1alpha1 diff --git a/pkg/apis/policy/v1alpha1/register.go b/pkg/apis/policy/v1alpha1/register.go new file mode 100644 index 0000000000..5404842ee6 --- /dev/null +++ b/pkg/apis/policy/v1alpha1/register.go @@ -0,0 +1,35 @@ +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} + +// Kind takes an unqualified kind and returns back a Group qualified GroupKind +func Kind(kind string) schema.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Policy{}, + &PolicyList{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/pkg/apis/policy/v1alpha1/types.go b/pkg/apis/policy/v1alpha1/types.go new file mode 100644 index 0000000000..a03bb1f375 --- /dev/null +++ b/pkg/apis/policy/v1alpha1/types.go @@ -0,0 +1,56 @@ +/* +Copyright 2017 The Kubernetes Authors. +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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// Policy is a specification for a Policy resource +type Policy struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec PolicySpec `json:"spec"` + Status PolicyStatus `json:"status"` +} + +// PolicySpec is the spec for a Policy resource +type PolicySpec struct { + Rules []Rule `json:"rules"` +} + +type Rule struct { + Kind string `json:"kind"` + Name *string `json:"name"` + Selector *metav1.LabelSelector `json:"selector"` +} + +// PolicyStatus is the status for a Policy resource +type PolicyStatus struct { + Logs []string `json:"log"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// StaticEgressIPList is a list of StaticEgressIP resources +type PolicyList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata"` + + Items []Policy `json:"items"` +}