From 49249e28af27e96c58c9d792ba53f295c10e7e06 Mon Sep 17 00:00:00 2001 From: Kiran Kamineni Date: Fri, 16 Aug 2019 13:15:35 -0700 Subject: Adding typed client for CRD Adding a typed client for CRD Generated using the generate-groups.sh script from the kubernetes/code-generator repo Issue-ID: MULTICLOUD-675 Change-Id: I6c712980595dfed7a8b9c51f50edfc6788372dfd Signed-off-by: Kiran Kamineni --- .../versioned/typed/k8splugin/v1alpha1/doc.go | 19 +++ .../versioned/typed/k8splugin/v1alpha1/fake/doc.go | 19 +++ .../v1alpha1/fake/fake_k8splugin_client.go | 40 +++++ .../v1alpha1/fake/fake_resourcebundlestate.go | 140 +++++++++++++++ .../k8splugin/v1alpha1/generated_expansion.go | 20 +++ .../typed/k8splugin/v1alpha1/k8splugin_client.go | 90 ++++++++++ .../k8splugin/v1alpha1/resourcebundlestate.go | 190 +++++++++++++++++++++ 7 files changed, 518 insertions(+) create mode 100644 src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/doc.go create mode 100644 src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/fake/doc.go create mode 100644 src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/fake/fake_k8splugin_client.go create mode 100644 src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/fake/fake_resourcebundlestate.go create mode 100644 src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/generated_expansion.go create mode 100644 src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/k8splugin_client.go create mode 100644 src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/resourcebundlestate.go (limited to 'src/monitor/pkg/generated/clientset/versioned/typed') diff --git a/src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/doc.go b/src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/doc.go new file mode 100644 index 00000000..ba7c5b55 --- /dev/null +++ b/src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/doc.go @@ -0,0 +1,19 @@ +/* + * Copyright 2019 Intel Corporation, Inc + * + * 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. + +// This package has the automatically generated typed clients. +package v1alpha1 diff --git a/src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/fake/doc.go b/src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/fake/doc.go new file mode 100644 index 00000000..f1769e27 --- /dev/null +++ b/src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/fake/doc.go @@ -0,0 +1,19 @@ +/* + * Copyright 2019 Intel Corporation, Inc + * + * 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 has the automatically generated clients. +package fake diff --git a/src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/fake/fake_k8splugin_client.go b/src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/fake/fake_k8splugin_client.go new file mode 100644 index 00000000..2b719da2 --- /dev/null +++ b/src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/fake/fake_k8splugin_client.go @@ -0,0 +1,40 @@ +/* + * Copyright 2019 Intel Corporation, Inc + * + * 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 ( + v1alpha1 "monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1" + + rest "k8s.io/client-go/rest" + testing "k8s.io/client-go/testing" +) + +type FakeK8spluginV1alpha1 struct { + *testing.Fake +} + +func (c *FakeK8spluginV1alpha1) ResourceBundleStates(namespace string) v1alpha1.ResourceBundleStateInterface { + return &FakeResourceBundleStates{c, namespace} +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *FakeK8spluginV1alpha1) RESTClient() rest.Interface { + var ret *rest.RESTClient + return ret +} diff --git a/src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/fake/fake_resourcebundlestate.go b/src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/fake/fake_resourcebundlestate.go new file mode 100644 index 00000000..6b3066c4 --- /dev/null +++ b/src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/fake/fake_resourcebundlestate.go @@ -0,0 +1,140 @@ +/* + * Copyright 2019 Intel Corporation, Inc + * + * 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 ( + v1alpha1 "monitor/pkg/apis/k8splugin/v1alpha1" + + 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" +) + +// FakeResourceBundleStates implements ResourceBundleStateInterface +type FakeResourceBundleStates struct { + Fake *FakeK8spluginV1alpha1 + ns string +} + +var resourcebundlestatesResource = schema.GroupVersionResource{Group: "k8splugin.io", Version: "v1alpha1", Resource: "resourcebundlestates"} + +var resourcebundlestatesKind = schema.GroupVersionKind{Group: "k8splugin.io", Version: "v1alpha1", Kind: "ResourceBundleState"} + +// Get takes name of the resourceBundleState, and returns the corresponding resourceBundleState object, and an error if there is any. +func (c *FakeResourceBundleStates) Get(name string, options v1.GetOptions) (result *v1alpha1.ResourceBundleState, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(resourcebundlestatesResource, c.ns, name), &v1alpha1.ResourceBundleState{}) + + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ResourceBundleState), err +} + +// List takes label and field selectors, and returns the list of ResourceBundleStates that match those selectors. +func (c *FakeResourceBundleStates) List(opts v1.ListOptions) (result *v1alpha1.ResourceBundleStateList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(resourcebundlestatesResource, resourcebundlestatesKind, c.ns, opts), &v1alpha1.ResourceBundleStateList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1alpha1.ResourceBundleStateList{ListMeta: obj.(*v1alpha1.ResourceBundleStateList).ListMeta} + for _, item := range obj.(*v1alpha1.ResourceBundleStateList).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 resourceBundleStates. +func (c *FakeResourceBundleStates) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(resourcebundlestatesResource, c.ns, opts)) + +} + +// Create takes the representation of a resourceBundleState and creates it. Returns the server's representation of the resourceBundleState, and an error, if there is any. +func (c *FakeResourceBundleStates) Create(resourceBundleState *v1alpha1.ResourceBundleState) (result *v1alpha1.ResourceBundleState, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(resourcebundlestatesResource, c.ns, resourceBundleState), &v1alpha1.ResourceBundleState{}) + + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ResourceBundleState), err +} + +// Update takes the representation of a resourceBundleState and updates it. Returns the server's representation of the resourceBundleState, and an error, if there is any. +func (c *FakeResourceBundleStates) Update(resourceBundleState *v1alpha1.ResourceBundleState) (result *v1alpha1.ResourceBundleState, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(resourcebundlestatesResource, c.ns, resourceBundleState), &v1alpha1.ResourceBundleState{}) + + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ResourceBundleState), 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 *FakeResourceBundleStates) UpdateStatus(resourceBundleState *v1alpha1.ResourceBundleState) (*v1alpha1.ResourceBundleState, error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateSubresourceAction(resourcebundlestatesResource, "status", c.ns, resourceBundleState), &v1alpha1.ResourceBundleState{}) + + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ResourceBundleState), err +} + +// Delete takes name of the resourceBundleState and deletes it. Returns an error if one occurs. +func (c *FakeResourceBundleStates) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(resourcebundlestatesResource, c.ns, name), &v1alpha1.ResourceBundleState{}) + + return err +} + +// DeleteCollection deletes a collection of objects. +func (c *FakeResourceBundleStates) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(resourcebundlestatesResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1alpha1.ResourceBundleStateList{}) + return err +} + +// Patch applies the patch and returns the patched resourceBundleState. +func (c *FakeResourceBundleStates) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.ResourceBundleState, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(resourcebundlestatesResource, c.ns, name, pt, data, subresources...), &v1alpha1.ResourceBundleState{}) + + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ResourceBundleState), err +} diff --git a/src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/generated_expansion.go b/src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/generated_expansion.go new file mode 100644 index 00000000..d6f32cab --- /dev/null +++ b/src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/generated_expansion.go @@ -0,0 +1,20 @@ +/* + * Copyright 2019 Intel Corporation, Inc + * + * 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 v1alpha1 + +type ResourceBundleStateExpansion interface{} diff --git a/src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/k8splugin_client.go b/src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/k8splugin_client.go new file mode 100644 index 00000000..e00a3b54 --- /dev/null +++ b/src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/k8splugin_client.go @@ -0,0 +1,90 @@ +/* + * Copyright 2019 Intel Corporation, Inc + * + * 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 v1alpha1 + +import ( + v1alpha1 "monitor/pkg/apis/k8splugin/v1alpha1" + "monitor/pkg/generated/clientset/versioned/scheme" + + "k8s.io/apimachinery/pkg/runtime/serializer" + rest "k8s.io/client-go/rest" +) + +type K8spluginV1alpha1Interface interface { + RESTClient() rest.Interface + ResourceBundleStatesGetter +} + +// K8spluginV1alpha1Client is used to interact with features provided by the k8splugin.io group. +type K8spluginV1alpha1Client struct { + restClient rest.Interface +} + +func (c *K8spluginV1alpha1Client) ResourceBundleStates(namespace string) ResourceBundleStateInterface { + return newResourceBundleStates(c, namespace) +} + +// NewForConfig creates a new K8spluginV1alpha1Client for the given config. +func NewForConfig(c *rest.Config) (*K8spluginV1alpha1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &K8spluginV1alpha1Client{client}, nil +} + +// NewForConfigOrDie creates a new K8spluginV1alpha1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *K8spluginV1alpha1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new K8spluginV1alpha1Client for the given RESTClient. +func New(c rest.Interface) *K8spluginV1alpha1Client { + return &K8spluginV1alpha1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v1alpha1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/apis" + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *K8spluginV1alpha1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/resourcebundlestate.go b/src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/resourcebundlestate.go new file mode 100644 index 00000000..8015f39c --- /dev/null +++ b/src/monitor/pkg/generated/clientset/versioned/typed/k8splugin/v1alpha1/resourcebundlestate.go @@ -0,0 +1,190 @@ +/* + * Copyright 2019 Intel Corporation, Inc + * + * 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 v1alpha1 + +import ( + v1alpha1 "monitor/pkg/apis/k8splugin/v1alpha1" + scheme "monitor/pkg/generated/clientset/versioned/scheme" + "time" + + 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" +) + +// ResourceBundleStatesGetter has a method to return a ResourceBundleStateInterface. +// A group's client should implement this interface. +type ResourceBundleStatesGetter interface { + ResourceBundleStates(namespace string) ResourceBundleStateInterface +} + +// ResourceBundleStateInterface has methods to work with ResourceBundleState resources. +type ResourceBundleStateInterface interface { + Create(*v1alpha1.ResourceBundleState) (*v1alpha1.ResourceBundleState, error) + Update(*v1alpha1.ResourceBundleState) (*v1alpha1.ResourceBundleState, error) + UpdateStatus(*v1alpha1.ResourceBundleState) (*v1alpha1.ResourceBundleState, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1alpha1.ResourceBundleState, error) + List(opts v1.ListOptions) (*v1alpha1.ResourceBundleStateList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.ResourceBundleState, err error) + ResourceBundleStateExpansion +} + +// resourceBundleStates implements ResourceBundleStateInterface +type resourceBundleStates struct { + client rest.Interface + ns string +} + +// newResourceBundleStates returns a ResourceBundleStates +func newResourceBundleStates(c *K8spluginV1alpha1Client, namespace string) *resourceBundleStates { + return &resourceBundleStates{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Get takes name of the resourceBundleState, and returns the corresponding resourceBundleState object, and an error if there is any. +func (c *resourceBundleStates) Get(name string, options v1.GetOptions) (result *v1alpha1.ResourceBundleState, err error) { + result = &v1alpha1.ResourceBundleState{} + err = c.client.Get(). + Namespace(c.ns). + Resource("resourcebundlestates"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ResourceBundleStates that match those selectors. +func (c *resourceBundleStates) List(opts v1.ListOptions) (result *v1alpha1.ResourceBundleStateList, err error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + result = &v1alpha1.ResourceBundleStateList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("resourcebundlestates"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested resourceBundleStates. +func (c *resourceBundleStates) Watch(opts v1.ListOptions) (watch.Interface, error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("resourcebundlestates"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Watch() +} + +// Create takes the representation of a resourceBundleState and creates it. Returns the server's representation of the resourceBundleState, and an error, if there is any. +func (c *resourceBundleStates) Create(resourceBundleState *v1alpha1.ResourceBundleState) (result *v1alpha1.ResourceBundleState, err error) { + result = &v1alpha1.ResourceBundleState{} + err = c.client.Post(). + Namespace(c.ns). + Resource("resourcebundlestates"). + Body(resourceBundleState). + Do(). + Into(result) + return +} + +// Update takes the representation of a resourceBundleState and updates it. Returns the server's representation of the resourceBundleState, and an error, if there is any. +func (c *resourceBundleStates) Update(resourceBundleState *v1alpha1.ResourceBundleState) (result *v1alpha1.ResourceBundleState, err error) { + result = &v1alpha1.ResourceBundleState{} + err = c.client.Put(). + Namespace(c.ns). + Resource("resourcebundlestates"). + Name(resourceBundleState.Name). + Body(resourceBundleState). + 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 *resourceBundleStates) UpdateStatus(resourceBundleState *v1alpha1.ResourceBundleState) (result *v1alpha1.ResourceBundleState, err error) { + result = &v1alpha1.ResourceBundleState{} + err = c.client.Put(). + Namespace(c.ns). + Resource("resourcebundlestates"). + Name(resourceBundleState.Name). + SubResource("status"). + Body(resourceBundleState). + Do(). + Into(result) + return +} + +// Delete takes name of the resourceBundleState and deletes it. Returns an error if one occurs. +func (c *resourceBundleStates) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("resourcebundlestates"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *resourceBundleStates) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + var timeout time.Duration + if listOptions.TimeoutSeconds != nil { + timeout = time.Duration(*listOptions.TimeoutSeconds) * time.Second + } + return c.client.Delete(). + Namespace(c.ns). + Resource("resourcebundlestates"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Timeout(timeout). + Body(options). + Do(). + Error() +} + +// Patch applies the patch and returns the patched resourceBundleState. +func (c *resourceBundleStates) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.ResourceBundleState, err error) { + result = &v1alpha1.ResourceBundleState{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("resourcebundlestates"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} -- cgit 1.2.3-korg