def setup_gerrit(self): if not self.is_master(): return if not self.args.gerrit_enabled: return self.required_option('gerrit-hostname') self.required_option('gerrit-port') self.required_option('gerrit-username') self.required_option('gerrit-private-key') self.set('gerrit.enabled', True) self.set('gerrit.hostname', self.args.gerrit_hostname) self.set('gerrit.username', self.args.gerrit_username) self.set('gerrit.review.enabled', self.args.gerrit_review_enabled) self.set('gerrit.review.tag', self.args.version) self.set('gerrit.trigger.tag', self.args.version) self.set('gerrit.api.tag', self.args.version) Installer.check_file_exists(self.args.gerrit_private_key) secret = {"id_rsa": open(self.args.gerrit_private_key).read()} self.create_secret("infrabox-gerrit-ssh", self.args.general_system_namespace, secret) self.create_secret("infrabox-gerrit-ssh", self.args.general_worker_namespace, secret)
def setup_general(self): self.required_option('general-rsa-private-key') self.required_option('general-rsa-public-key') self.set('general.dont_check_certificates', self.args.general_dont_check_certificates) self.set('general.worker_namespace', self.args.general_worker_namespace) self.set('general.system_namespace', self.args.general_system_namespace) self.set('general.rbac.enabled', not self.args.general_rbac_disabled) self.set('general.report_issue_url', self.args.general_report_issue_url) self.set('root_url', self.args.root_url) Installer.check_file_exists(self.args.general_rsa_private_key) Installer.check_file_exists(self.args.general_rsa_public_key) secret = { "id_rsa": open(self.args.general_rsa_private_key).read(), "id_rsa.pub": open(self.args.general_rsa_public_key).read() } self.create_secret("infrabox-rsa", self.args.general_system_namespace, secret)
def setup_gerrit(self): if not self.args.gerrit_enabled: return self.required_option('gerrit-hostname') self.required_option('gerrit-port') self.required_option('gerrit-username') self.required_option('gerrit-private-key') Installer.check_file_exists(self.args.gerrit_private_key) self.config.add('services.gerrit-trigger.image', '%s/gerrit-trigger:%s' % (self.args.docker_registry, self.args.version)) self.config.append('services.gerrit-trigger.networks', ['infrabox']) self.config.append('services.gerrit-trigger.environment', [ 'INFRABOX_SERVICE=gerrit-trigger', 'INFRABOX_VERSION=%s' % self.args.version ]) self.config.append('services.gerrit-trigger.environment', self.get_gerrit_env()) gerrit_key = os.path.join(self.args.o, 'gerrit_id_rsa') shutil.copyfile(self.args.gerrit_private_key, gerrit_key) self.config.append('services.gerrit-trigger.volumes', [ '%s:/tmp/gerrit/id_rsa' % gerrit_key, ])
def setup_postgres(self): if not self.is_master(): self.set('storage.migration.enabled', False) self.required_option('database') args = self.args if self.args.database == 'postgres': self.required_option('postgres-host') self.required_option('postgres-port') self.required_option('postgres-username') self.required_option('postgres-password') self.required_option('postgres-database') self.set('storage.postgres.enabled', True) self.set('storage.postgres.host', args.postgres_host) self.set('storage.postgres.port', args.postgres_port) self.set('storage.postgres.db', args.postgres_database) self.set('storage.cloudsql.enabled', False) secret = { "username": args.postgres_username, "password": args.postgres_password } self.create_secret("infrabox-postgres", self.args.general_system_namespace, secret) elif args.database == 'cloudsql': self.required_option('cloudsql-instance-connection-name') self.required_option('cloudsql-proxy-service-account-key-file') self.required_option('cloudsql-proxy-username') self.required_option('cloudsql-proxy-password') self.required_option('postgres-database') Installer.check_file_exists( args.cloudsql_proxy_service_account_key_file) self.set('storage.postgres.enabled', False) self.set('storage.postgres.host', "localhost") self.set('storage.postgres.port', 5432) self.set('storage.postgres.db', args.postgres_database) self.set('storage.cloudsql.instance_connection_name', args.cloudsql_instance_connection_name) self.set('storage.cloudsql.enabled', True) secret = { "username": args.cloudsql_proxy_username, "password": args.cloudsql_proxy_password } self.create_secret("infrabox-postgres", self.args.general_system_namespace, secret) with open(args.cloudsql_proxy_service_account_key_file) as keyfile: secret = {"credentials.json": keyfile.read()} self.create_secret("infrabox-cloudsql-instance-credentials", self.args.general_system_namespace, secret) else: raise Exception('unknown database type')
def setUp(self): self.dir = tempfile.mkdtemp() print self.dir touchFile('%s/app1/ab/a.txt' % self.dir) touchFile('%s/app2/ab/b.txt' % self.dir) touchFile('%s/app1/xy/x.txt' % self.dir) touchFile('%s/app2/xy/y.txt' % self.dir) self.inst = Installer()
def main(self): Installer.copy_files(self.args, 'compose') self.args.root_url = 'http://localhost:8090' compose_path = os.path.join(self.args.o, 'compose', 'docker-compose.yml') self.config.load(compose_path) self.setup_rsa() self.setup_scheduler() self.setup_database() self.setup_docker_registry() self.setup_ldap() self.setup_nginx_ingress() self.setup_api() self.setup_job_git() self.setup_gerrit() self.config.dump(compose_path)
def main(self): self.required_option('root-url') while True: if self.args.root_url.endswith('/'): self.args.root_url = self.args.root_url[:-1] else: break # Copy helm chart Installer.copy_files(self.args, 'infrabox') # Load values values_path = os.path.join(self.args.o, 'infrabox', 'values.yaml') self.config.load(values_path) self.setup_general() self.setup_admin_password() self.setup_storage() self.setup_postgres() self.setup_docker_registry() self.setup_account() self.setup_job() self.setup_db() self.setup_scheduler() self.setup_cluster() self.setup_gerrit() self.setup_github() self.setup_dashboard() self.setup_api() self.setup_static() self.setup_ldap() self.setup_local_cache() self.setup_ingress() daemon_config = {'disable-legacy-registry': True} if self.args.general_dont_check_certificates: registry_name = self.args.root_url.replace('http://', '') registry_name = registry_name.replace('https://', '') daemon_config['insecure-registries'] = [registry_name] daemon_config_path = os.path.join(self.args.o, 'infrabox', 'config', 'docker', 'daemon.json') json.dump(daemon_config, open(daemon_config_path, 'w')) self.config.dump(values_path)
def setup_storage(self): self.required_option('storage') args = self.args if args.storage == 's3': self.required_option('s3-access-key') self.required_option('s3-secret-key') self.required_option('s3-region') self.required_option('s3-endpoint') self.required_option('s3-port') self.required_option('s3-bucket') self.set('storage.gcs.enabled', False) self.set('storage.s3.enabled', True) self.set('storage.s3.region', args.s3_region) self.set('storage.s3.endpoint', args.s3_endpoint) self.set('storage.s3.bucket', args.s3_bucket) self.set('storage.s3.port', args.s3_port) self.set('storage.s3.secure', args.s3_secure == 'true') secret = { "secretKey": args.s3_secret_key, "accessKey": args.s3_access_key } self.create_secret("infrabox-s3-credentials", self.args.general_system_namespace, secret) elif args.storage == 'gcs': self.required_option('gcs-service-account-key-file') self.required_option('gcs-bucket') Installer.check_file_exists(args.gcs_service_account_key_file) self.set('storage.s3.enabled', False) self.set('storage.gcs.enabled', True) self.set('storage.gcs.bucket', args.gcs_bucket) with open(args.gcs_service_account_key_file) as keyfile: secret = {"gcs_service_account.json": keyfile.read()} self.create_secret("infrabox-gcs", self.args.general_system_namespace, secret) else: raise Exception("unknown storage")
class InstallerTest(unittest.TestCase): def setUp(self): self.dir = tempfile.mkdtemp() print self.dir touchFile("%s/app1/ab/a.txt" % self.dir) touchFile("%s/app2/ab/b.txt" % self.dir) touchFile("%s/app1/xy/x.txt" % self.dir) touchFile("%s/app2/xy/y.txt" % self.dir) self.inst = Installer() def tearDown(self): shutil.rmtree(self.dir) def test_first(self): self.inst.installRecurseGlob(r"%s/app[12]/*" % self.dir, "%s/both" % self.dir) self.assert_(os.path.exists("%s/both/ab/a.txt" % self.dir)) self.assert_(os.path.exists("%s/both/ab/b.txt" % self.dir)) self.assert_(os.path.exists("%s/both/xy/x.txt" % self.dir)) self.assert_(os.path.exists("%s/both/xy/y.txt" % self.dir))
class InstallerTest(unittest.TestCase): def setUp(self): self.dir = tempfile.mkdtemp() print self.dir touchFile('%s/app1/ab/a.txt' % self.dir) touchFile('%s/app2/ab/b.txt' % self.dir) touchFile('%s/app1/xy/x.txt' % self.dir) touchFile('%s/app2/xy/y.txt' % self.dir) self.inst = Installer() def tearDown(self): shutil.rmtree(self.dir) def test_first(self): self.inst.installRecurseGlob(r'%s/app[12]/*' % self.dir, '%s/both' % self.dir) self.assert_(os.path.exists('%s/both/ab/a.txt' % self.dir)) self.assert_(os.path.exists('%s/both/ab/b.txt' % self.dir)) self.assert_(os.path.exists('%s/both/xy/x.txt' % self.dir)) self.assert_(os.path.exists('%s/both/xy/y.txt' % self.dir))
def main(stdscr): global filesdir, installdir inst = Installer(stdscr, "Pedigree", filesdir, installdir) inst.setupCurses() inst.introPage() inst.selectDest() inst.installFiles() inst.postInstall() inst.done()