mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-10-28 15:32:28 +00:00
This uses the Packet.net API and iPXE to boot a Moby host. There are several enhancements coming soon, such as SSH key customisation, but this PR is sufficient to boot a host and then use the web interface to get console access. The user must currently upload the built artefacts to a public URL and specify it via --base-url, e.g.: moby run packet --api-key <key> --project-id <id> \ --base-url http://recoil.org/~avsm/ipxe --hostname test-moby packet See #1424 #1245 for related issues. Signed-off-by: Anil Madhavapeddy <anil@docker.com>
54 lines
1.5 KiB
Go
54 lines
1.5 KiB
Go
package packngo
|
|
|
|
const userBasePath = "/users"
|
|
|
|
// UserService interface defines available user methods
|
|
type UserService interface {
|
|
Get(string) (*User, *Response, error)
|
|
}
|
|
|
|
// User represents a Packet user
|
|
type User struct {
|
|
ID string `json:"id"`
|
|
FirstName string `json:"first_name,omitempty"`
|
|
LastName string `json:"last_name,omitempty"`
|
|
FullName string `json:"full_name,omitempty"`
|
|
Email string `json:"email,omitempty"`
|
|
TwoFactor string `json:"two_factor_auth,omitempty"`
|
|
AvatarURL string `json:"avatar_url,omitempty"`
|
|
Facebook string `json:"twitter,omitempty"`
|
|
Twitter string `json:"facebook,omitempty"`
|
|
LinkedIn string `json:"linkedin,omitempty"`
|
|
Created string `json:"created_at,omitempty"`
|
|
Updated string `json:"updated_at,omitempty"`
|
|
TimeZone string `json:"timezone,omitempty"`
|
|
Emails []Email `json:"email,omitempty"`
|
|
PhoneNumber string `json:"phone_number,omitempty"`
|
|
URL string `json:"href,omitempty"`
|
|
}
|
|
|
|
func (u User) String() string {
|
|
return Stringify(u)
|
|
}
|
|
|
|
// UserServiceOp implements UserService
|
|
type UserServiceOp struct {
|
|
client *Client
|
|
}
|
|
|
|
// Get method gets a user by userID
|
|
func (s *UserServiceOp) Get(userID string) (*User, *Response, error) {
|
|
req, err := s.client.NewRequest("GET", userBasePath, nil)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
user := new(User)
|
|
resp, err := s.client.Do(req, user)
|
|
if err != nil {
|
|
return nil, resp, err
|
|
}
|
|
|
|
return user, resp, err
|
|
}
|