1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package integration
- import (
- . "gopkg.in/check.v1"
- "fmt"
- "strings"
- )
- func (s *QemuSuite) TestElideCmdLine(c *C) {
- extra := "cc.hostname=nope rancher.password=three"
- runArgs := []string{
- "--fresh",
- "--append",
- "cc.something=yes rancher.password=two",
- "--append-init",
- extra,
- }
- s.RunQemuWith(c, runArgs...)
- s.CheckOutput(c, "nope\n", Equals, "hostname")
- cmdline := s.CheckOutput(c, "", Not(Equals), "cat /proc/cmdline")
- if strings.Contains(cmdline, extra) {
- c.Errorf("/proc/cmdline (%s) contains info that should be elided (%s)", cmdline, extra)
- }
- s.CheckOutput(c,
- fmt.Sprintf("/init %s\n", extra),
- Equals,
- "sudo ros config get rancher.environment.EXTRA_CMDLINE",
- )
- // TODO: it seems that rancher.password and rancher.autologin are in `ros config export`, but accessible as `ros config get`
- s.CheckOutput(c, "\n", Equals, "sudo ros config get rancher.password")
- s.CheckOutput(c,
- "EXTRA_CMDLINE: /init cc.hostname=nope rancher.password=three\n"+
- " EXTRA_CMDLINE: /init cc.hostname=nope rancher.password=three\n"+
- " password: three\n",
- Equals,
- "sudo ros config export | grep password",
- )
- // And then add a service.yml file example.
- s.CheckCall(c,
- `echo 'test:
- image: alpine
- command: echo "tell me a secret ${EXTRA_CMDLINE}"
- labels:
- io.rancher.os.scope: system
- environment:
- - EXTRA_CMDLINE
- ' > test.yml`)
- s.CheckCall(c, "sudo mv test.yml /var/lib/rancher/conf/test.yml")
- s.CheckCall(c, "sudo ros service enable /var/lib/rancher/conf/test.yml")
- s.CheckCall(c, "sudo ros service up test")
- s.CheckOutput(c,
- "test_1 | tell me a secret /init cc.hostname=nope rancher.password=three\n",
- Equals,
- "sudo ros service logs test | grep secret",
- )
- // TODO: add a test showing we have the right password set
- }
|