Skip to content

Commit a47d898

Browse files
committed
Saving changes
1 parent 44d82f0 commit a47d898

File tree

5 files changed

+50
-24
lines changed

5 files changed

+50
-24
lines changed

internal/container/controller.go

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ func (c Controller) DownloadFile(id string, src string, destFolder string) {
273273
}
274274

275275
cmd := []string{"mkdir", "-p", destFolder}
276-
c.RunCmdInContainer(id, cmd)
276+
c.RunCmdInContainer(id, cmd, ExecOptions{})
277277

278278
_, file := filepath.Split(src)
279279

@@ -285,21 +285,30 @@ func (c Controller) DownloadFile(id string, src string, destFolder string) {
285285
src,
286286
}
287287

288-
c.RunCmdInContainer(id, cmd)
288+
c.RunCmdInContainer(id, cmd, ExecOptions{})
289289
}
290290

291-
func (c Controller) RunCmdInContainer(id string, cmd []string) ([]byte, []byte) {
291+
type ExecOptions struct {
292+
User string
293+
Env []string
294+
}
295+
296+
func (c Controller) RunCmdInContainer(
297+
id string,
298+
cmd []string,
299+
options ExecOptions,
300+
) ([]byte, []byte) {
292301
trace("Running command in container: " + strings.Join(cmd, " "))
293302

294303
response, err := c.cli.ContainerExecCreate(
295304
context.Background(),
296305
id,
297306
types.ExecConfig{
298-
User: "root",
307+
User: options.User,
299308
AttachStderr: true,
300309
AttachStdout: true,
301310
Cmd: cmd,
302-
Env: []string{"DOTNET_ROOT=/root/.dotnet"},
311+
//Env: []string{"DOTNET_ROOT=/root/.dotnet"},
303312
},
304313
)
305314
checkErr(err)

pkg/mssqlcontainer/ingest/extract/7zip.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,15 @@ func (e *sevenZip) Extract(srcFile string, destFolder string) (string, string) {
3232
"-aoa",
3333
"-o" + destFolder,
3434
"/var/opt/mssql/backup/" + srcFile,
35-
})
35+
}, container.ExecOptions{})
3636

3737
stdout, _ := e.controller.RunCmdInContainer(e.containerId, []string{
3838
"./opt/7-zip/7zz",
3939
"l",
4040
"-ba",
4141
"-slt",
4242
"/var/opt/mssql/backup/" + srcFile,
43-
})
43+
}, container.ExecOptions{})
4444

4545
var mdfFile string
4646
var ldfFile string
@@ -62,27 +62,27 @@ func (e *sevenZip) Extract(srcFile string, destFolder string) (string, string) {
6262
func (e *sevenZip) Install() {
6363
e.controller.RunCmdInContainer(e.containerId, []string{
6464
"mkdir",
65-
"/opt/7-zip"})
65+
"/opt/7-zip"}, container.ExecOptions{})
6666

6767
e.controller.RunCmdInContainer(e.containerId, []string{
6868
"wget",
6969
"-O",
7070
"/opt/7-zip/7-zip.tar",
71-
"https://7-zip.org/a/7z2201-linux-x64.tar.xz"})
71+
"https://7-zip.org/a/7z2201-linux-x64.tar.xz"}, container.ExecOptions{})
7272

7373
e.controller.RunCmdInContainer(e.containerId, []string{
7474
"tar",
7575
"xvf",
7676
"/opt/7-zip/7-zip.tar",
7777
"-C",
7878
"/opt/7-zip",
79-
})
79+
}, container.ExecOptions{})
8080

8181
e.controller.RunCmdInContainer(e.containerId, []string{
8282
"chmod",
8383
"u+x",
8484
"/opt/7-zip/7zz",
85-
})
85+
}, container.ExecOptions{})
8686
}
8787

8888
func extractPaths(input string) []string {

pkg/mssqlcontainer/ingest/location/local.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package location
33
import (
44
"github.com/microsoft/go-sqlcmd/internal/container"
55
"github.com/microsoft/go-sqlcmd/internal/io/file"
6-
"path/filepath"
76
)
87

98
type local struct {
@@ -30,10 +29,12 @@ func (l local) CopyToContainer(containerId string, destFolder string) {
3029
destFolder,
3130
)
3231

33-
_, filename := filepath.Split(l.uri)
32+
/*
33+
_, filename := filepath.Split(l.uri)
3434
35-
l.controller.RunCmdInContainer(
36-
containerId,
37-
[]string{"chmod", "g+r", destFolder + "/" + filename},
38-
)
35+
l.controller.RunCmdInContainer(
36+
containerId,
37+
[]string{"chmod", "g+r", destFolder + "/" + filename},
38+
container.ExecOptions{},
39+
)*/
3940
}

pkg/mssqlcontainer/ingest/mechanism/attach.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,5 +64,5 @@ func (m *attach) setFilePermissions(filename string) {
6464
}
6565

6666
func (m *attach) RunCommand(s []string) ([]byte, []byte) {
67-
return m.controller.RunCmdInContainer(m.containerId, s)
67+
return m.controller.RunCmdInContainer(m.containerId, s, container.ExecOptions{})
6868
}

pkg/mssqlcontainer/ingest/mechanism/bacpac.go

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func (m *bacpac) BringOnline(
3737
m.setDefaultDatabaseToMaster(options.Username, query)
3838

3939
m.RunCommand([]string{
40-
"./root/.dotnet/tools/sqlpackage",
40+
"./.dotnet/tools/sqlpackage",
4141
"/Diagnostics:true",
4242
"/Action:import",
4343
"/SourceFile:" + m.CopyToLocation() + "/" + options.Filename,
@@ -63,12 +63,28 @@ func (m *bacpac) installSqlPackage() {
6363
}
6464

6565
//BUG(stuartpa): Can this be done in the mssql user, don't think it needs root
66-
m.RunCommand([]string{"wget", "https://dot.net/v1/dotnet-install.sh", "-O", "dotnet-install.sh"})
67-
m.RunCommand([]string{"chmod", "+x", "./dotnet-install.sh"})
68-
m.RunCommand([]string{"./dotnet-install.sh"})
69-
m.RunCommand([]string{"/root/.dotnet/dotnet", "tool", "install", "-g", "microsoft.sqlpackage"})
66+
m.RunCommand([]string{"wget", "https://dot.net/v1/dotnet-install.sh", "-O", "/tmp/dotnet-install.sh"})
67+
m.RunCommand([]string{"chmod", "+x", "/tmp/dotnet-install.sh"})
68+
m.RunCommand([]string{"/tmp/dotnet-install.sh", "--install-dir", "/opt/dotnet"})
69+
70+
// The SQL Server container doesn't have a /home/mssql directory (which is ~), this
71+
// causes all sorts of things to break in the container that expect to create .toolname folders
72+
m.RunCommandAsRoot([]string{"mkdir", "-p", "/home/mssql"})
73+
m.RunCommandAsRoot([]string{"chown", "mssql:root", "/home/mssql"})
74+
75+
m.RunCommand([]string{"touch", "/home/mssql/.bashrc"})
76+
m.RunCommand([]string{"sed", "-i", "$ a/export DOTNET_ROOT=/opt/dotnet", "/home/mssql/.bashrc"})
77+
m.RunCommand([]string{"sed", "-i", "$ a/export PATH=$PATH:$DOTNET_ROOT:~/.dotnet/tools", "/home/mssql/.bashrc"})
78+
m.RunCommand([]string{"/opt/dotnet/dotnet", "tool", "install", "-g", "microsoft.sqlpackage"})
7079
}
7180

7281
func (m *bacpac) RunCommand(s []string) ([]byte, []byte) {
73-
return m.controller.RunCmdInContainer(m.containerId, s)
82+
return m.controller.RunCmdInContainer(m.containerId, s, container.ExecOptions{})
83+
}
84+
85+
func (m *bacpac) RunCommandAsRoot(s []string) ([]byte, []byte) {
86+
return m.controller.RunCmdInContainer(m.containerId, s, container.ExecOptions{
87+
User: "root",
88+
Env: nil,
89+
})
7490
}

0 commit comments

Comments
 (0)