@@ -20,6 +20,7 @@ import (
20
20
"golang.org/x/crypto/ssh"
21
21
)
22
22
23
+ // Driver contains hetzner-specific data to implement [drivers.Driver]
23
24
type Driver struct {
24
25
* drivers.BaseDriver
25
26
@@ -70,6 +71,7 @@ const (
70
71
flagServerLabel = "hetzner-server-label"
71
72
)
72
73
74
+ // NewDriver initializes a new driver instance; see [drivers.Driver.NewDriver]
73
75
func NewDriver () * Driver {
74
76
return & Driver {
75
77
Image : defaultImage ,
@@ -83,10 +85,12 @@ func NewDriver() *Driver {
83
85
}
84
86
}
85
87
88
+ // DriverName returns the hard-coded string "hetzner"; see [drivers.Driver.DriverName]
86
89
func (d * Driver ) DriverName () string {
87
90
return "hetzner"
88
91
}
89
92
93
+ // GetCreateFlags retrieves additional driver-specific arguments; see [drivers.Driver.GetCreateFlags]
90
94
func (d * Driver ) GetCreateFlags () []mcnflag.Flag {
91
95
return []mcnflag.Flag {
92
96
mcnflag.StringFlag {
@@ -174,6 +178,8 @@ func (d *Driver) GetCreateFlags() []mcnflag.Flag {
174
178
}
175
179
}
176
180
181
+ // SetConfigFromFlags handles additional driver arguments as retrieved by [Driver.GetCreateFlags];
182
+ // see [drivers.Driver.SetConfigFromFlags]
177
183
func (d * Driver ) SetConfigFromFlags (opts drivers.DriverOptions ) error {
178
184
d .AccessToken = opts .String (flagAPIToken )
179
185
d .Image = opts .String (flagImage )
@@ -220,6 +226,7 @@ func (d *Driver) setLabelsFromFlags(opts drivers.DriverOptions) error {
220
226
return nil
221
227
}
222
228
229
+ // PreCreateCheck validates the Driver data is in a valid state for creation; see [drivers.Driver.PreCreateCheck]
223
230
func (d * Driver ) PreCreateCheck () error {
224
231
if d .IsExistingKey {
225
232
if d .originalKey == "" {
@@ -267,6 +274,7 @@ func (d *Driver) PreCreateCheck() error {
267
274
return nil
268
275
}
269
276
277
+ // Create actually creates the hetzner-cloud server; see [drivers.Driver.Create]
270
278
func (d * Driver ) Create () error {
271
279
if d .originalKey != "" {
272
280
log .Debugf ("Copying SSH key..." )
@@ -471,10 +479,12 @@ func (d *Driver) destroyDanglingKeys() {
471
479
}
472
480
}
473
481
482
+ // GetSSHHostname retrieves the SSH host to connect to the machine; see [drivers.Driver.GetSSHHostname]
474
483
func (d * Driver ) GetSSHHostname () (string , error ) {
475
484
return d .GetIP ()
476
485
}
477
486
487
+ // GetURL retrieves the URL of the docker daemon on the machine; see [drivers.Driver.GetURL]
478
488
func (d * Driver ) GetURL () (string , error ) {
479
489
if err := drivers .MustBeRunning (d ); err != nil {
480
490
return "" , errors .Wrap (err , "could not execute drivers.MustBeRunning" )
@@ -488,6 +498,7 @@ func (d *Driver) GetURL() (string, error) {
488
498
return fmt .Sprintf ("tcp://%s" , net .JoinHostPort (ip , "2376" )), nil
489
499
}
490
500
501
+ // GetState retrieves the state the machine is currently in; see [drivers.Driver.GetState]
491
502
func (d * Driver ) GetState () (state.State , error ) {
492
503
srv , _ , err := d .getClient ().Server .GetByID (context .Background (), d .ServerID )
493
504
if err != nil {
@@ -508,6 +519,7 @@ func (d *Driver) GetState() (state.State, error) {
508
519
return state .None , nil
509
520
}
510
521
522
+ // Remove deletes the hetzner server and additional resources created during creation; see [drivers.Driver.Remove]
511
523
func (d * Driver ) Remove () error {
512
524
if d .ServerID != 0 {
513
525
srv , err := d .getServerHandle ()
@@ -562,6 +574,7 @@ func (d *Driver) Remove() error {
562
574
return nil
563
575
}
564
576
577
+ // Restart instructs the hetzner cloud server to reboot; see [drivers.Driver.Restart]
565
578
func (d * Driver ) Restart () error {
566
579
srv , err := d .getServerHandle ()
567
580
if err != nil {
@@ -581,6 +594,7 @@ func (d *Driver) Restart() error {
581
594
return d .waitForAction (act )
582
595
}
583
596
597
+ // Start instructs the hetzner cloud server to power up; see [drivers.Driver.Start]
584
598
func (d * Driver ) Start () error {
585
599
srv , err := d .getServerHandle ()
586
600
if err != nil {
@@ -600,6 +614,7 @@ func (d *Driver) Start() error {
600
614
return d .waitForAction (act )
601
615
}
602
616
617
+ // Stop instructs the hetzner cloud server to shut down; see [drivers.Driver.Stop]
603
618
func (d * Driver ) Stop () error {
604
619
srv , err := d .getServerHandle ()
605
620
if err != nil {
@@ -619,6 +634,7 @@ func (d *Driver) Stop() error {
619
634
return d .waitForAction (act )
620
635
}
621
636
637
+ // Kill forcefully shuts down the hetzner cloud server; see [drivers.Driver.Kill]
622
638
func (d * Driver ) Kill () error {
623
639
srv , err := d .getServerHandle ()
624
640
if err != nil {
0 commit comments