Пример #1
0
def configure_admin():
    remove_state("jenkins.configured.admin")
    api = Api()

    status_set("maintenance", "Configuring Jenkins public url")
    configuration = Configuration()
    needs_restart = configuration.set_url()
    if needs_restart:
        status_set("maintenance", "Restarting Jenkins")
        service_restart('jenkins')
        api.wait()

    status_set("maintenance", "Configuring proxy settings")
    configuration.configure_proxy()
    service_restart('jenkins')
    api.wait()

    status_set("maintenance", "Configuring admin user")
    users = Users()
    users.configure_admin()

    api.reload()
    api.wait()  # Wait for the service to be fully up
    # Inform any extension that the username/password changed
    if get_state("extension.connected"):
        extension_relation = (RelationBase.from_state("extension.connected"))
        extension_relation.joined()

    set_state("jenkins.configured.admin")
Пример #2
0
 def setUp(self):
     super(UsersTest, self).setUp()
     self.useFixture(AptInstalledJenkins(self.fakes))
     self.fakes.jenkins.scripts[GET_LEGACY_TOKEN_SCRIPT.format(
         "admin")] = "abc\n"
     self.apt = AptStub()
     self.packages = Packages(apt=self.apt)
     self.users = Users(packages=self.packages)
Пример #3
0
def configure_admin():
    remove_state("jenkins.configured.admin")
    status_set("maintenance", "Configuring admin user")
    users = Users()
    users.configure_admin()
    api = Api()
    api.reload()
    api.wait()  # Wait for the service to be fully up
    set_state("jenkins.configured.admin")
Пример #4
0
def configure_admin():
    remove_state("jenkins.configured.admin")
    status_set("maintenance", "Configuring admin user")
    users = Users()
    users.configure_admin()
    api = Api()
    api.reload()
    api.wait()  # Wait for the service to be fully up
    # Inform any extension that the username/password changed
    if get_state("extension.connected"):
        extension_relation = (RelationBase.from_state("extension.connected"))
        extension_relation.joined()

    set_state("jenkins.configured.admin")
Пример #5
0
class UsersTest(JenkinsTest):
    def setUp(self):
        super(UsersTest, self).setUp()
        self.useFixture(AptInstalledJenkins(self.fakes))
        self.fakes.jenkins.scripts[GET_LEGACY_TOKEN_SCRIPT.format(
            "admin")] = "abc\n"
        self.apt = AptStub()
        self.packages = Packages(apt=self.apt)
        self.users = Users(packages=self.packages)

    def test_configure_admin_custom_password(self):
        """
        If a password is provided, it's used to configure the admin user.
        """
        self.apt._set_jenkins_version('2.120.1')
        config = hookenv.config()
        orig_password = config["password"]
        try:
            config["password"] = "******"

            script = UPDATE_PASSWORD_SCRIPT.format(username="******",
                                                   password="******")
            self.fakes.jenkins.scripts[script] = ""

            self.users.configure_admin()

            self.assertThat(paths.ADMIN_PASSWORD, FileContains("x"))
            self.assertThat(paths.ADMIN_PASSWORD, HasOwnership(0, 0))
            self.assertThat(paths.ADMIN_PASSWORD, HasPermissions("0600"))

            self.assertThat(paths.LAST_EXEC, FileContains("2.0.0\n"))
            self.assertThat(paths.LAST_EXEC, HasOwnership(123, 456))
        finally:
            config["password"] = orig_password

    def test_configure_admin_random_password(self):
        """
        If a password is not provided, a random one will be generated.
        """
        def pwgen(length):
            return "z"

        self.apt._set_jenkins_version('2.120.1')
        script = UPDATE_PASSWORD_SCRIPT.format(username="******", password="******")
        self.fakes.jenkins.scripts[script] = ""

        self.useFixture(MonkeyPatch("charmhelpers.core.host.pwgen", pwgen))
        self.users.configure_admin()
        self.assertTrue(hookenv.config()["_generated-password"])
Пример #6
0
class UsersTest(JenkinsTest):

    def setUp(self):
        super(UsersTest, self).setUp()
        self.useFixture(AptInstalledJenkins(self.fakes))
        self.fakes.jenkins.scripts[GET_TOKEN_SCRIPT.format("admin")] = "abc\n"
        self.users = Users()

    def test_configure_admin_custom_password(self):
        """
        If a password is provided, it's used to configure the admin user.
        """
        self.fakes.juju.config["password"] = "******"
        script = UPDATE_PASSWORD_SCRIPT.format(username="******", password="******")
        self.fakes.jenkins.scripts[script] = ""

        self.users.configure_admin()

        self.assertThat(paths.ADMIN_PASSWORD, FileContains("x"))
        self.assertThat(paths.ADMIN_PASSWORD, HasOwnership(0, 0))
        self.assertThat(paths.ADMIN_PASSWORD, HasPermissions("0600"))

        self.assertThat(paths.LAST_EXEC, FileContains("2.0.0\n"))
        self.assertThat(paths.LAST_EXEC, HasOwnership(123, 456))

    def test_configure_admin_random_password(self):
        """
        If a password is not provided, a random one will be generated.
        """
        def pwgen(length):
            return "z"
        script = UPDATE_PASSWORD_SCRIPT.format(username="******", password="******")
        self.fakes.jenkins.scripts[script] = ""

        self.useFixture(MonkeyPatch("charmhelpers.core.host.pwgen", pwgen))
        self.users.configure_admin()
        self.assertTrue(hookenv.config()["_generated-password"])
Пример #7
0
 def setUp(self):
     super(UsersTest, self).setUp()
     self.useFixture(AptInstalledJenkins(self.fakes))
     self.fakes.jenkins.scripts[GET_TOKEN_SCRIPT.format("admin")] = "abc\n"
     self.users = Users()
Пример #8
0
 def setUp(self):
     super(UsersTest, self).setUp()
     self.useFixture(AptInstalledJenkins(self.fakes))
     self.fakes.jenkins.scripts[GET_TOKEN_SCRIPT.format("admin")] = "abc\n"
     self.users = Users()