|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- /*
-
- Copyright (c) [2023] [pcm]
- [pcm-coordinator] is licensed under Mulan PSL v2.
- You can use this software according to the terms and conditions of the Mulan PSL v2.
- You may obtain a copy of Mulan PSL v2 at:
- http://license.coscl.org.cn/MulanPSL2
- THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
- EITHER EXPaRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
- MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
- See the Mulan PSL v2 for more details.
-
- */
-
- package utils
-
- import (
- "encoding/json"
- "fmt"
- "github.com/robfig/cron/v3"
- "io"
- "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
- "k8s.io/apimachinery/pkg/runtime"
- "mime/multipart"
- "sigs.k8s.io/yaml"
- "strconv"
- "strings"
- )
-
- // Convert 通过JSON赋值
- func Convert(source interface{}, target interface{}) {
- jsonByte, _ := json.Marshal(source)
- json.Unmarshal(jsonByte, &target)
- }
-
- // Int64ToString int64转string
- func Int64ToString(value int64) string {
- return strconv.FormatInt(value, 10)
- }
-
- // EntryIdToString EntryID转string
- func EntryIdToString(id cron.EntryID) string {
- return strconv.Itoa(int(id))
- }
-
- func StringToInt(value string) int {
- intValue, _ := strconv.Atoi(value)
- return intValue
- }
- func StringToInt64(value string) int64 {
- intValue, _ := strconv.ParseInt(value, 10, 64)
- return intValue
- }
-
- func StringToFloat64(value string) float64 {
- floatValue, _ := strconv.ParseFloat(value, 64)
- return floatValue
- }
-
- func RunTimeToSeconds(runTime string) int {
- time := strings.Split(runTime, ":")
- day, _ := strconv.Atoi(time[0])
- hour, _ := strconv.Atoi(time[1])
- seconds, _ := strconv.Atoi(time[2])
- return day*3600 + hour*60 + seconds
- }
-
- func Yaml2struct(fileHeader *multipart.FileHeader, req interface{}) error {
- file, err := fileHeader.Open()
- if err != nil {
- return err
- }
- fileByte, err := io.ReadAll(file)
- if err != nil {
- return err
- }
- err = yaml.Unmarshal(fileByte, &req)
- if err != nil {
- return err
- }
- return nil
- }
-
- func K8sUnstructured(dataString string, target interface{}) {
- unstructuredList := unstructured.UnstructuredList{}
- json.Unmarshal([]byte(dataString), &unstructuredList)
- runtime.DefaultUnstructuredConverter.FromUnstructured(unstructuredList.UnstructuredContent(), target)
- }
-
- // removeDuplication_map 去重数组
- func RemoveDuplication_map(arr []string) []string {
- set := make(map[string]struct{}, len(arr))
- j := 0
- for _, v := range arr {
- _, ok := set[v]
- if ok {
- continue
- }
- set[v] = struct{}{}
- arr[j] = v
- j++
- }
- return arr[:j]
- }
-
- func ConvertStructToMap(in interface{}) map[string]string {
- out := make(map[string]string)
-
- b, _ := json.Marshal(&in)
- var m map[string]interface{}
- _ = json.Unmarshal(b, &m)
-
- for k, v := range m {
- out[k] = fmt.Sprintf("%v", v)
- }
- return out
- }
-
- func StringToYaml(in string) *string {
- // 将Go字符串转换为字节数组
- byteArray := []byte(in)
- // 解析YAML数据
- var yamlData map[string]interface{}
- err := yaml.Unmarshal(byteArray, &yamlData)
- // 将解析后的数据转换为YAML格式
- yamlString, err := yaml.Marshal(yamlData)
- if err != nil {
- fmt.Println(err)
- }
- resp := string(yamlString)
- return &resp
- }
|