mirror of
				https://github.com/ClusterCockpit/cc-backend
				synced 2025-10-29 23:35:05 +01:00 
			
		
		
		
	Removed deprecated libraries
This commit is contained in:
		
							
								
								
									
										12
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								go.mod
									
									
									
									
									
								
							| @@ -26,13 +26,14 @@ require ( | |||||||
| 	github.com/swaggo/http-swagger v1.3.3 | 	github.com/swaggo/http-swagger v1.3.3 | ||||||
| 	github.com/swaggo/swag v1.16.1 | 	github.com/swaggo/swag v1.16.1 | ||||||
| 	github.com/vektah/gqlparser/v2 v2.5.8 | 	github.com/vektah/gqlparser/v2 v2.5.8 | ||||||
| 	golang.org/x/crypto v0.12.0 | 	golang.org/x/crypto v0.13.0 | ||||||
| 	golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea | 	golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea | ||||||
| ) | ) | ||||||
|  |  | ||||||
| require ( | require ( | ||||||
| 	github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 // indirect | 	github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 // indirect | ||||||
| 	github.com/ClusterCockpit/slurm-rest-client-0_0_37 v0.0.0-20230901125459-dc653ac37420 // indirect | 	github.com/ClusterCockpit/slurm-rest-client-0_0_37 v0.0.0-20230901125459-dc653ac37420 // indirect | ||||||
|  | 	github.com/ClusterCockpit/slurm-rest-client-0_0_38 v0.0.0-20230906120742-0f15562ea666 // indirect | ||||||
| 	github.com/KyleBanks/depth v1.2.1 // indirect | 	github.com/KyleBanks/depth v1.2.1 // indirect | ||||||
| 	github.com/agnivade/levenshtein v1.1.1 // indirect | 	github.com/agnivade/levenshtein v1.1.1 // indirect | ||||||
| 	github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect | 	github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect | ||||||
| @@ -40,6 +41,7 @@ require ( | |||||||
| 	github.com/cespare/xxhash/v2 v2.2.0 // indirect | 	github.com/cespare/xxhash/v2 v2.2.0 // indirect | ||||||
| 	github.com/containerd/containerd v1.6.18 // indirect | 	github.com/containerd/containerd v1.6.18 // indirect | ||||||
| 	github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect | 	github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect | ||||||
|  | 	github.com/davecgh/go-spew v1.1.1 // indirect | ||||||
| 	github.com/deepmap/oapi-codegen v1.12.4 // indirect | 	github.com/deepmap/oapi-codegen v1.12.4 // indirect | ||||||
| 	github.com/felixge/httpsnoop v1.0.3 // indirect | 	github.com/felixge/httpsnoop v1.0.3 // indirect | ||||||
| 	github.com/go-asn1-ber/asn1-ber v1.5.4 // indirect | 	github.com/go-asn1-ber/asn1-ber v1.5.4 // indirect | ||||||
| @@ -72,19 +74,21 @@ require ( | |||||||
| 	github.com/nats-io/nuid v1.0.1 // indirect | 	github.com/nats-io/nuid v1.0.1 // indirect | ||||||
| 	github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 // indirect | 	github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 // indirect | ||||||
| 	github.com/pkg/errors v0.9.1 // indirect | 	github.com/pkg/errors v0.9.1 // indirect | ||||||
|  | 	github.com/pmezard/go-difflib v1.0.0 // indirect | ||||||
| 	github.com/prometheus/client_model v0.3.0 // indirect | 	github.com/prometheus/client_model v0.3.0 // indirect | ||||||
| 	github.com/prometheus/procfs v0.9.0 // indirect | 	github.com/prometheus/procfs v0.9.0 // indirect | ||||||
| 	github.com/robfig/cron/v3 v3.0.1 // indirect | 	github.com/robfig/cron/v3 v3.0.1 // indirect | ||||||
| 	github.com/russross/blackfriday/v2 v2.1.0 // indirect | 	github.com/russross/blackfriday/v2 v2.1.0 // indirect | ||||||
|  | 	github.com/stretchr/testify v1.8.4 // indirect | ||||||
| 	github.com/swaggo/files v1.0.0 // indirect | 	github.com/swaggo/files v1.0.0 // indirect | ||||||
| 	github.com/urfave/cli/v2 v2.25.7 // indirect | 	github.com/urfave/cli/v2 v2.25.7 // indirect | ||||||
| 	github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect | 	github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect | ||||||
| 	go.uber.org/atomic v1.10.0 // indirect | 	go.uber.org/atomic v1.10.0 // indirect | ||||||
| 	golang.org/x/mod v0.12.0 // indirect | 	golang.org/x/mod v0.12.0 // indirect | ||||||
| 	golang.org/x/net v0.14.0 // indirect | 	golang.org/x/net v0.15.0 // indirect | ||||||
| 	golang.org/x/oauth2 v0.5.0 // indirect | 	golang.org/x/oauth2 v0.5.0 // indirect | ||||||
| 	golang.org/x/sys v0.11.0 // indirect | 	golang.org/x/sys v0.12.0 // indirect | ||||||
| 	golang.org/x/text v0.12.0 // indirect | 	golang.org/x/text v0.13.0 // indirect | ||||||
| 	golang.org/x/tools v0.12.0 // indirect | 	golang.org/x/tools v0.12.0 // indirect | ||||||
| 	google.golang.org/appengine v1.6.7 // indirect | 	google.golang.org/appengine v1.6.7 // indirect | ||||||
| 	google.golang.org/protobuf v1.30.0 // indirect | 	google.golang.org/protobuf v1.30.0 // indirect | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								go.sum
									
									
									
									
									
								
							| @@ -84,6 +84,8 @@ github.com/ClusterCockpit/cc-units v0.4.0 h1:zP5DOu99GmErW0tCDf0gcLrlWt42RQ9dpoO | |||||||
| github.com/ClusterCockpit/cc-units v0.4.0/go.mod h1:3S3PAhAayS3pbgcT4q9Vn9VJw22Op51X0YimtG77zBw= | github.com/ClusterCockpit/cc-units v0.4.0/go.mod h1:3S3PAhAayS3pbgcT4q9Vn9VJw22Op51X0YimtG77zBw= | ||||||
| github.com/ClusterCockpit/slurm-rest-client-0_0_37 v0.0.0-20230901125459-dc653ac37420 h1:AeQY40KrLQmSSyyHdbNdAqgln+0+p1dLag5yspE5M8A= | github.com/ClusterCockpit/slurm-rest-client-0_0_37 v0.0.0-20230901125459-dc653ac37420 h1:AeQY40KrLQmSSyyHdbNdAqgln+0+p1dLag5yspE5M8A= | ||||||
| github.com/ClusterCockpit/slurm-rest-client-0_0_37 v0.0.0-20230901125459-dc653ac37420/go.mod h1:oNgVG2puNj9cNw/KgqLbgE1pPOn8jXORX3ErP58LcAA= | github.com/ClusterCockpit/slurm-rest-client-0_0_37 v0.0.0-20230901125459-dc653ac37420/go.mod h1:oNgVG2puNj9cNw/KgqLbgE1pPOn8jXORX3ErP58LcAA= | ||||||
|  | github.com/ClusterCockpit/slurm-rest-client-0_0_38 v0.0.0-20230906120742-0f15562ea666 h1:8PofHcOwEMmeAFqJjvAEgnu7rbRHAwJhd2XJ9u/YxiU= | ||||||
|  | github.com/ClusterCockpit/slurm-rest-client-0_0_38 v0.0.0-20230906120742-0f15562ea666/go.mod h1:vxaj1my0GNoCXx4bYyOTA/IZP/IOZImtdOIn4T7pCa4= | ||||||
| github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc= | github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc= | ||||||
| github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= | github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= | ||||||
| github.com/Masterminds/squirrel v1.5.3 h1:YPpoceAcxuzIljlr5iWpNKaql7hLeG1KLSrhvdHpkZc= | github.com/Masterminds/squirrel v1.5.3 h1:YPpoceAcxuzIljlr5iWpNKaql7hLeG1KLSrhvdHpkZc= | ||||||
| @@ -463,6 +465,7 @@ github.com/go-ldap/ldap/v3 v3.4.4/go.mod h1:fe1MsuN5eJJ1FeLT/LEBVdWfNWKh459R7aXg | |||||||
| github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= | github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= | ||||||
| github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= | github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= | ||||||
| github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= | github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= | ||||||
|  | github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= | ||||||
| github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= | github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= | ||||||
| github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= | github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= | ||||||
| github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= | github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= | ||||||
| @@ -595,6 +598,7 @@ github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8l | |||||||
| github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= | github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= | ||||||
| github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= | github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= | ||||||
| github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= | github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= | ||||||
|  | github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= | ||||||
| github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= | github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= | ||||||
| github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= | github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= | ||||||
| github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= | github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= | ||||||
| @@ -1158,6 +1162,7 @@ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1F | |||||||
| github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= | github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= | ||||||
| github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= | github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= | ||||||
| github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= | github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= | ||||||
|  | github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= | ||||||
| github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= | github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= | ||||||
| github.com/swaggo/files v1.0.0 h1:1gGXVIeUFCS/dta17rnP0iOpr6CXFwKD7EO5ID233e4= | github.com/swaggo/files v1.0.0 h1:1gGXVIeUFCS/dta17rnP0iOpr6CXFwKD7EO5ID233e4= | ||||||
| github.com/swaggo/files v1.0.0/go.mod h1:N59U6URJLyU1PQgFqPM7wXLMhJx7QAolnvfQkqO13kc= | github.com/swaggo/files v1.0.0/go.mod h1:N59U6URJLyU1PQgFqPM7wXLMhJx7QAolnvfQkqO13kc= | ||||||
| @@ -1181,6 +1186,7 @@ github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtX | |||||||
| github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= | github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= | ||||||
| github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= | github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= | ||||||
| github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= | github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= | ||||||
|  | github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= | ||||||
| github.com/vektah/gqlparser/v2 v2.5.8 h1:pm6WOnGdzFOCfcQo9L3+xzW51mKrlwTEg4Wr7AH1JW4= | github.com/vektah/gqlparser/v2 v2.5.8 h1:pm6WOnGdzFOCfcQo9L3+xzW51mKrlwTEg4Wr7AH1JW4= | ||||||
| github.com/vektah/gqlparser/v2 v2.5.8/go.mod h1:z8xXUff237NntSuH8mLFijZ+1tjV1swDbpDqjJmk6ME= | github.com/vektah/gqlparser/v2 v2.5.8/go.mod h1:z8xXUff237NntSuH8mLFijZ+1tjV1swDbpDqjJmk6ME= | ||||||
| github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= | github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= | ||||||
| @@ -1300,6 +1306,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y | |||||||
| golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= | golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= | ||||||
| golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= | golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= | ||||||
| golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= | golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= | ||||||
|  | golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= | ||||||
|  | golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= | ||||||
| golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | ||||||
| golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | ||||||
| golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | ||||||
| @@ -1423,6 +1431,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug | |||||||
| golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= | golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= | ||||||
| golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= | golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= | ||||||
| golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= | golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= | ||||||
|  | golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8= | ||||||
|  | golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= | ||||||
| golang.org/x/oauth2 v0.0.0-20180227000427-d7d64896b5ff/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= | golang.org/x/oauth2 v0.0.0-20180227000427-d7d64896b5ff/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= | ||||||
| golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= | golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= | ||||||
| golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= | golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= | ||||||
| @@ -1582,6 +1592,8 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc | |||||||
| golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
| golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= | golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= | ||||||
| golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
|  | golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= | ||||||
|  | golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
| golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= | golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= | ||||||
| golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= | golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= | ||||||
| golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= | golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= | ||||||
| @@ -1600,6 +1612,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= | |||||||
| golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= | golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= | ||||||
| golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= | golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= | ||||||
| golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= | golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= | ||||||
|  | golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= | ||||||
|  | golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= | ||||||
| golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | ||||||
| golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | ||||||
| golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | ||||||
|   | |||||||
| @@ -14,11 +14,13 @@ import ( | |||||||
| 	"os" | 	"os" | ||||||
| 	"os/exec" | 	"os/exec" | ||||||
| 	"strconv" | 	"strconv" | ||||||
| 	"sync" |  | ||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
|  | 	"github.com/ClusterCockpit/cc-backend/internal/repository" | ||||||
| 	"github.com/ClusterCockpit/cc-backend/pkg/log" | 	"github.com/ClusterCockpit/cc-backend/pkg/log" | ||||||
| 	"github.com/ClusterCockpit/cc-backend/pkg/schema" | 	"github.com/ClusterCockpit/cc-backend/pkg/schema" | ||||||
|  |  | ||||||
|  | 	openapi "github.com/ClusterCockpit/slurm-rest-client-0_0_38" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // A Response struct to map the Entire Response | // A Response struct to map the Entire Response | ||||||
| @@ -33,6 +35,8 @@ type SlurmRestSchedulerConfig struct { | |||||||
|  |  | ||||||
| type SlurmRestScheduler struct { | type SlurmRestScheduler struct { | ||||||
| 	url string | 	url string | ||||||
|  |  | ||||||
|  | 	JobRepository *repository.JobRepository | ||||||
| } | } | ||||||
|  |  | ||||||
| var client *http.Client | var client *http.Client | ||||||
| @@ -247,72 +251,85 @@ func (sd *SlurmRestScheduler) Init(rawConfig json.RawMessage) error { | |||||||
| 	return err | 	return err | ||||||
| } | } | ||||||
|  |  | ||||||
| func (sd *SlurmRestScheduler) Sync() { | func (sd *SlurmRestScheduler) HandleJobsResponse(jobsResponse openapi.V0038JobsResponse) { | ||||||
| 	// for _, job := range jobs.GetJobs() { |  | ||||||
| 	//     fmt.Printf("Job %s - %s\n", job.GetJobId(), job.GetJobState()) |  | ||||||
| 	// } |  | ||||||
|  |  | ||||||
| 	jobsResponse, err := queryAllJobs() |  | ||||||
| 	if err != nil { |  | ||||||
| 		log.Fatal(err.Error()) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// Fetch an example instance of V0037JobsResponse |  | ||||||
| 	// jobsResponse := V0037JobsResponse{} |  | ||||||
|  |  | ||||||
| 	// Iterate over the Jobs slice | 	// Iterate over the Jobs slice | ||||||
| 	for _, job := range jobsResponse.Jobs { | 	for _, job := range jobsResponse.Jobs { | ||||||
| 		// Process each job | 		// Process each job | ||||||
| 		fmt.Printf("Job ID: %s\n", job.JobID) | 		fmt.Printf("Job ID: %s\n", job.JobId) | ||||||
| 		fmt.Printf("Job Name: %s\n", *job.Name) | 		fmt.Printf("Job Name: %s\n", *job.Name) | ||||||
| 		fmt.Printf("Job State: %s\n", *job.JobState) | 		fmt.Printf("Job State: %s\n", *job.JobState) | ||||||
| 		fmt.Println("Job StartTime:", *job.StartTime) | 		fmt.Println("Job StartTime:", *job.StartTime) | ||||||
|  |  | ||||||
| 		// is aquire lock to avoid race condition between API calls needed? |  | ||||||
|  |  | ||||||
| 		// aquire lock to avoid race condition between API calls | 		// aquire lock to avoid race condition between API calls | ||||||
| 		var unlockOnce sync.Once | 		// var unlockOnce sync.Once | ||||||
| 		sd.RepositoryMutex.Lock() | 		// sd.RepositoryMutex.Lock() | ||||||
| 		defer unlockOnce.Do(sd.RepositoryMutex.Unlock) | 		// defer unlockOnce.Do(sd.RepositoryMutex.Unlock) | ||||||
|  |  | ||||||
| 		// is "running" one of JSON state? | 		// is "running" one of JSON state? | ||||||
| 		if *job.JobState == "running" { | 		if *job.JobState == "running" { | ||||||
|  |  | ||||||
| 			// Check if combination of (job_id, cluster_id, start_time) already exists: | 			// Check if combination of (job_id, cluster_id, start_time) already exists: | ||||||
| 			jobs, err := sd.JobRepository.FindAll(job.JobID, &job.Cluster, job.StartTime) | 			// jobs, err := sd.JobRepository.FindRunningJobs(job.Cluster, job.StartTime) | ||||||
|  |  | ||||||
|  | 			jobs, err := sd.FindRunningJobs(job.Cluster) | ||||||
|  | 			if err != nil { | ||||||
|  | 				log.Fatalf("Failed to find running jobs: %v", err) | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			for id, job := range jobs { | ||||||
|  | 				fmt.Printf("Job ID: %d, Job: %+v\n", id, job) | ||||||
|  | 			} | ||||||
|  |  | ||||||
| 			if err != nil || err != sql.ErrNoRows { | 			if err != nil || err != sql.ErrNoRows { | ||||||
| 				log.Errorf("checking for duplicate failed: %s", err.Error()) | 				log.Errorf("checking for duplicate failed: %s", err.Error()) | ||||||
| 				return | 				return | ||||||
| 			} else if err == nil { | 			} else if err == nil { | ||||||
| 				if len(jobs) == 0 { | 				if len(jobs) == 0 { | ||||||
|  | 					var exclusive int32 | ||||||
|  | 					if job.Shared == nil { | ||||||
|  | 						exclusive = 1 | ||||||
|  | 					} else { | ||||||
|  | 						exclusive = 0 | ||||||
|  | 					} | ||||||
|  |  | ||||||
|  | 					jobResourcesInBytes, err := json.Marshal(*job.JobResources) | ||||||
|  | 					if err != nil { | ||||||
|  | 						log.Fatalf("JSON marshaling failed: %s", err) | ||||||
|  | 					} | ||||||
|  |  | ||||||
| 					var defaultJob schema.BaseJob = schema.BaseJob{ | 					var defaultJob schema.BaseJob = schema.BaseJob{ | ||||||
| 						JobID:            job.JobID, | 						JobID:     int64(*job.JobId), | ||||||
| 						User:             job.User, | 						User:      *job.UserName, | ||||||
| 						Project:          job.Project, | 						Project:   *job.Account, | ||||||
| 						Cluster:          job.Cluster, | 						Cluster:   *job.Cluster, | ||||||
| 						SubCluster:       job.SubCluster, | 						Partition: *job.Partition, | ||||||
| 						Partition:        job.Partition, | 						// check nil | ||||||
| 						ArrayJobId:       job.ArrayJobId, | 						ArrayJobId:   int64(*job.ArrayJobId), | ||||||
| 						NumNodes:         job.NumNodes, | 						NumNodes:     *job.NodeCount, | ||||||
| 						NumHWThreads:     job.NumHWThreads, | 						NumHWThreads: *job.Cpus, | ||||||
| 						NumAcc:           job.NumAcc, | 						// NumAcc:       job.NumAcc, | ||||||
| 						Exclusive:        job.Exclusive, | 						Exclusive: exclusive, | ||||||
| 						MonitoringStatus: job.MonitoringStatus, | 						// MonitoringStatus: job.MonitoringStatus, | ||||||
| 						SMT:              job.SMT, | 						// SMT:            *job.TasksPerCore, | ||||||
| 						State:            job.State, | 						State: schema.JobState(*job.JobState), | ||||||
| 						Duration:         job.Duration, | 						// ignore this for start job | ||||||
| 						Walltime:         job.Walltime, | 						// Duration:       int32(time.Now().Unix() - *job.StartTime), // or SubmitTime? | ||||||
| 						Tags:             job.Tags, | 						Walltime: time.Now().Unix(), // max duration requested by the job | ||||||
| 						RawResources:     job.RawResources, | 						// Tags:           job.Tags, | ||||||
| 						Resources:        job.Resources, | 						// ignore this! | ||||||
| 						RawMetaData:      job.RawMetaData, | 						RawResources: jobResourcesInBytes, | ||||||
| 						MetaData:         job.MetaData, | 						// "job_resources": "allocated_nodes" "sockets": | ||||||
| 						ConcurrentJobs:   job.ConcurrentJobs, | 						// very important; has to be right | ||||||
|  | 						Resources: job.JobResources, | ||||||
|  | 						// RawMetaData:    job.RawMetaData, | ||||||
|  | 						// optional metadata with'jobScript 'jobName': 'slurmInfo': | ||||||
|  | 						// MetaData:       job.MetaData, | ||||||
|  | 						// ConcurrentJobs: job.ConcurrentJobs, | ||||||
| 					} | 					} | ||||||
| 					req := &schema.JobMeta{ | 					req := &schema.JobMeta{ | ||||||
| 						BaseJob:    defaultJob, | 						BaseJob:    defaultJob, | ||||||
| 						StartTime:  job.StartTime, | 						StartTime:  *job.StartTime, | ||||||
| 						Statistics: make(map[string]schema.JobStatistics), | 						Statistics: make(map[string]schema.JobStatistics), | ||||||
| 					} | 					} | ||||||
| 					// req := new(schema.JobMeta) | 					// req := new(schema.JobMeta) | ||||||
| @@ -328,15 +345,17 @@ func (sd *SlurmRestScheduler) Sync() { | |||||||
| 			existingJob, err := sd.JobRepository.Find(job.JobID, &job.Cluster, job.StartTime) | 			existingJob, err := sd.JobRepository.Find(job.JobID, &job.Cluster, job.StartTime) | ||||||
|  |  | ||||||
| 			if err == nil { | 			if err == nil { | ||||||
| 				existingJob.BaseJob.Duration = job.EndTime - job.StartTime | 				existingJob.BaseJob.Duration = *job.EndTime - *job.StartTime | ||||||
| 				existingJob.BaseJob.State = job.State | 				existingJob.BaseJob.State = schema.JobState(*job.JobState) | ||||||
| 				existingJob.BaseJob.Walltime = job.StartTime | 				existingJob.BaseJob.Walltime = job.StartTime | ||||||
|  | 				var jobID int64 | ||||||
|  | 				jobID = int64(*job.JobId) | ||||||
| 				req := &StopJobRequest{ | 				req := &StopJobRequest{ | ||||||
| 					Cluster:   job.Cluster, | 					Cluster:   job.Cluster, | ||||||
| 					JobId:     job.JobId, | 					JobId:     &jobID, | ||||||
| 					State:     job.State, | 					State:     schema.JobState(*job.JobState), | ||||||
| 					StartTime: existingJob.StartTime, | 					StartTime: existingJob.StartTime, | ||||||
| 					StopTime:  job.StartTime, | 					StopTime:  *job.EndTime, | ||||||
| 				} | 				} | ||||||
| 				// req := new(schema.JobMeta) | 				// req := new(schema.JobMeta) | ||||||
| 				id, err := sd.JobRepository.checkAndHandleStopJob(job, req) | 				id, err := sd.JobRepository.checkAndHandleStopJob(job, req) | ||||||
| @@ -344,5 +363,22 @@ func (sd *SlurmRestScheduler) Sync() { | |||||||
|  |  | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (sd *SlurmRestScheduler) Sync() { | ||||||
|  | 	// for _, job := range jobs.GetJobs() { | ||||||
|  | 	//     fmt.Printf("Job %s - %s\n", job.GetJobId(), job.GetJobState()) | ||||||
|  | 	// } | ||||||
|  |  | ||||||
|  | 	response, err := queryAllJobs() | ||||||
|  | 	if err != nil { | ||||||
|  | 		log.Fatal(err.Error()) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	// Fetch an example instance of V0037JobsResponse | ||||||
|  | 	// jobsResponse := openapi.V0038JobsResponse{} | ||||||
|  |  | ||||||
|  | 	var jobsResponse openapi.V0038JobsResponse | ||||||
|  | 	sd.HandleJobsResponse(jobsResponse) | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -7,7 +7,6 @@ package main | |||||||
| import ( | import ( | ||||||
| 	"flag" | 	"flag" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"io/ioutil" |  | ||||||
| 	"log" | 	"log" | ||||||
| 	"net/http" | 	"net/http" | ||||||
| 	"os" | 	"os" | ||||||
| @@ -76,8 +75,8 @@ func setupPublisher() { | |||||||
|  |  | ||||||
| func injectPayload() { | func injectPayload() { | ||||||
| 	// Read the JSON file | 	// Read the JSON file | ||||||
| 	jobsData, err := ioutil.ReadFile("slurm_0038.json") | 	jobsData, err := os.ReadFile("slurm_0038.json") | ||||||
| 	dbData, err := ioutil.ReadFile("slurmdb_0038-large.json") | 	dbData, err := os.ReadFile("slurmdb_0038-large.json") | ||||||
|  |  | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		fmt.Println("Error reading JSON file:", err) | 		fmt.Println("Error reading JSON file:", err) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user