@@ -20,7 +20,7 @@ import (
2020
2121func init () {
2222 inletsCmd .AddCommand (createCmd )
23- createCmd .Flags ().StringP ("provider" , "p" , "digitalocean" , "The cloud provider - digitalocean, scaleway, or civo" )
23+ createCmd .Flags ().StringP ("provider" , "p" , "digitalocean" , "The cloud provider - digitalocean, packet, scaleway, or civo" )
2424 createCmd .Flags ().StringP ("region" , "r" , "lon1" , "The region for your cloud provider" )
2525
2626 createCmd .Flags ().StringP ("inlets-token" , "t" , "" , "The inlets auth token for your exit node" )
@@ -30,6 +30,7 @@ func init() {
3030 createCmd .Flags ().String ("secret-key" , "" , "The access token for your cloud (Scaleway)" )
3131 createCmd .Flags ().String ("secret-key-file" , "" , "Read this file for the access token for your cloud (Scaleway)" )
3232 createCmd .Flags ().String ("organisation-id" , "" , "Organisation ID (Scaleway)" )
33+ createCmd .Flags ().String ("project-id" , "" , "Project ID (Packet.com)" )
3334
3435 createCmd .Flags ().StringP ("remote-tcp" , "c" , "" , `Remote host for inlets-pro to use for forwarding TCP connections` )
3536
@@ -92,6 +93,8 @@ func runCreate(cmd *cobra.Command, _ []string) error {
9293
9394 } else if provider == "scaleway" {
9495 region = "fr-par-1"
96+ } else if provider == "packet" {
97+ region = "ams1"
9598 }
9699
97100 var secretKey string
@@ -124,7 +127,9 @@ func runCreate(cmd *cobra.Command, _ []string) error {
124127
125128 userData := makeUserdata (inletsToken , inletsControlPort , remoteTCP )
126129
127- hostReq , err := createHost (provider , name , region , userData )
130+ projectID , _ := cmd .Flags ().GetString ("project-id" )
131+
132+ hostReq , err := createHost (provider , name , region , projectID , userData )
128133 if err != nil {
129134 return err
130135 }
@@ -201,6 +206,8 @@ Command:
201206func getProvisioner (provider , accessToken , secretKey , organisationID , region string ) (provision.Provisioner , error ) {
202207 if provider == "digitalocean" {
203208 return provision .NewDigitalOceanProvisioner (accessToken )
209+ } else if provider == "packet" {
210+ return provision .NewPacketProvisioner (accessToken )
204211 } else if provider == "civo" {
205212 return pkg .NewCivoProvisioner (accessToken )
206213 } else if provider == "scaleway" {
@@ -214,7 +221,7 @@ func generateAuth() (string, error) {
214221 return pwdRes , pwdErr
215222}
216223
217- func createHost (provider , name , region , userData string ) (* provision.BasicHost , error ) {
224+ func createHost (provider , name , region , projectID , userData string ) (* provision.BasicHost , error ) {
218225 if provider == "digitalocean" {
219226 return & provision.BasicHost {
220227 Name : name ,
@@ -224,6 +231,17 @@ func createHost(provider, name, region, userData string) (*provision.BasicHost,
224231 UserData : userData ,
225232 Additional : map [string ]string {},
226233 }, nil
234+ } else if provider == "packet" {
235+ return & provision.BasicHost {
236+ Name : name ,
237+ OS : "ubuntu_16_04" ,
238+ Plan : "t1.small.x86" ,
239+ Region : region ,
240+ UserData : userData ,
241+ Additional : map [string ]string {
242+ "project_id" : projectID ,
243+ },
244+ }, nil
227245 } else if provider == "scaleway" {
228246 return & provision.BasicHost {
229247 Name : name ,
@@ -244,7 +262,7 @@ func createHost(provider, name, region, userData string) (*provision.BasicHost,
244262 }, nil
245263 }
246264
247- return nil , fmt .Errorf ("no provisioner for provider: %s " , provider )
265+ return nil , fmt .Errorf ("no provisioner for provider: %q " , provider )
248266}
249267
250268func makeUserdata (authToken string , inletsControlPort int , remoteTCP string ) string {
0 commit comments