1
1
import App
2
2
import ArgumentParser
3
+ import Foundation
3
4
import Models
4
5
import NIO
5
6
import SotoCore
@@ -10,6 +11,16 @@ import SotoEKS
10
11
struct Command : AsyncParsableCommand {
11
12
static var configuration : CommandConfiguration { CommandConfiguration ( commandName: " aws-asg-tags " ) }
12
13
14
+ // swiftlint:disable force_try
15
+
16
+ @Option ( name: . shortAndLong)
17
+ var clusterName : String = try ! Environment . get ( ClusterNodesTags . CodingKeys. clusterName)
18
+
19
+ @Option ( name: . long)
20
+ var nodePools : [ NodePool ] = try ! Environment . get ( ClusterNodesTags . CodingKeys. nodePools)
21
+
22
+ @Option ( name: . long)
23
+ var commonTags : [ Tag ] ? = try ? Environment . get ( ClusterNodesTags . CodingKeys. commonTags)
13
24
14
25
func run( ) async throws {
15
26
let logger = Logger ( label: " ai.ydata.aws-asg-tags " )
@@ -32,31 +43,15 @@ struct Command: AsyncParsableCommand {
32
43
33
44
let hulk = Hulk ( asgClient: asgClient, eksClient: eksClient, logger: logger)
34
45
35
- let clusterNodeTags = try createClusterNodeTags ( logger)
36
-
37
- try await hulk. smash ( clusterNodeTags)
38
- }
39
-
40
- private func createClusterNodeTags( _ logger: Logger ) throws -> ClusterNodesTags {
41
- guard let clusterName = Environment . get ( ClusterNodesTags . CodingKeys. clusterName) else {
42
- logger. error ( " missing value for property \( ClusterNodesTags . CodingKeys. clusterName. description) ) " )
43
- throw Error . missingProperty
44
- }
45
-
46
- logger. info ( " extracted clusterName from env: \( clusterName) " )
47
-
48
- guard let nodePools: [ NodePool ] = try Environment . get ( ClusterNodesTags . CodingKeys. nodePools) else {
49
- logger. error ( " missing value for property \( ClusterNodesTags . CodingKeys. nodePools. description) ) " )
50
- throw Error . missingProperty
51
- }
52
-
53
- logger. info ( " extracted nodePools from env: \( nodePools) " )
54
-
55
- let commonTags : [ Tag ] ? = try Environment . get ( ClusterNodesTags . CodingKeys. commonTags)
46
+ let clusterNodeTags = ClusterNodesTags (
47
+ clusterName: clusterName,
48
+ commonTags: commonTags,
49
+ nodePools: nodePools
50
+ )
56
51
57
- logger. info ( " commonTags extracted from env: \( commonTags ?? [ ] ) " )
52
+ logger. info ( " processing cluster node tags: \n \( clusterNodeTags ) " )
58
53
59
- return ClusterNodesTags ( clusterName : clusterName , commonTags : commonTags , nodePools : nodePools )
54
+ try await hulk . smash ( clusterNodeTags )
60
55
}
61
56
}
62
57
0 commit comments