1package provision
2
3import (
4	"github.com/docker/machine/libmachine/auth"
5	"github.com/docker/machine/libmachine/drivers"
6	"github.com/docker/machine/libmachine/engine"
7	"github.com/docker/machine/libmachine/provision/pkgaction"
8	"github.com/docker/machine/libmachine/provision/serviceaction"
9	"github.com/docker/machine/libmachine/swarm"
10)
11
12type FakeDetector struct {
13	Provisioner
14}
15
16func (fd *FakeDetector) DetectProvisioner(d drivers.Driver) (Provisioner, error) {
17	return fd.Provisioner, nil
18}
19
20type FakeProvisioner struct{}
21
22func NewFakeProvisioner(d drivers.Driver) Provisioner {
23	return &FakeProvisioner{}
24}
25
26func (fp *FakeProvisioner) SSHCommand(args string) (string, error) {
27	return "", nil
28}
29
30func (fp *FakeProvisioner) String() string {
31	return "fakeprovisioner"
32}
33
34func (fp *FakeProvisioner) GenerateDockerOptions(dockerPort int) (*DockerOptions, error) {
35	return nil, nil
36}
37
38func (fp *FakeProvisioner) GetDockerOptionsDir() string {
39	return ""
40}
41
42func (fp *FakeProvisioner) GetAuthOptions() auth.Options {
43	return auth.Options{}
44}
45
46func (fp *FakeProvisioner) GetSwarmOptions() swarm.Options {
47	return swarm.Options{}
48}
49
50func (fp *FakeProvisioner) Package(name string, action pkgaction.PackageAction) error {
51	return nil
52}
53
54func (fp *FakeProvisioner) Hostname() (string, error) {
55	return "", nil
56}
57
58func (fp *FakeProvisioner) SetHostname(hostname string) error {
59	return nil
60}
61
62func (fp *FakeProvisioner) CompatibleWithHost() bool {
63	return true
64}
65
66func (fp *FakeProvisioner) Provision(swarmOptions swarm.Options, authOptions auth.Options, engineOptions engine.Options) error {
67	return nil
68}
69
70func (fp *FakeProvisioner) Service(name string, action serviceaction.ServiceAction) error {
71	return nil
72}
73
74func (fp *FakeProvisioner) GetDriver() drivers.Driver {
75	return nil
76}
77
78func (fp *FakeProvisioner) SetOsReleaseInfo(info *OsRelease) {}
79
80func (fp *FakeProvisioner) GetOsReleaseInfo() (*OsRelease, error) {
81	return nil, nil
82}
83
84type NetstatProvisioner struct {
85	*FakeProvisioner
86}
87
88func (p *NetstatProvisioner) SSHCommand(args string) (string, error) {
89	return `Active Internet connections (servers and established)
90Proto Recv-Q Send-Q Local Address           Foreign Address         State
91tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
92tcp        0     72 192.168.25.141:ssh      192.168.25.1:63235      ESTABLISHED
93tcp        0      0 :::2376                 :::*                    LISTEN
94tcp        0      0 :::ssh                  :::*                    LISTEN
95Active UNIX domain sockets (servers and established)
96Proto RefCnt Flags       Type       State         I-Node Path
97unix  2      [ ACC ]     STREAM     LISTENING      17990 /var/run/acpid.socket
98unix  2      [ ACC ]     SEQPACKET  LISTENING      14233 /run/udev/control
99unix  2      [ ACC ]     STREAM     LISTENING      19365 /var/run/docker.sock
100unix  3      [ ]         STREAM     CONNECTED      19774
101unix  3      [ ]         STREAM     CONNECTED      19775
102unix  3      [ ]         DGRAM                     14243
103unix  3      [ ]         DGRAM                     14242`, nil
104}
105
106func NewNetstatProvisioner() Provisioner {
107	return &NetstatProvisioner{
108		&FakeProvisioner{},
109	}
110}
111