From 5d92391e3cfd5f853799280fad5d175184fa592a Mon Sep 17 00:00:00 2001 From: hunjixin <1084400399@qq.com> Date: Fri, 9 Aug 2024 11:21:43 +0000 Subject: [PATCH] fix: clippy fix: remove ntfs zone files --- .github/workflows/rust.yml | 70 +++++++++++++- script/local-storageclass.yaml | 161 +++++++++++++++++++++++++++++++++ src/bin/jz-flow/job.rs | 10 +- src/dbrepo/job_db_mongo.rs | 3 +- src/driver/kube.rs | 18 ++-- src/job/job_mgr.rs | 10 +- 6 files changed, 237 insertions(+), 35 deletions(-) create mode 100644 script/local-storageclass.yaml diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 2306614..fddc9a2 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -17,21 +17,81 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Run Clippy - run: cargo +nightly clippy --fix --workspace --exclude jiaozifs_client_rs --allow-dirty + - name: Install git + run: | + sudo apt update + sudo apt install git + + - name: Create mongo Docker container + uses: DigiPie/mongo-action@v2.0.1 + with: + image_version: latest + port: 27017 + + - name: Install mongosh command + run: | + sudo apt-get update + sudo apt-get install -y wget gnupg + wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add - + echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list + sudo apt-get update + sudo apt-get install -y mongodb-mongosh + + - name: Test mongo connection + run: "sudo mongosh localhost:27017" - name: Install Protoc uses: arduino/setup-protoc@v3 - - name: Run tests - run: cargo test --verbose --workspace + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + with: + components: clippy rustfmt + + - name: Set up cargo cache + uses: actions/cache@v3 + continue-on-error: false + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ + key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-cargo- - name: Start minikube uses: medyagh/setup-minikube@latest - - name: Build image + - name: Enabel plugin run: | eval $(minikube -p minikube docker-env) + alias kubectl="minikube kubectl --" + minikube addons enable metrics-server + + - name: Install Helm + uses: azure/setup-helm@v4.2.0 + id: install + + - name: Install StorageClass + run: | + kubectl apply -f ./script/local-storageclass.yaml + kubectl -n local-path-storage get storageclass + + - name: Run Clippy + run: | + rustup show + cargo clippy --workspace --exclude jiaozifs_client_rs + + - name: Build image + run: | make minikube-docker + + + - name: Run tests + run: cargo test --verbose --workspace + + diff --git a/script/local-storageclass.yaml b/script/local-storageclass.yaml new file mode 100644 index 0000000..37964ee --- /dev/null +++ b/script/local-storageclass.yaml @@ -0,0 +1,161 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: local-path-storage + +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: local-path-provisioner-service-account + namespace: local-path-storage + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: local-path-provisioner-role + namespace: local-path-storage +rules: + - apiGroups: [""] + resources: ["pods"] + verbs: ["get", "list", "watch", "create", "patch", "update", "delete"] + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: local-path-provisioner-role +rules: + - apiGroups: [""] + resources: ["nodes", "persistentvolumeclaims", "configmaps", "pods", "pods/log"] + verbs: ["get", "list", "watch"] + - apiGroups: [""] + resources: ["persistentvolumes"] + verbs: ["get", "list", "watch", "create", "patch", "update", "delete"] + - apiGroups: [""] + resources: ["events"] + verbs: ["create", "patch"] + - apiGroups: ["storage.k8s.io"] + resources: ["storageclasses"] + verbs: ["get", "list", "watch"] + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: local-path-provisioner-bind + namespace: local-path-storage +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: local-path-provisioner-role +subjects: + - kind: ServiceAccount + name: local-path-provisioner-service-account + namespace: local-path-storage + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: local-path-provisioner-bind +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: local-path-provisioner-role +subjects: + - kind: ServiceAccount + name: local-path-provisioner-service-account + namespace: local-path-storage + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: local-path-provisioner + namespace: local-path-storage +spec: + replicas: 1 + selector: + matchLabels: + app: local-path-provisioner + template: + metadata: + labels: + app: local-path-provisioner + spec: + serviceAccountName: local-path-provisioner-service-account + containers: + - name: local-path-provisioner + image: rancher/local-path-provisioner:v0.0.28 + imagePullPolicy: IfNotPresent + command: + - local-path-provisioner + - --debug + - start + - --config + - /etc/config/config.json + volumeMounts: + - name: config-volume + mountPath: /etc/config/ + env: + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: CONFIG_MOUNT_PATH + value: /etc/config/ + volumes: + - name: config-volume + configMap: + name: local-path-config + +--- +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: jz-action-fs +provisioner: rancher.io/local-path +volumeBindingMode: WaitForFirstConsumer +reclaimPolicy: Delete + +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: local-path-config + namespace: local-path-storage +data: + config.json: |- + { + "nodePathMap":[ + { + "node":"DEFAULT_PATH_FOR_NON_LISTED_NODES", + "paths":["/opt/local-path-provisioner"] + } + ] + } + setup: |- + #!/bin/sh + set -eu + mkdir -m 0777 -p "$VOL_DIR" + teardown: |- + #!/bin/sh + set -eu + rm -rf "$VOL_DIR" + helperPod.yaml: |- + apiVersion: v1 + kind: Pod + metadata: + name: helper-pod + spec: + priorityClassName: system-node-critical + tolerations: + - key: node.kubernetes.io/disk-pressure + operator: Exists + effect: NoSchedule + containers: + - name: helper-pod + image: busybox + imagePullPolicy: IfNotPresent \ No newline at end of file diff --git a/src/bin/jz-flow/job.rs b/src/bin/jz-flow/job.rs index 77fdd62..614100d 100644 --- a/src/bin/jz-flow/job.rs +++ b/src/bin/jz-flow/job.rs @@ -1,12 +1,4 @@ -use std::{ - io::{ - self, - stdout, - }, - iter, - os::linux::raw::stat, - str::FromStr, -}; +use std::str::FromStr; use crate::global::GlobalOptions; use anyhow::Result; diff --git a/src/dbrepo/job_db_mongo.rs b/src/dbrepo/job_db_mongo.rs index c0bca61..7be66cf 100644 --- a/src/dbrepo/job_db_mongo.rs +++ b/src/dbrepo/job_db_mongo.rs @@ -1,4 +1,3 @@ -use std::os::linux::raw::stat; use crate::{ core::db::{ @@ -259,7 +258,7 @@ impl DataRepo for MongoRunDbRepo { direction: Option<&Direction>, ) -> Result { let mut query = doc! {"node_name":node_name}; - if states.len() > 0 { + if !states.is_empty() { let states: Vec<&str> = states.iter().map(to_variant_name).try_collect()?; query.insert("state", doc! {"$in": states}); } diff --git a/src/driver/kube.rs b/src/driver/kube.rs index cc9c6e8..9b31805 100644 --- a/src/driver/kube.rs +++ b/src/driver/kube.rs @@ -39,12 +39,8 @@ use handlebars::{ RenderContext, RenderError, }; -use k8s_metrics::{ - v1beta1 as metricsv1, - QuantityExt, -}; -use k8s_openapi::{ - api::{ +use k8s_metrics::v1beta1 as metricsv1; +use k8s_openapi::api::{ apps::v1::StatefulSet, core::v1::{ Namespace, @@ -52,9 +48,7 @@ use k8s_openapi::{ Pod, Service, }, - }, - apimachinery::pkg::api::resource::Quantity, -}; + }; use kube::{ api::{ DeleteParams, @@ -145,7 +139,7 @@ where let mut node_status = NodeStatus { name: self.node_name.clone(), state: db_node.state, - data_count: data_count, + data_count, replicas: statefulset .spec .as_ref() @@ -280,7 +274,7 @@ where let mut node_status = NodeStatus { name: self.node_name.clone(), state: db_node.state, - data_count: data_count, + data_count, replicas: statefulset .spec .as_ref() @@ -373,7 +367,7 @@ where fn new(repo: R, client: Client,topo_sort_nodes: Vec) -> Self { Self { _db_repo: repo, - topo_sort_nodes:topo_sort_nodes, + topo_sort_nodes, _client: client, handlers: Default::default(), } diff --git a/src/job/job_mgr.rs b/src/job/job_mgr.rs index 52f0ed0..d3ca624 100644 --- a/src/job/job_mgr.rs +++ b/src/job/job_mgr.rs @@ -21,17 +21,13 @@ use crate::{ }; use anyhow::Result; use futures::future::try_join_all; -use k8s_openapi::api::node; use kube::Client; use mongodb::bson::oid::ObjectId; use serde::{ Deserialize, Serialize, }; -use std::{ - collections::HashMap, - marker::PhantomData, -}; +use std::marker::PhantomData; use tokio::task::JoinSet; use tokio_util::sync::CancellationToken; use tracing::{ @@ -177,7 +173,7 @@ where let namespace = format!("{}-{}", job.name, job.retry_number - 1); self.db .update( - &id, + id, &JobUpdateInfo { state: Some(JobState::Finish), }, @@ -186,7 +182,7 @@ where self.driver.clean(&namespace).await?; self.db .update( - &id, + id, &JobUpdateInfo { state: Some(JobState::Clean), },