1615 |
1615 |
1616 /** build manager store **/ |
1616 /** build manager store **/ |
1617 |
1617 |
1618 case class Store(options: Options) { |
1618 case class Store(options: Options) { |
1619 val base_dir = Path.explode(options.string("build_manager_dir")) |
1619 val base_dir = Path.explode(options.string("build_manager_dir")) |
1620 val identifier = options.string("build_manager_identifier") |
|
1621 val address = { |
1620 val address = { |
1622 Url(proper_string(options.string("build_manager_address")) getOrElse |
1621 Url(proper_string(options.string("build_manager_address")) getOrElse |
1623 "https://" + options.string("build_manager_ssh_host")) |
1622 "https://" + options.string("build_manager_ssh_host")) |
1624 } |
1623 } |
1625 |
1624 |
1626 val pending = base_dir + Path.basic("pending") |
1625 val pending = base_dir + Path.basic("pending") |
1627 val finished = base_dir + Path.basic("finished") |
|
1628 |
1626 |
1629 def task_dir(task: Task) = pending + Path.basic(task.uuid.toString) |
1627 def task_dir(task: Task) = pending + Path.basic(task.uuid.toString) |
1630 def report(kind: String, id: Long): Report = |
|
1631 Report(kind, id, finished + Path.make(List(kind, id.toString))) |
|
1632 |
1628 |
1633 def sync_permissions(dir: Path, ssh: SSH.System = SSH.Local): Unit = { |
1629 def sync_permissions(dir: Path, ssh: SSH.System = SSH.Local): Unit = { |
1634 ssh.execute("chmod -R g+rwx " + File.bash_path(dir)) |
1630 ssh.execute("chmod -R g+rwx " + File.bash_path(dir)) |
1635 ssh.execute("chown -R :" + ssh_group + " " + File.bash_path(dir)) |
1631 ssh.execute("chown -R :" + ssh_group + " " + File.bash_path(dir)) |
1636 } |
1632 } |
1637 |
1633 |
1638 def init_dirs(): Unit = |
1634 def init_dirs(): Unit = |
1639 List(pending, finished).foreach(dir => sync_permissions(Isabelle_System.make_directory(dir))) |
1635 List(pending, finished).foreach(dir => sync_permissions(Isabelle_System.make_directory(dir))) |
1640 |
1636 |
1641 val ssh_group: String = options.string("build_manager_group") |
1637 val ssh_group: String = options.string("build_manager_group") |
1642 |
|
1643 def open_cluster_ssh(): SSH.Session = |
|
1644 SSH.open_session(options, |
|
1645 host = options.string("build_manager_cluster_ssh_host"), |
|
1646 port = options.int("build_manager_cluster_ssh_port"), |
|
1647 user = options.string("build_manager_cluster_ssh_user")) |
|
1648 |
|
1649 def open_ssh(): SSH.Session = |
|
1650 SSH.open_session(options, |
|
1651 host = options.string("build_manager_ssh_host"), |
|
1652 port = options.int("build_manager_ssh_port"), |
|
1653 user = options.string("build_manager_ssh_user")) |
|
1654 |
1638 |
1655 def open_database(server: SSH.Server = SSH.no_server): PostgreSQL.Database = |
1639 def open_database(server: SSH.Server = SSH.no_server): PostgreSQL.Database = |
1656 PostgreSQL.open_database_server(options, server = server, |
1640 PostgreSQL.open_database_server(options, server = server, |
1657 user = options.string("build_manager_database_user"), |
1641 user = options.string("build_manager_database_user"), |
1658 password = options.string("build_manager_database_password"), |
1642 password = options.string("build_manager_database_password"), |
1660 host = options.string("build_manager_database_host"), |
1644 host = options.string("build_manager_database_host"), |
1661 port = options.int("build_manager_database_port"), |
1645 port = options.int("build_manager_database_port"), |
1662 ssh_host = options.string("build_manager_database_ssh_host"), |
1646 ssh_host = options.string("build_manager_database_ssh_host"), |
1663 ssh_port = options.int("build_manager_database_ssh_port"), |
1647 ssh_port = options.int("build_manager_database_ssh_port"), |
1664 ssh_user = options.string("build_manager_database_ssh_user")) |
1648 ssh_user = options.string("build_manager_database_ssh_user")) |
|
1649 |
|
1650 |
|
1651 /* server */ |
|
1652 |
|
1653 val identifier = options.string("build_manager_identifier") |
|
1654 |
|
1655 val finished = base_dir + Path.basic("finished") |
|
1656 def report(kind: String, id: Long): Report = |
|
1657 Report(kind, id, finished + Path.make(List(kind, id.toString))) |
|
1658 |
|
1659 def open_cluster_ssh(): SSH.Session = |
|
1660 SSH.open_session(options, |
|
1661 host = options.string("build_manager_cluster_ssh_host"), |
|
1662 port = options.int("build_manager_cluster_ssh_port"), |
|
1663 user = options.string("build_manager_cluster_ssh_user")) |
|
1664 |
|
1665 |
|
1666 /* client */ |
|
1667 |
|
1668 def open_ssh(): SSH.Session = |
|
1669 SSH.open_session(options, |
|
1670 host = options.string("build_manager_ssh_host"), |
|
1671 port = options.int("build_manager_ssh_port"), |
|
1672 user = options.string("build_manager_ssh_user")) |
1665 |
1673 |
1666 def open_postgresql_server(): SSH.Server = |
1674 def open_postgresql_server(): SSH.Server = |
1667 PostgreSQL.open_server(options, |
1675 PostgreSQL.open_server(options, |
1668 host = options.string("build_manager_database_host"), |
1676 host = options.string("build_manager_database_host"), |
1669 port = options.int("build_manager_database_port"), |
1677 port = options.int("build_manager_database_port"), |