Commit Graph

12 Commits

Author SHA1 Message Date
Evan Lezar 9afe88e41b Add CDI devices to device plugin API
This change adds CDI device IDs to the ContainerAllocateResponse in the
device plugin API. This allows a device plugin to specify CDI devices
by their unique fully-qualified CDI device names using the related field
in the CRI specification.

Signed-off-by: Evan Lezar <elezar@nvidia.com>

Kubernetes-commit: b57c7e2fe4bb466ff1614aa9df7cc164e90b24b6
2023-05-16 15:12:32 +02:00
Tim Hockin 558a8ec0e0 Set proto go_package: kubelet deviceplugin API
This exposes that the hand-written code used the wrong package name.

This also creates some diff to the *.pb.go files to note that in the
"options".

You can dump the gzipped blob with the following program (thanks
StackOverflow!):

```go
package main

import (
	"bytes"
	"compress/gzip"
	"encoding/json"
	"fmt"
	"os"

	"io/ioutil"

	proto "github.com/golang/protobuf/proto"
	dpb "github.com/golang/protobuf/protoc-gen-go/descriptor"
)

func main() {
	m := map[string][]byte{
		"before": blobv1,
		"after": blobv2,
	}
	arg := os.Args[1]
	dump(m[arg])
}

func dump(bytes []byte) {
	fd, err := decodeFileDesc(bytes)
	if err != nil {
		panic(err)
	}
	b, err := json.MarshalIndent(fd, "", "  ")
	if err != nil {
		panic(err)
	}
	fmt.Println(string(b))
}

// decompress does gzip decompression.
func decompress(b []byte) ([]byte, error) {
	r, err := gzip.NewReader(bytes.NewReader(b))
	if err != nil {
		return nil, fmt.Errorf("bad gzipped descriptor: %v", err)
	}
	out, err := ioutil.ReadAll(r)
	if err != nil {
		return nil, fmt.Errorf("bad gzipped descriptor: %v", err)
	}
	return out, nil
}

func decodeFileDesc(enc []byte) (*dpb.FileDescriptorProto, error) {
	raw, err := decompress(enc)
	if err != nil {
		return nil, fmt.Errorf("failed to decompress enc: %v", err)
	}

	fd := new(dpb.FileDescriptorProto)
	if err := proto.Unmarshal(raw, fd); err != nil {
		return nil, fmt.Errorf("bad descriptor: %v", err)
	}
	return fd, nil
}
```

Kubernetes-commit: 22ddeb02c1e7245ad3e8ae6835f2bd9ac10c3497
2023-01-14 10:27:13 -08:00
Tim Hockin 62e4faf81a Call update-proto-bindings from update-codegen
One script to bring them all ...

Kubernetes-commit: 4dae505d531e149881788dc36148602967419c75
2023-01-05 15:41:51 -08:00
Tim Hockin 16286abe1c Merge 5 fragile proto-bindings scripts into 1
Each of these scripts is basically identical, and all were too brittle.
Now they should be more resilient and easier to manage.  The script
still needs to be updated if we add new ones, which I do not love.

More cleanup to follow.

Kubernetes-commit: e0ecccff3f5148cc167117ac73233b4edc1640d8
2023-01-05 13:53:59 -08:00
Angus Lees bcb28af0cf Rename deviceIDs -> device_ids to follow protobuf naming conventions
The protocol buffer [styleguide] says field names should use
underscore_separated_names.

Code generation tools rely on this convention to split words and
generate language-specific accessors/properties in the local style
conventions (ie: it's more than just a style convention).  For
example, the previous `deviceIDs` name caused Rust proto tools to
generate field names like `device_i_ds` which is just weird.

[styleguide]: https://developers.google.com/protocol-buffers/docs/style#message-and-field-names

Rename `deviceIDs` field to `device_ids`, and use a gogo-specific
option to keep the existing `DeviceIDs` golang name (otherwise it
would generate `DeviceIds`).

Note this doesn't affect protocol buffer / gRPC wire encoding, which
uses numeric values.

Kubernetes-commit: 815dcd5b3174f9ccaa3789f1b688a809223ca860
2020-06-05 12:27:02 +10:00
David Ashpole c5a2be5f9e consistently use double quotes in proto files
Kubernetes-commit: 296f7c91bb52cd724ce6d6d120d5d41ed459d677
2020-09-03 13:50:03 -07:00
Kevin Klues 83a091b032 Add GetPreferredAllocation() call to the device plugin api.proto
The details of this API can be found in:
https://github.com/kubernetes/enhancements/pull/1121

Kubernetes-commit: 202c4f0816be76ece0a9ba8b94192f458e55b35a
2020-07-02 15:15:46 +00:00
Kevin Klues 4e51df3aae Update whitespace in device plugin api.proto
Kubernetes-commit: 9c4198952413685106fa4aef0537154a08e900fd
2020-07-02 15:15:41 +00:00
drfish 97d98d762a Fix typo from reseting to resetting
Kubernetes-commit: 5a44cd65fd9687410003a5933203f01ff9299ea1
2020-01-10 21:35:06 +08:00
chenyaqi01 76f250ec4d Fix device plugin generator script
Kubernetes-commit: fa9a55617bbbbe274195f9f2915e7364c1cb3de5
2019-11-20 12:53:09 +08:00
chenyaqi01 56e9dcaef1 fix inconsistent comment in device plugin api
Kubernetes-commit: f8d3c45d1a9fb25ab3df697a0a59c05c7d60d586
2019-10-11 10:26:19 +08:00
Davanum Srinivas 4398d8f461 Move pkg/kubelet/pluginregistration and deviceplugin
Change-Id: I06adcb43bd278b430ffad2010869e1524c8cc4ff

Kubernetes-commit: d30c489c54c5e6d41ae3a1e1fcd96d24dba4fc51
2019-10-06 15:24:24 -04:00