agent: Remove get_key_value to enable building in stable rust.

The get_key_value method is currently only avaiable in nightly rust.
As only this feature is required it worth to refactor and enable building
in the stable channel.

The method was removed by first getting the value from the CGROUPS hashmap,
then key is get by iterating over all the keys. The checks for an empty key and
key == "devices" were moved out of the hashmap block.

The README.md was updated as well to detail the instructions for stable rust.

Signed-off-by: Erich Cordoba <erich.cordoba.malibran@intel.com>
This commit is contained in:
Erich Cordoba
2019-10-31 12:21:27 -06:00
parent a19f07b017
commit 5c96a920bd
3 changed files with 16 additions and 20 deletions

View File

@@ -45,9 +45,7 @@ The `rust-agent` depends on [`grpc-rs`](https://github.com/pingcap/grpc-rs) by P
### Build from Source
The rust-agent need to be built with rust nightly, and static linked with musl.
```bash
rustup toolchain install nightly
rustup default nightly
rustup target add x86_64-unknown-linux-musl --toolchain=nightly
rustup target add x86_64-unknown-linux-musl
git submodule update --init --recursive
sudo ln -s /usr/bin/g++ /bin/musl-g++
cargo build --target x86_64-unknown-linux-musl --release

View File

@@ -588,24 +588,22 @@ pub fn get_cgroup_mounts(logger: &Logger, cg_path: &str) -> Result<Vec<INIT_MOUN
}
}
match CGROUPS.get_key_value(fields[0]) {
Some((key, value)) => {
if *key == "" {
continue;
}
if fields[0] == "" {
continue;
}
if *key == "devices" {
has_device_cgroup = true;
}
if fields[0] == "devices" {
has_device_cgroup = true;
}
cg_mounts.push(INIT_MOUNT {
fstype: "cgroup",
src: "cgroup",
dest: *value,
options: vec!["nosuid", "nodev", "noexec", "relatime", *key],
});
}
None => continue,
if let Some(value) = CGROUPS.get(&fields[0]) {
let key = CGROUPS.keys().find(|&&f| f == fields[0]).unwrap();
cg_mounts.push(INIT_MOUNT {
fstype: "cgroup",
src: "cgroup",
dest: *value,
options: vec!["nosuid", "nodev", "noexec", "relatime", key]
});
}
}