Ajout de toute les vue , engine ok
parent
d9572b468e
commit
98fd4c4a80
|
|
@ -0,0 +1,50 @@
|
|||
function get_ipxe(id){
|
||||
$.ajax({
|
||||
method: "GET",
|
||||
url: "/host/ipxe",
|
||||
data: { uuid:id}
|
||||
}).done(function(result) {
|
||||
|
||||
$("#script_result").empty().append(result)
|
||||
});
|
||||
}
|
||||
|
||||
function get_install(id){
|
||||
$.ajax({
|
||||
method: "GET",
|
||||
url: "/host/install",
|
||||
data: { uuid:id}
|
||||
}).done(function(result) {
|
||||
|
||||
$("#script_result").empty().append(result)
|
||||
});
|
||||
}
|
||||
|
||||
function get_postinstall(id){
|
||||
$.ajax({
|
||||
method: "GET",
|
||||
url: "/host/postinstall",
|
||||
data: { uuid:id}
|
||||
}).done(function(result) {
|
||||
|
||||
$("#script_result").empty().append(result)
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
$( document ).ready(function() {
|
||||
$(document).on("click",".getIpxeScript", function(){
|
||||
var id=$(this).attr('id')
|
||||
get_ipxe(id)
|
||||
});
|
||||
$(document).on("click",".getInstallScript", function(){
|
||||
var id=$(this).attr('id')
|
||||
get_install(id)
|
||||
});
|
||||
|
||||
$(document).on("click",".getPostinstallScript", function(){
|
||||
var id=$(this).attr('id')
|
||||
get_postinstall(id)
|
||||
});
|
||||
});
|
||||
|
|
@ -1,7 +1,53 @@
|
|||
function get_ipxe(id){
|
||||
$.ajax({
|
||||
method: "GET",
|
||||
url: "/host/ipxe",
|
||||
data: { uuid:id}
|
||||
}).done(function(result) {
|
||||
|
||||
$("#script_result").empty().append(result)
|
||||
});
|
||||
}
|
||||
|
||||
function get_install(id){
|
||||
$.ajax({
|
||||
method: "GET",
|
||||
url: "/host/install",
|
||||
data: { uuid:id}
|
||||
}).done(function(result) {
|
||||
|
||||
$("#script_result").empty().append(result)
|
||||
});
|
||||
}
|
||||
|
||||
function get_postinstall(id){
|
||||
$.ajax({
|
||||
method: "GET",
|
||||
url: "/host/postinstall",
|
||||
data: { uuid:id}
|
||||
}).done(function(result) {
|
||||
|
||||
$("#script_result").empty().append(result)
|
||||
});
|
||||
}
|
||||
|
||||
$( document ).ready(function() {
|
||||
$('.toggleable').next().hide();
|
||||
$(document).on("click",".toggleable", function(){
|
||||
$(this).toggleClass("is-active");
|
||||
$(this).next().toggle();
|
||||
});
|
||||
$(document).on("click",".getIpxeScript", function(){
|
||||
var id=$(this).attr('id')
|
||||
get_ipxe(id)
|
||||
});
|
||||
$(document).on("click",".getInstallScript", function(){
|
||||
var id=$(this).attr('id')
|
||||
get_install(id)
|
||||
});
|
||||
|
||||
$(document).on("click",".getPostinstallScript", function(){
|
||||
var id=$(this).attr('id')
|
||||
get_postinstall(id)
|
||||
});
|
||||
})
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
.scrollDiv {
|
||||
max-height: 80vh;
|
||||
overflow:auto;
|
||||
}
|
||||
|
||||
table {
|
||||
/* Not required only for visualizing */
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table thead tr th {
|
||||
/* Important */
|
||||
background-color: white;
|
||||
position: sticky;
|
||||
z-index: 100;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
td {
|
||||
/* Not required only for visualizing */
|
||||
padding: 1em;
|
||||
}
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
class AccountsController < ApplicationController
|
||||
before_action :set_account, only: %i[ show edit update destroy ]
|
||||
before_action :set_pass, only: %i[ update ]
|
||||
# GET /accounts or /accounts.json
|
||||
def index
|
||||
@accounts = Account.all
|
||||
end
|
||||
|
||||
# GET /accounts/1 or /accounts/1.json
|
||||
def show
|
||||
end
|
||||
|
||||
# GET /accounts/new
|
||||
def new
|
||||
@account = Account.new
|
||||
end
|
||||
|
||||
# GET /accounts/1/edit
|
||||
def edit
|
||||
end
|
||||
|
||||
# POST /accounts or /accounts.json
|
||||
def create
|
||||
@account = Account.new(account_params.except(:password))
|
||||
|
||||
respond_to do |format|
|
||||
if @account.save
|
||||
format.html { redirect_to account_url(@account), notice: "Account was successfully created." }
|
||||
format.json { render :show, status: :created, location: @account }
|
||||
else
|
||||
format.html { render :new, status: :unprocessable_entity }
|
||||
format.json { render json: @account.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# PATCH/PUT /accounts/1 or /accounts/1.json
|
||||
def update
|
||||
respond_to do |format|
|
||||
logger.debug(account_params)
|
||||
if @account.update(account_params.except(:password))
|
||||
format.html { redirect_to account_url(@account), notice: "Account was successfully updated." }
|
||||
format.json { render :show, status: :ok, location: @account }
|
||||
else
|
||||
format.html { render :edit, status: :unprocessable_entity }
|
||||
format.json { render json: @account.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# DELETE /accounts/1 or /accounts/1.json
|
||||
def destroy
|
||||
@account.destroy!
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to accounts_url, notice: "Account was successfully destroyed." }
|
||||
format.json { head :no_content }
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
# Use callbacks to share common setup or constraints between actions.
|
||||
def set_account
|
||||
@account = Account.find(params[:id])
|
||||
end
|
||||
|
||||
def set_pass
|
||||
# [IMPORTANT] Salt must be generated for prodution !
|
||||
|
||||
cmdline = "mkpasswd -m sha-512 -S 012345678 #{account_params[:password]}"
|
||||
@account.encpassword = `#{cmdline}`.strip
|
||||
account_params.delete(:password)
|
||||
|
||||
end
|
||||
|
||||
# Only allow a list of trusted parameters through.
|
||||
def account_params
|
||||
params.require(:account).permit(:name, :login, :password, :sshpubkey,:encpassword)
|
||||
end
|
||||
end
|
||||
|
|
@ -1,7 +1,6 @@
|
|||
class ApplicationController < ActionController::Base
|
||||
protect_from_forgery with: :exception
|
||||
before_action :configure_permitted_parameters, if: :devise_controller?
|
||||
|
||||
protected
|
||||
|
||||
def configure_permitted_parameters
|
||||
|
|
|
|||
|
|
@ -0,0 +1,100 @@
|
|||
class EngineController < ApplicationController
|
||||
before_action :set_host_by_uuid, only: %i[ generate_boot generate_install generate_postinstall generate_installed generate_metadata ]
|
||||
def generateglobal
|
||||
gv=Utils::Globalvar.new
|
||||
|
||||
puts gv.Get
|
||||
end
|
||||
|
||||
def generate_boot
|
||||
if @host
|
||||
sourceip=request.headers['REMOTE_ADDR']
|
||||
log=Log.new({source: "#{sourceip}", crit: "info",message: "#{@host.uuid} Request boot script"})
|
||||
log.save()
|
||||
@host.mac = params[:mac]
|
||||
@host.installip = params[:installip]
|
||||
boot_script = @host.installtemplate.boot.content
|
||||
template = @host.installtemplate
|
||||
@site = @host.site
|
||||
host = @host
|
||||
@template = @host.installtemplate
|
||||
if @host.toinstall
|
||||
@host.update({status: "Computer Booting"})
|
||||
end
|
||||
result = render inline: boot_script, layout: false, content_type: 'text/plain'
|
||||
@host.update({lastbootgenerated: result})
|
||||
end
|
||||
end
|
||||
|
||||
def generate_install
|
||||
if @host
|
||||
sourceip=request.headers['REMOTE_ADDR']
|
||||
log=Log.new({source: "#{sourceip}", crit: "info",message: "#{@host.uuid} Request Install script"})
|
||||
log.save()
|
||||
script = @host.installtemplate.install.content
|
||||
template = @host.installtemplate
|
||||
@site = @host.site
|
||||
host = @host
|
||||
@template = @host.installtemplate
|
||||
@host.update({status: "System Install"})
|
||||
result = render inline: script, layout: false, content_type: 'text/plain'
|
||||
@host.update({lastinstallgenerated: result})
|
||||
end
|
||||
end
|
||||
|
||||
def generate_postinstall
|
||||
if @host
|
||||
sourceip=request.headers['REMOTE_ADDR']
|
||||
log=Log.new({source: "#{sourceip}", crit: "info",message: "#{@host.uuid} Request Postinstall script"})
|
||||
log.save()
|
||||
@host.update({status: "System Post Install"})
|
||||
script = @host.installtemplate.postinstall.content
|
||||
template = @host.installtemplate
|
||||
@ansible = Account.find_by(name: "ansible")
|
||||
@site = @host.site
|
||||
host = @host
|
||||
@template = @host.installtemplate
|
||||
result = render inline: script, layout: false, content_type: 'text/plain'
|
||||
@host.update({lastpostinstallgenerated: result})
|
||||
end
|
||||
end
|
||||
|
||||
def generate_installed
|
||||
sourceip=request.headers['REMOTE_ADDR']
|
||||
log=Log.new({source: "#{sourceip}", crit: "info",message: "#{@host.uuid} Install Finished."})
|
||||
log.save()
|
||||
if @host.update({status: "Installation Finish", installed: true, toinstall: false, interface: params[:interface],ip: params[:installip]})
|
||||
render plain: "ok"
|
||||
else
|
||||
render json: @host.errors
|
||||
end
|
||||
end
|
||||
|
||||
def generate_metadata
|
||||
@host = Host.find_by(uuid: params[:uuid])
|
||||
script = Script.find_by({name: "metadata",stage: "config"})
|
||||
result = render inline: script.content, layout: false, content_type: 'text/plain'
|
||||
end
|
||||
|
||||
private
|
||||
# Use callbacks to share common setup or constraints between actions.
|
||||
def set_host_by_uuid
|
||||
@host = Host.find_by(uuid: params[:uuid])
|
||||
if ! @host
|
||||
logger.debug "> NEW HOST DETECTED !!!"
|
||||
sourceip=request.headers['REMOTE_ADDR']
|
||||
log=Log.new({source: "#{sourceip}", crit: "warning",message: "New host with uuid #{params[:uuid]} Detected."})
|
||||
log.save()
|
||||
@template = Installtemplate.find_by(name:"default")
|
||||
@site = Site.find_by(name:"default")
|
||||
@account = Account.find_by(name:"default")
|
||||
@host = Host.new(hostname: "New host detected",uuid: params["uuid"], installip: params["installip"], installtemplate: @template,site: @site, mac: params["mac"], status: "discover", discover: true,installed: false, toinstall: false,rootaccount: @account, mainaccount: @account)
|
||||
@host.save!
|
||||
end
|
||||
end
|
||||
# Only allow a list of trusted parameters through.
|
||||
def host_params
|
||||
params.require(:host).permit(:uuid, :hostname, :ip, :status, :mac, :discover, :installed, :interface , :installtemplate, :site , :installtemplate_id, :site_id, :rootaccount_id, :mainaccount_id,:toinstall, :installip)
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
class HomeController < ApplicationController
|
||||
def index
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,139 @@
|
|||
class HostsController < ApplicationController
|
||||
before_action :authenticate_user!
|
||||
|
||||
before_action :set_host, only: %i[ show edit update destroy ]
|
||||
before_action :set_host_by_uuid, only: %i[ generate_boot generate_install generate_postinstall generate_metadata ]
|
||||
|
||||
# GET /hosts or /hosts.json
|
||||
def index
|
||||
@hosts = Host.asc(:hostname)
|
||||
end
|
||||
|
||||
# GET /hosts/1 or /hosts/1.json
|
||||
def show
|
||||
end
|
||||
|
||||
# GET /hosts/new
|
||||
def new
|
||||
@host = Host.new
|
||||
end
|
||||
|
||||
# GET /hosts/1/edit
|
||||
def edit
|
||||
end
|
||||
|
||||
# POST /hosts or /hosts.json
|
||||
def create
|
||||
@host = Host.new(host_params)
|
||||
respond_to do |format|
|
||||
if @host.save
|
||||
format.html { redirect_to host_url(@host), notice: "Host was successfully created." }
|
||||
format.json { render :show, status: :created, location: @host }
|
||||
else
|
||||
format.html { render :new, status: :unprocessable_entity }
|
||||
format.json { render json: @host.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# PATCH/PUT /hosts/1 or /hosts/1.json
|
||||
def update
|
||||
puts host_params
|
||||
respond_to do |format|
|
||||
log=Log.new({source: "admin", crit: "info",message: "User xxx update #{host_params[:hostname]}"})
|
||||
log.save()
|
||||
if @host.update(host_params)
|
||||
format.html { redirect_to host_url(@host), notice: "Host was successfully updated." }
|
||||
format.json { render :show, status: :ok, location: @host }
|
||||
else
|
||||
format.html { render :edit, status: :unprocessable_entity }
|
||||
format.json { render json: @host.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# DELETE /hosts/1 or /hosts/1.json
|
||||
def destroy
|
||||
@host.destroy!
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to hosts_url, notice: "Host was successfully destroyed." }
|
||||
format.json { head :no_content }
|
||||
end
|
||||
end
|
||||
|
||||
def generate_boot
|
||||
if @host
|
||||
|
||||
@host.mac = params[:mac]
|
||||
@host.installip = params[:installip]
|
||||
boot_script = @host.installtemplate.boot.content
|
||||
template = @host.installtemplate
|
||||
@site = @host.site
|
||||
host = @host
|
||||
@template = @host.installtemplate
|
||||
result = render inline: boot_script, layout: false, content_type: 'text/plain'
|
||||
@host.update({lastbootgenerated: result})
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
def generate_install
|
||||
if @host
|
||||
script = @host.installtemplate.install.content
|
||||
template = @host.installtemplate
|
||||
@site = @host.site
|
||||
host = @host
|
||||
@template = @host.installtemplate
|
||||
result = render inline: script, layout: false, content_type: 'text/plain'
|
||||
@host.update({lastinstallgenerated: result})
|
||||
end
|
||||
end
|
||||
|
||||
def generate_postinstall
|
||||
if @host
|
||||
script = @host.installtemplate.postinstall.content
|
||||
template = @host.installtemplate
|
||||
@ansible = Account.find_by(name: "ansible")
|
||||
@site = @host.site
|
||||
host = @host
|
||||
@template = @host.installtemplate
|
||||
result = render inline: script, layout: false, content_type: 'text/plain'
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def generate_metadata
|
||||
@host = Host.find_by(uuid: params[:uuid])
|
||||
script = Script.find_by({name: "metadata",stage: "config"})
|
||||
result = render inline: script.content, layout: false, content_type: 'text/plain'
|
||||
end
|
||||
|
||||
private
|
||||
# Use callbacks to share common setup or constraints between actions.
|
||||
|
||||
def set_host
|
||||
logger.debug "#{params}"
|
||||
@host = Host.find(params[:id])
|
||||
end
|
||||
|
||||
def set_host_by_uuid
|
||||
@host = Host.find_by(uuid: params[:uuid])
|
||||
if ! @host
|
||||
logger.debug "> NEW HOST DETECTED !!!"
|
||||
sourceip=request.headers['REMOTE_ADDR']
|
||||
log=Log.new({source: "#{sourceip}", crit: "warning",message: "New host with uuid #{params[:uuid]} Detected."})
|
||||
log.save()
|
||||
@template = Installtemplate.find_by(name:"default")
|
||||
@site = Site.find_by(name:"default")
|
||||
@account = Account.find_by(name:"default")
|
||||
@host = Host.new(hostname: "New host detected",uuid: params["uuid"], installip: params["installip"], installtemplate: @template,site: @site, mac: params["mac"], status: "discover", discover: true,installed: false, toinstall: false,rootuser: @account, mainuser: @account)
|
||||
@host.save!
|
||||
end
|
||||
end
|
||||
|
||||
# Only allow a list of trusted parameters through.
|
||||
def host_params
|
||||
params.require(:host).permit(:uuid, :hostname, :ip, :status, :mac, :discover, :installed, :interface , :installtemplate, :site , :installtemplate_id, :site_id, :rootaccount_id, :mainaccount_id,:toinstall, :installip)
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
class InstalltemplatesController < ApplicationController
|
||||
before_action :authenticate_user!
|
||||
before_action :set_installtemplate, only: %i[ show edit update destroy ]
|
||||
|
||||
# GET /installtemplates or /installtemplates.json
|
||||
def index
|
||||
@installtemplates = Installtemplate.asc(:name)
|
||||
end
|
||||
|
||||
# GET /installtemplates/1 or /installtemplates/1.json
|
||||
def show
|
||||
end
|
||||
|
||||
# GET /installtemplates/new
|
||||
def new
|
||||
@installtemplate = Installtemplate.new
|
||||
end
|
||||
|
||||
# GET /installtemplates/1/edit
|
||||
def edit
|
||||
end
|
||||
|
||||
# POST /installtemplates or /installtemplates.json
|
||||
def create
|
||||
@installtemplate = Installtemplate.new(installtemplate_params)
|
||||
|
||||
respond_to do |format|
|
||||
if @installtemplate.save
|
||||
format.html { redirect_to installtemplate_url(@installtemplate), notice: "Installtemplate was successfully created." }
|
||||
format.json { render :show, status: :created, location: @installtemplate }
|
||||
else
|
||||
format.html { render :new, status: :unprocessable_entity }
|
||||
format.json { render json: @installtemplate.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# PATCH/PUT /installtemplates/1 or /installtemplates/1.json
|
||||
def update
|
||||
respond_to do |format|
|
||||
if @installtemplate.update(installtemplate_params)
|
||||
format.html { redirect_to installtemplate_url(@installtemplate), notice: "Installtemplate was successfully updated." }
|
||||
format.json { render :show, status: :ok, location: @installtemplate }
|
||||
else
|
||||
format.html { render :edit, status: :unprocessable_entity }
|
||||
format.json { render json: @installtemplate.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# DELETE /installtemplates/1 or /installtemplates/1.json
|
||||
def destroy
|
||||
@installtemplate.destroy!
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to installtemplates_url, notice: "Installtemplate was successfully destroyed." }
|
||||
format.json { head :no_content }
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
# Use callbacks to share common setup or constraints between actions.
|
||||
def set_installtemplate
|
||||
@installtemplate = Installtemplate.find(params[:id])
|
||||
end
|
||||
|
||||
# Only allow a list of trusted parameters through.
|
||||
def installtemplate_params
|
||||
params.require(:installtemplate).permit(:name, :ostype, :osversion, :repository, :nfsroot, :kernel, :initrd, :rootfile, :boot_id, :install_id, :postinstall_id, :lang)
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
class LogsController < ApplicationController
|
||||
before_action :authenticate_user!
|
||||
before_action :set_log, only: %i[ show edit update destroy ]
|
||||
|
||||
# GET /logs or /logs.json
|
||||
def index
|
||||
@logs = Log.desc(:created_at)
|
||||
end
|
||||
|
||||
# GET /logs/1 or /logs/1.json
|
||||
def show
|
||||
end
|
||||
|
||||
# GET /logs/new
|
||||
def new
|
||||
@log = Log.new
|
||||
end
|
||||
|
||||
# GET /logs/1/edit
|
||||
def edit
|
||||
end
|
||||
|
||||
# POST /logs or /logs.json
|
||||
def create
|
||||
@log = Log.new(log_params)
|
||||
respond_to do |format|
|
||||
if @log.save
|
||||
format.html { redirect_to log_url(@log), notice: "Log was successfully created." }
|
||||
format.json { render :show, status: :created, location: @log }
|
||||
else
|
||||
format.html { render :new, status: :unprocessable_entity }
|
||||
format.json { render json: @log.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# PATCH/PUT /logs/1 or /logs/1.json
|
||||
def update
|
||||
puts log_params
|
||||
respond_to do |format|
|
||||
if @log.update(log_params)
|
||||
format.html { redirect_to log_url(@log), notice: "Log was successfully updated." }
|
||||
format.json { render :show, status: :ok, location: @log }
|
||||
else
|
||||
format.html { render :edit, status: :unprocessable_entity }
|
||||
format.json { render json: @log.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# DELETE /logs/1 or /logs/1.json
|
||||
def destroy
|
||||
@log.destroy!
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to logs_url, notice: "Log was successfully destroyed." }
|
||||
format.json { head :no_content }
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
private
|
||||
# Use callbacks to share common setup or constraints between actions.
|
||||
|
||||
def set_log
|
||||
logger.debug "#{params}"
|
||||
@log = Log.find(params[:id])
|
||||
end
|
||||
|
||||
|
||||
# Only allow a list of trusted parameters through.
|
||||
def log_params
|
||||
params.require(:log).permit(:source, :crit, :message)
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
class PagesController < ApplicationController
|
||||
def index
|
||||
@hostslist = Host.all
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
class SitesController < ApplicationController
|
||||
before_action :authenticate_user!
|
||||
before_action :set_site, only: %i[ show edit update destroy ]
|
||||
|
||||
# GET /sites or /sites.json
|
||||
def index
|
||||
@sites = Site.all
|
||||
end
|
||||
|
||||
# GET /sites/1 or /sites/1.json
|
||||
def show
|
||||
end
|
||||
|
||||
# GET /sites/new
|
||||
def new
|
||||
@site = Site.new
|
||||
end
|
||||
|
||||
# GET /sites/1/edit
|
||||
def edit
|
||||
end
|
||||
|
||||
# POST /sites or /sites.json
|
||||
def create
|
||||
@site = Site.new(site_params)
|
||||
|
||||
respond_to do |format|
|
||||
if @site.save
|
||||
format.html { redirect_to site_url(@site), notice: "Site was successfully created." }
|
||||
format.json { render :show, status: :created, location: @site }
|
||||
else
|
||||
format.html { render :new, status: :unprocessable_entity }
|
||||
format.json { render json: @site.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# PATCH/PUT /sites/1 or /sites/1.json
|
||||
def update
|
||||
respond_to do |format|
|
||||
if @site.update(site_params)
|
||||
format.html { redirect_to site_url(@site), notice: "Site was successfully updated." }
|
||||
format.json { render :show, status: :ok, location: @site }
|
||||
else
|
||||
format.html { render :edit, status: :unprocessable_entity }
|
||||
format.json { render json: @site.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# DELETE /sites/1 or /sites/1.json
|
||||
def destroy
|
||||
@site.destroy!
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to sites_url, notice: "Site was successfully destroyed." }
|
||||
format.json { head :no_content }
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
# Use callbacks to share common setup or constraints between actions.
|
||||
def set_site
|
||||
@site = Site.find(params[:id])
|
||||
end
|
||||
|
||||
# Only allow a list of trusted parameters through.
|
||||
def site_params
|
||||
params.require(:site).permit(:name, :domain, :gateway, :nameserver, :network, :netmask, :server_ip, :server_port, :fileserver_ip, :fileserver_port,:fileserver_basepath, :timezone, :apiurl, :cfenginehub)
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
class Account
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
field :name, type: String
|
||||
field :login, type: String
|
||||
field :encpassword, type: String
|
||||
field :sshpubkey, type: String
|
||||
has_many :rootref, class_name: "Host", inverse_of: :rootuser
|
||||
has_many :userref, class_name: "Host", inverse_of: :mainuser
|
||||
end
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
class Host
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
field :uuid, type: String
|
||||
field :hostname, type: String
|
||||
field :ip, type: String
|
||||
field :installip, type: String
|
||||
field :status, type: String
|
||||
field :mac, type: String
|
||||
field :discover, type: Mongoid::Boolean
|
||||
field :installed, type: Mongoid::Boolean
|
||||
field :toinstall, type: Mongoid::Boolean
|
||||
field :interface, type: String
|
||||
field :lastbootgenerated, type: String , default: ''
|
||||
field :lastinstallgenerated, type: String , default: ''
|
||||
field :lastpostinstallgenerated, type: String, default: ''
|
||||
belongs_to :installtemplate , class_name: "Installtemplate", inverse_of: :hostreferences
|
||||
belongs_to :site , class_name: "Site", inverse_of: :sitereferences
|
||||
belongs_to :rootaccount , class_name: "Account", inverse_of: :rootref
|
||||
belongs_to :mainaccount , class_name: "Account", inverse_of: :accountref
|
||||
end
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
class Installtemplate
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
field :name, type: String
|
||||
field :ostype, type: String
|
||||
field :osversion, type: String
|
||||
field :repository, type: String
|
||||
field :nfsroot, type: String
|
||||
field :kernel, type: String
|
||||
field :initrd, type: String
|
||||
field :rootfile, type: String
|
||||
field :lang, type: String
|
||||
has_many :hostreferences, class_name: "Host", inverse_of: :installtemplate
|
||||
belongs_to :boot , class_name: "Script", inverse_of: :bootref
|
||||
belongs_to :install , class_name: "Script", inverse_of: :installref
|
||||
belongs_to :postinstall , class_name: "Script", inverse_of: :postsinstallref
|
||||
|
||||
end
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
class Log
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
field :source, type: String
|
||||
field :crit, type: String
|
||||
field :message, type: String
|
||||
end
|
||||
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
class Site
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
field :name, type: String
|
||||
field :domain, type: String
|
||||
field :gateway, type: String
|
||||
field :nameserver, type: String
|
||||
field :network, type: String
|
||||
field :netmask, type: String
|
||||
field :server_ip, type: String
|
||||
field :server_port, type: String
|
||||
field :fileserver_ip, type: String
|
||||
field :fileserver_port, type: String
|
||||
field :fileserver_basepath, type: String
|
||||
field :timezone, type: String
|
||||
field :apiurl, type: String
|
||||
field :description, type: String
|
||||
field :cfenginehub, type: String
|
||||
has_many :sitereferences, class_name: "Host", inverse_of: :site
|
||||
|
||||
end
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
|
||||
<div id="<%= dom_id account %>">
|
||||
<p>
|
||||
<strong>Name:</strong>
|
||||
<%= account.name %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Login:</strong>
|
||||
<%= account.login %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>SSH Key:</strong>
|
||||
<%= account.sshpubkey %>
|
||||
</p>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
json.extract! account, :id, :name, :login, :sshpubkey, :password, :created_at, :updated_at
|
||||
json.url account_url(account, format: :json)
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
<tr>
|
||||
<td><%= account.name %></td>
|
||||
<td><%= account.login %></td>
|
||||
<td> <%= button_to "Edit", edit_account_path(account), method: :get, class: "button is-small is-primary" %></tr>
|
||||
</tr>
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
<div class="box">
|
||||
<%= form_with(model: account) do |form| %>
|
||||
<% if account.errors.any? %>
|
||||
<div style="color: red">
|
||||
<h2><%= pluralize(account.errors.count, "error") %> prohibited this account from being saved:</h2>
|
||||
|
||||
<ul>
|
||||
<% account.errors.each do |error| %>
|
||||
<li><%= error.full_message %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<div class="field">
|
||||
<label class="label">Name</label>
|
||||
<div class="control">
|
||||
<%= form.text_field :name , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field is-grouped">
|
||||
<div class="field">
|
||||
<label class="label">Login</label>
|
||||
<div class="control">
|
||||
<%= form.text_field :login , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="label">Password</label>
|
||||
<div class="control">
|
||||
<%= form.text_field :password , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<div>
|
||||
<label class="label">SSH Public Key</label>
|
||||
<textarea class="textarea" name="account[sshpubkey]" id="account_sshpubkey" rows="4"><%= account.sshpubkey %></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control">
|
||||
<button class="button is-link">Submit</button>
|
||||
<%= link_to "Return", "/accounts", class: "button is-success" %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
<%= button_to "Destroy", @account, method: :delete, class: "button is-danger" %>
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
<h1 class="title">Editing Account: <%= @account.name %></h1>
|
||||
|
||||
<%= render "form", account: @account %>
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
<p style="color: green"><%= notice %></p>
|
||||
|
||||
|
||||
|
||||
<h1 class="title">Accounts</h1>
|
||||
<%= button_to "New Account", new_account_path, method: :get, class: "button is-small is-primary" %></tr>
|
||||
<div class="box">
|
||||
<table id="scripts" class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="1">Login</th>
|
||||
<th colspan="1"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% @accounts.each do |account| %>
|
||||
<%= render :partial => 'account_raw', :locals => { :account => account} %>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
json.array! @accounts, partial: "accounts/account", as: :account
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<h1>New account</h1>
|
||||
|
||||
<%= render "form", account: @account %>
|
||||
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<%= link_to "Back to accounts", accounts_path %>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
<p style="color: green"><%= notice %></p>
|
||||
|
||||
<%= render @account %>
|
||||
|
||||
<div>
|
||||
<%= link_to "Edit this account", edit_account_path(@account) %> |
|
||||
<%= link_to "Back to accounts", accounts_path %>
|
||||
|
||||
<%= button_to "Destroy", @account, method: :delete %>
|
||||
</div>
|
||||
|
|
@ -0,0 +1 @@
|
|||
json.partial! "accounts/account", account: @account
|
||||
|
|
@ -1,43 +1,48 @@
|
|||
<h2>Edit <%= resource_name.to_s.humanize %></h2>
|
||||
<div class="columns is-mobile is-centered">
|
||||
<div class="column is-half">
|
||||
<div class="box">
|
||||
<h1 class="title is-1">Your profil</h1>
|
||||
<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>
|
||||
<%= render "devise/shared/error_messages", resource: resource %>
|
||||
|
||||
<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>
|
||||
<%= render "devise/shared/error_messages", resource: resource %>
|
||||
<div class="field">
|
||||
<%= f.label :email %><br />
|
||||
<%= f.email_field :email, autofocus: true, autocomplete: "email", class: "input is-small" , placeholder: :email %>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<%= f.label :email %><br />
|
||||
<%= f.email_field :email, autofocus: true, autocomplete: "email" %>
|
||||
<% if devise_mapping.confirmable? && resource.pending_reconfirmation? %>
|
||||
<div>Currently waiting confirmation for: <%= resource.unconfirmed_email %></div>
|
||||
<% end %>
|
||||
|
||||
<div class="field">
|
||||
<%= f.label :password %> <i>(leave blank if you don't want to change it)</i><br />
|
||||
<%= f.password_field :password, autocomplete: "new-password",class: "input is-small" , placeholder: "New password" %>
|
||||
<% if @minimum_password_length %>
|
||||
<br />
|
||||
<em><%= @minimum_password_length %> characters minimum</em>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<%= f.label :password_confirmation %><br />
|
||||
<%= f.password_field :password_confirmation, autocomplete: "new-password", class: "input is-small" , placeholder: "New password confirmation" %>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br />
|
||||
<%= f.password_field :current_password, autocomplete: "current-password", class: "input is-small" , placeholder: "Current password" %>
|
||||
</div>
|
||||
|
||||
<div class="actions">
|
||||
<%= f.submit "Update",class:"button is-success" %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<h3>Cancel my account</h3>
|
||||
|
||||
<div>Unhappy? <%= button_to "Cancel my account", registration_path(resource_name), data: { confirm: "Are you sure?", turbo_confirm: "Are you sure?" }, method: :delete , class:"button is-danger"%></div>
|
||||
|
||||
<%= link_to "Back", :back %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<% if devise_mapping.confirmable? && resource.pending_reconfirmation? %>
|
||||
<div>Currently waiting confirmation for: <%= resource.unconfirmed_email %></div>
|
||||
<% end %>
|
||||
|
||||
<div class="field">
|
||||
<%= f.label :password %> <i>(leave blank if you don't want to change it)</i><br />
|
||||
<%= f.password_field :password, autocomplete: "new-password" %>
|
||||
<% if @minimum_password_length %>
|
||||
<br />
|
||||
<em><%= @minimum_password_length %> characters minimum</em>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<%= f.label :password_confirmation %><br />
|
||||
<%= f.password_field :password_confirmation, autocomplete: "new-password" %>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br />
|
||||
<%= f.password_field :current_password, autocomplete: "current-password" %>
|
||||
</div>
|
||||
|
||||
<div class="actions">
|
||||
<%= f.submit "Update" %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<h3>Cancel my account</h3>
|
||||
|
||||
<div>Unhappy? <%= button_to "Cancel my account", registration_path(resource_name), data: { confirm: "Are you sure?", turbo_confirm: "Are you sure?" }, method: :delete %></div>
|
||||
|
||||
<%= link_to "Back", :back %>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,170 @@
|
|||
<%# _form.html.erb %>
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<div class="box">
|
||||
<%= form_with(model: host) do |form| %>
|
||||
<% if host.errors.any? %>
|
||||
<div style="color: red">
|
||||
<h2><%= pluralize(host.errors.count, "error") %> prohibited this host from being saved:</h2>
|
||||
|
||||
<ul>
|
||||
<% host.errors.each do |error| %>
|
||||
<li><%= error.full_message %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
<% end %>
|
||||
<div class="field is-horizontal">
|
||||
<div class="field-label is-small">
|
||||
<label class="label">UUID</label>
|
||||
</div>
|
||||
<div class="field-body">
|
||||
<div class="field">
|
||||
<div class="control">
|
||||
<%= form.text_field :uuid , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field is-horizontal">
|
||||
<div class="field-label is-small">
|
||||
<label class="label">Hostname</label>
|
||||
</div>
|
||||
<div class="field-body">
|
||||
<div class="field">
|
||||
<div class="control">
|
||||
<%= form.text_field :hostname , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field is-horizontal">
|
||||
<div class="field-label is-small">
|
||||
<label class="label">ip</label>
|
||||
</div>
|
||||
<div class="field-body">
|
||||
<div class="field">
|
||||
<div class="control">
|
||||
<%= form.text_field :ip , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field is-horizontal">
|
||||
<div class="field-label is-small">
|
||||
<label class="label">Installing IP</label>
|
||||
</div>
|
||||
<div class="field-body">
|
||||
<div class="field">
|
||||
<div class="control">
|
||||
<%= form.text_field :installip , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field is-horizontal">
|
||||
<div class="field-label is-small">
|
||||
<label class="label">Status</label>
|
||||
</div>
|
||||
<div class="field-body">
|
||||
<div class="field">
|
||||
<div class="control">
|
||||
<%= form.text_field :status , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field is-horizontal">
|
||||
<div class="field-label is-small">
|
||||
<label class="label">MAC Address</label>
|
||||
</div>
|
||||
<div class="field-body">
|
||||
<div class="field">
|
||||
<div class="control">
|
||||
<%= form.text_field :mac , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field is-horizontal">
|
||||
<div class="field-label is-small">
|
||||
<label class="label">Interface</label>
|
||||
</div>
|
||||
<div class="field-body">
|
||||
<div class="field">
|
||||
<div class="control">
|
||||
<%= form.text_field :interface , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field is-horizontal">
|
||||
<div class="field-label is-small">
|
||||
<label class="label">Template</label>
|
||||
</div>
|
||||
<div class="field-body">
|
||||
<div class="field">
|
||||
<div class="select">
|
||||
<%= collection_select(:host, :installtemplate_id, Installtemplate.all, :_id, :name) %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field is-horizontal">
|
||||
<div class="field-label is-small">
|
||||
<label class="label">Site</label>
|
||||
</div>
|
||||
<div class="field-body">
|
||||
<div class="field">
|
||||
<div class="select">
|
||||
<%= collection_select(:host, :site_id, Site.all, :_id, :name) %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field is-grouped">
|
||||
<div class="control">
|
||||
<%= form.label :rootaccount, class: "label is-small" %>
|
||||
<div class="select is-primary">
|
||||
<%= form.collection_select :rootaccount_id, Account.all, :id, :name %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control">
|
||||
<%= form.label :mainaccount, class: "label is-small" %>
|
||||
<div class="select is-primary">
|
||||
<%= form.collection_select :mainaccount_id, Account.all, :id, :name %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control">
|
||||
<%= form.label :discover, class: "checkbox" %>
|
||||
<%= form.check_box :discover %>
|
||||
</div>
|
||||
<div class="control">
|
||||
<%= form.label :installed, class: "checkbox" %>
|
||||
<%= form.check_box :installed %>
|
||||
</div>
|
||||
<div class="control">
|
||||
<%= form.label :toinstall, class: "checkbox" %>
|
||||
<%= form.check_box :toinstall %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control">
|
||||
<button class="button is-link">Submit</button>
|
||||
<%= link_to "Return", "/hosts", class: "button is-success" %>
|
||||
<%= button_to "Destroy", @host, method: :delete, class: "button is-danger is-pulled-right" %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
<div class="card" id="<%= dom_id host %>">
|
||||
<header class="card-header">
|
||||
<p class="card-header-title">
|
||||
<%= host.hostname %>
|
||||
</p>
|
||||
<button class="card-header-icon" aria-label="more options">
|
||||
<span class="icon">
|
||||
<i class="fas fa-angle-down" aria-hidden="true"></i>
|
||||
</span>
|
||||
</button>
|
||||
</header>
|
||||
<div class="card-content">
|
||||
<div class="content">
|
||||
<p>
|
||||
<strong>Ip:</strong>
|
||||
<%= host.ip %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Status:</strong>
|
||||
<%= host.status %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Mac:</strong>
|
||||
<%= host.mac %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Discover:</strong>
|
||||
<%= host.discover %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Installed:</strong>
|
||||
<%= host.installed %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Interface:</strong>
|
||||
<%= host.interface %>
|
||||
</p>
|
||||
<p>
|
||||
<strong>Install Template:</strong>
|
||||
<% if defined?host.installtemplate.name %>
|
||||
<%= host.installtemplate.name %>
|
||||
<% else %>
|
||||
not set
|
||||
<% end %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Site:</strong>
|
||||
<% if defined?host.site.name %>
|
||||
<%= host.site.name %>
|
||||
<% else %>
|
||||
not set
|
||||
<% end %>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<button class="button">
|
||||
<%= link_to "Edit this host", edit_host_path(host) %>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
json.extract! host, :id, :uuid, :hostname, :ip, :status, :mac, :discover, :installed, :interface, :installtemplate, :site, :created_at, :updated_at
|
||||
json.url host_url(host, format: :json)
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<tr>
|
||||
<td><%= host.hostname %></td>
|
||||
<td><%= host.status %></td>
|
||||
<td><%= host.installtemplate.name %></td>
|
||||
<td><%= button_to "Edit", edit_host_path(host), method: :get, class: "button is-small is-primary" %></td>
|
||||
<td><button id=<%= host.uuid %> class="getIpxeScript button is-small is-primary">IPXE</button></td>
|
||||
<td><button id=<%= host.uuid %> class="getInstallScript button is-small is-primary">Install</button></td>
|
||||
<td><button id=<%= host.uuid %> class="getPostinstallScript button is-small is-primary">Postinstall</button></td>
|
||||
</tr>
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<h1 class="title">Editing Host: <%= @host.hostname %></h1>
|
||||
|
||||
<%= render "form", host: @host %>
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
|
||||
<h1 class="title">Hosts</h1>
|
||||
<%= button_to "New Host", new_host_path, method: :get, class: "button is-small is-primary" %></tr>
|
||||
<div class="container">
|
||||
<table id="hosts" class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="1">Hostname</th>
|
||||
<th colspan="1">Status</th>
|
||||
<th colspan="1">Template</th>
|
||||
<th colspan="1"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% @hosts.each do |host| %>
|
||||
<%= render :partial => 'hostraw', :locals => { :host => host} %>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
<div id="script_div">
|
||||
<h2>Render</h2>
|
||||
<pre style="overflow:scroll; max-height:500px" id="script_result">
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
json.array! @hosts, partial: "hosts/host", as: :host
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<h1>New host</h1>
|
||||
|
||||
<%= render "form", host: @host %>
|
||||
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<%= link_to "Back to hosts", hosts_path %>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<section>
|
||||
<p style="color: green"><%= notice %></p>
|
||||
</section>
|
||||
|
||||
<%= render @host %>
|
||||
|
||||
<div>
|
||||
<button class="button">
|
||||
<%= link_to "Back to hosts", hosts_path %>
|
||||
</button>
|
||||
|
||||
</div>
|
||||
|
|
@ -0,0 +1 @@
|
|||
json.partial! "hosts/host", host: @host
|
||||
|
|
@ -0,0 +1,112 @@
|
|||
<div class="box">
|
||||
<%= form_with(model: installtemplate) do |form| %>
|
||||
<% if installtemplate.errors.any? %>
|
||||
<div style="color: red">
|
||||
<h2><%= pluralize(installtemplate.errors.count, "error") %> prohibited this installtemplate from being saved:</h2>
|
||||
|
||||
<ul>
|
||||
<% installtemplate.errors.each do |error| %>
|
||||
<li><%= error.full_message %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
|
||||
<div class="field">
|
||||
<%= form.label :name, class: "label" %>
|
||||
<div class="control">
|
||||
<%= form.text_field :name , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field is-grouped">
|
||||
<div class="field">
|
||||
<%= form.label :ostype, class: "label" %>
|
||||
<div class="control">
|
||||
<%= form.text_field :ostype , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<%= form.label :osversion, class: "label" %>
|
||||
<div class="control">
|
||||
<%= form.text_field :osversion , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<%= form.label :repository, class: "label" %>
|
||||
<div class="control">
|
||||
<%= form.text_field :repository , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<%= form.label :nfsroot, class: "label" %>
|
||||
<div class="control">
|
||||
<%= form.text_field :nfsroot , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field is-grouped">
|
||||
<div class="field">
|
||||
<%= form.label :kernel, class: "label" %>
|
||||
<div class="control">
|
||||
<%= form.text_field :kernel , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<%= form.label :initrd, class: "label" %>
|
||||
<div class="control">
|
||||
<%= form.text_field :initrd , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<%= form.label :rootfile, class: "label" %>
|
||||
<div class="control">
|
||||
<%= form.text_field :rootfile , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field is-grouped">
|
||||
<div class="control">
|
||||
<%= form.label :boot, class: "label" %>
|
||||
<div class="select is-primary">
|
||||
<%= form.collection_select :boot_id, Script.where(stage:"boot"), :id, :name %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control">
|
||||
<%= form.label :install, class: "label" %>
|
||||
<div class="select is-primary">
|
||||
<%= form.collection_select :install_id, Script.where(stage:"install"), :id, :name %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control">
|
||||
<%= form.label :postinstall, class: "label" %>
|
||||
<div class="select is-primary">
|
||||
<%= form.collection_select :postinstall_id, Script.where(stage:"postinstall"), :id, :name %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<%= form.label :lang, class: "label" %>
|
||||
<div class="control">
|
||||
<%= form.text_field :lang , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control">
|
||||
<button class="button is-link">Submit</button>
|
||||
<%= link_to "Return", "/installtemplates", class: "button is-success" %>
|
||||
</div>
|
||||
|
||||
<% end %>
|
||||
<%= button_to " Destroy ", @installtemplate, method: :delete, class: "button is-danger" %>
|
||||
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
<div id="<%= dom_id installtemplate %>">
|
||||
<p>
|
||||
<strong>Name:</strong>
|
||||
<%= installtemplate.name %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Ostype:</strong>
|
||||
<%= installtemplate.ostype %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Osversion:</strong>
|
||||
<%= installtemplate.osversion %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Repository:</strong>
|
||||
<%= installtemplate.repository %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Nfsroot:</strong>
|
||||
<%= installtemplate.nfsroot %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Kernel:</strong>
|
||||
<%= installtemplate.kernel %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Initrd:</strong>
|
||||
<%= installtemplate.initrd %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Rootfile:</strong>
|
||||
<%= installtemplate.rootfile %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Boot Script</strong>
|
||||
<% if defined?installtemplate.boot.name %>
|
||||
<%= installtemplate.boot.name %>
|
||||
<% else %>
|
||||
not set
|
||||
<% end %>
|
||||
</p>
|
||||
|
||||
|
||||
<p>
|
||||
<strong>Install</strong>
|
||||
<% if defined?installtemplate.install.name %>
|
||||
<%= installtemplate.install.name %>
|
||||
<% else %>
|
||||
not set
|
||||
<% end %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>PostInstall</strong>
|
||||
<% if defined?installtemplate.boot.name %>
|
||||
<%= installtemplate.boot.name %>
|
||||
<% else %>
|
||||
not set
|
||||
<% end %>
|
||||
</p>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
json.extract! installtemplate, :id, :name, :ostype, :osversion, :repository, :nfsroot, :kernel, :initrd, :rootfile, :boot, :install, :postinstall :created_at, :updated_at
|
||||
json.url installtemplate_url(installtemplate, format: :json)
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
<tr>
|
||||
<td><%= installtemplate.name %></td>
|
||||
<td> <%= button_to "Edit", edit_installtemplate_path(installtemplate), method: :get, class: "button is-small is-primary" %></tr>
|
||||
</tr>
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
<h1 class="title">Editing <%= @installtemplate.name %></h1>
|
||||
|
||||
<%= render "form", installtemplate: @installtemplate %>
|
||||
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<%= link_to "Show", @installtemplate %> |
|
||||
<%= link_to "Back", installtemplates_path %>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
<p style="color: green"><%= notice %></p>
|
||||
|
||||
<h1 class="title">Templates</h1>
|
||||
<%= button_to "New Template", new_installtemplate_path, method: :get, class: "button is-small is-primary" %></tr>
|
||||
<div class="box">
|
||||
<table id="Templates" class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="1">Name</th>
|
||||
<th colspan="1"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% @installtemplates.each do |installtemplate| %>
|
||||
<%= render :partial => 'templateraw', :locals => { :installtemplate => installtemplate} %>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
json.array! @installtemplates, partial: "installtemplates/installtemplate", as: :installtemplate
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<h1>New installtemplate</h1>
|
||||
|
||||
<%= render "form", installtemplate: @installtemplate %>
|
||||
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<%= link_to "Back to installtemplates", installtemplates_path %>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
<p style="color: green"><%= notice %></p>
|
||||
|
||||
<%= render @installtemplate %>
|
||||
|
||||
<div>
|
||||
<%= link_to "Edit this installtemplate", edit_installtemplate_path(@installtemplate) %> |
|
||||
<%= link_to "Back to installtemplates", installtemplates_path %>
|
||||
|
||||
<%= button_to "Destroy this installtemplate", @installtemplate, method: :delete %>
|
||||
</div>
|
||||
|
|
@ -0,0 +1 @@
|
|||
json.partial! "installtemplates/installtemplate", installtemplate: @installtemplate
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
<!-- application.html.erb -->
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
|
|
@ -14,14 +15,14 @@
|
|||
<body>
|
||||
<div class="container is-fluid">
|
||||
<%= render "partials/top-menu" %>
|
||||
<div class="columns">
|
||||
<div class="column is-one-fifth">
|
||||
<div class="columns is-1">
|
||||
<div class="column is-one-quarter">
|
||||
<%= render "partials/left-menu" %>
|
||||
</div>
|
||||
<div class="column auto">
|
||||
<p class="notice"><%= notice %></p>
|
||||
<p class="alert"><%= alert %></p>
|
||||
<div class="container is-fluid">
|
||||
</div>
|
||||
<div class="column">
|
||||
<p class="notice"><%= notice %></p>
|
||||
<p class="alert"><%= alert %></p>
|
||||
<div class="container">
|
||||
<%= yield %>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -30,3 +31,5 @@
|
|||
<%= javascript_include_tag "init" %>
|
||||
</body>
|
||||
</html>
|
||||
<!-- end application.html.erb -->
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,6 @@
|
|||
<tr>
|
||||
<td><%= log.created_at %></td>
|
||||
<td><%= log.source %></td>
|
||||
<td><%= log.crit %></td>
|
||||
<td><%= log.message %></td>
|
||||
</tr>
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
<p style="color: green"><%= notice %></p>
|
||||
|
||||
<div class="scrollDiv" >
|
||||
<table id="logs" class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="1">Date</th>
|
||||
<th colspan="1">Source</th>
|
||||
<th colspan="1">Crit</th>
|
||||
<th colspan="1">Message</th>
|
||||
<th colspan="1"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% @logs.each do |log| %>
|
||||
<%= render :partial => 'log_raw', :locals => { :log => log} %>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
json.array! @logs, partial: "logs/log", as: :log
|
||||
|
|
@ -3,5 +3,5 @@
|
|||
<div class="notification is-primary">
|
||||
<h1>Home#index</h1>
|
||||
</div>
|
||||
<p>Find me in app/views/home/index.html.erb</p>
|
||||
<p>Find me in app/views/pages/index.html.erb</p>
|
||||
</div>
|
||||
|
|
@ -1,40 +1,32 @@
|
|||
<aside class="menu">
|
||||
<p class="menu-label">Tutorial</p>
|
||||
|
||||
<ul class="menu-list">
|
||||
<li>
|
||||
<a class="has-background-info toggleable">
|
||||
Configurations
|
||||
</a>
|
||||
<ul>
|
||||
<li><a href="/scripts">Scripts</a></li>
|
||||
<li><a href="/templates">Templates</a></li>
|
||||
<li><a href="/sites">Templates</a></li>
|
||||
<li><a href="/accounts">Accounts</a></li>
|
||||
<aside class="menu">
|
||||
<ul class="menu-list">
|
||||
<li>
|
||||
<a class="has-background-info toggleable">
|
||||
Configurations
|
||||
</a>
|
||||
<ul>
|
||||
<%= link_to "Scripts" , scripts_path %>
|
||||
<%= link_to "Templates" , installtemplates_path %>
|
||||
<%= link_to "Sites" , sites_path %>
|
||||
<%= link_to "Account" , accounts_path %>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<% if @hostslist %>
|
||||
<a class="has-background-info toggleable">
|
||||
Hosts
|
||||
</a>
|
||||
<ul>
|
||||
<% @hostslist.each do |host| %>
|
||||
<%= link_to host.hostname , edit_host_path(host) %>
|
||||
<% end %>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<a class="has-background-info toggleable">
|
||||
Hosts
|
||||
</a>
|
||||
<ul>
|
||||
<li><a href="/host1">host1</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a>Data Structures</a></li>
|
||||
<li><a>Web Tech</a></li>
|
||||
<li><a>Machine Learning</a></li>
|
||||
</ul>
|
||||
<p class="menu-label">Courses</p>
|
||||
|
||||
<ul class="menu-list">
|
||||
<li><a>Java</a></li>
|
||||
<li><a>Python</a></li>
|
||||
<li><a>C++</a></li>
|
||||
</ul>
|
||||
<ul class="menu-list">
|
||||
<li><a>About us</a></li>
|
||||
<li><a>Careers</a></li>
|
||||
</ul>
|
||||
</aside>
|
||||
</ul>
|
||||
<% else %>
|
||||
<%= link_to "Host" , hosts_path %>
|
||||
<% end %>
|
||||
</li>
|
||||
<li><%= link_to "Logs" , logs_path %></li>
|
||||
</ul>
|
||||
</aside>
|
||||
|
|
@ -48,9 +48,9 @@
|
|||
<div class="navbar-item">
|
||||
<div class="buttons">
|
||||
<% if !user_signed_in? %>
|
||||
<%= link_to "Sign up", new_registration_path(resource_name) , class: "button is-light"%><br />
|
||||
<%= link_to "Login", new_user_session_path, class: "button is-light" %>
|
||||
<% else %>
|
||||
<%= link_to "Profil", edit_user_registration_path, class: "button is-light" %>
|
||||
<%= button_to "Logout", destroy_user_session_path, method: :delete, class: "button is-light" %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
<div class="box">
|
||||
<%= form_with(model: script) do |form| %>
|
||||
<% if script.errors.any? %>
|
||||
<div style="color: red">
|
||||
|
|
@ -11,37 +12,58 @@
|
|||
</div>
|
||||
<% end %>
|
||||
|
||||
<div>
|
||||
<%= form.label :name, style: "display: block" %>
|
||||
<%= form.text_field :name %>
|
||||
<div class="field">
|
||||
<label class="label">Name</label>
|
||||
<div class="control">
|
||||
<%= form.text_field :name , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<%= form.label :stage, style: "display: block" %>
|
||||
<%= form.text_field :stage %>
|
||||
<div class="field is-grouped">
|
||||
<div class="field">
|
||||
<label class="label">Stage</label>
|
||||
<div class="control">
|
||||
<%= form.text_field :stage , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="label">Lang</label>
|
||||
<div class="control">
|
||||
<%= form.text_field :lang , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<div>
|
||||
<label class="label">Content</label>
|
||||
<textarea class="textarea" name="script[content]" id="script_content" rows="15"><%= script.content %></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<%= form.label :lang, style: "display: block" %>
|
||||
<%= form.text_field :lang %>
|
||||
|
||||
<div class="control">
|
||||
<label class="checkbox">
|
||||
<% if script.lock %>
|
||||
<input type="checkbox" name="script[lock]", id="script_lock", checked>
|
||||
<% else %>
|
||||
<input type="checkbox" name="script[lock]", id="script_lock">
|
||||
<% end %>
|
||||
Lock
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<div>
|
||||
<label class="label">Description</label>
|
||||
<textarea class="textarea" name="script[description]" id="script_description" rows="2"><%= script.description %></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<%= form.label :content, style: "display: block" %>
|
||||
<%= form.text_area :content %>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<%= form.label :lock, style: "display: block" %>
|
||||
<%= form.check_box :lock %>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<%= form.label :description, style: "display: block" %>
|
||||
<%= form.text_area :description %>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<%= form.submit %>
|
||||
<div class="control">
|
||||
<button class="button is-link">Submit</button>
|
||||
<%= link_to "Return", "/scripts", class: "button is-success" %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
<%= button_to "Destroy", @script, method: :delete, class: "button is-danger" %>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
<tr>
|
||||
<td><%= script.name %></td>
|
||||
<td><%= script.stage %></td>
|
||||
<td><%= script.lang %></td>
|
||||
<td> <%= button_to "Edit", edit_script_path(script), method: :get, class: "button is-small is-primary" %>
|
||||
</tr>
|
||||
|
||||
|
|
@ -1,10 +1,3 @@
|
|||
<h1>Editing script</h1>
|
||||
<h1 class="title">Editing Script: <%= @script.name %></h1>
|
||||
|
||||
<%= render "form", script: @script %>
|
||||
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<%= link_to "Show this script", @script %> |
|
||||
<%= link_to "Back to scripts", scripts_path %>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,14 +1,23 @@
|
|||
<p style="color: green"><%= notice %></p>
|
||||
|
||||
<h1>Scripts</h1>
|
||||
|
||||
<div id="scripts">
|
||||
<% @scripts.each do |script| %>
|
||||
<%= render script %>
|
||||
<p>
|
||||
<%= link_to "Show this script", script %>
|
||||
</p>
|
||||
<% end %>
|
||||
<h1 class="title">Scripts</h1>
|
||||
<%= button_to "New Script", new_script_path, method: :get, class: "button is-small is-primary" %></tr>
|
||||
<div class="box">
|
||||
<table id="scripts" class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="1">Name</th>
|
||||
<th colspan="1">Stage</th>
|
||||
<th colspan="1">Lang</th>
|
||||
<th colspan="1"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% @scripts.each do |script| %>
|
||||
<%= render :partial => 'script_raw', :locals => { :script => script} %>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<%= link_to "New script", new_script_path %>
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,117 @@
|
|||
<%= form_with(model: site) do |form| %>
|
||||
<div class="field">
|
||||
<label class="label">Name</label>
|
||||
<div class="control">
|
||||
<%= form.text_field :name , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field is-grouped">
|
||||
<div class="field">
|
||||
<label class="label">Domain</label>
|
||||
<div class="control">
|
||||
<%= form.text_field :domain , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="label">Gateway</label>
|
||||
<div class="control">
|
||||
<%= form.text_field :gateway , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="label">Nameserver</label>
|
||||
<div class="control">
|
||||
<%= form.text_field :nameserver , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field is-grouped">
|
||||
<div class="field">
|
||||
<label class="label">Network</label>
|
||||
<div class="control">
|
||||
<%= form.text_field :network , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label">Netmask</label>
|
||||
<div class="control">
|
||||
<%= form.text_field :netmask , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<%= form.label :apiurl, class: "label" %>
|
||||
<div class="control">
|
||||
<%= form.text_field :apiurl , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="field is-grouped">
|
||||
<div class="field">
|
||||
<label class="label">Serveur IP</label>
|
||||
<div class="control">
|
||||
<%= form.text_field :server_ip , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="label">Serveur Port</label>
|
||||
<div class="control">
|
||||
<%= form.text_field :server_port , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field is-grouped">
|
||||
<div class="field">
|
||||
<label class="label">File Server Ip</label>
|
||||
<div class="control">
|
||||
<%= form.text_field :fileserver_ip , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="label">File Server Port</label>
|
||||
<div class="control">
|
||||
<%= form.text_field :fileserver_port , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="label">File Server Basepath</label>
|
||||
<div class="control">
|
||||
<%= form.text_field :fileserver_basepath , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<%= form.label :cfenginehub, class: "label" %>
|
||||
<div class="control">
|
||||
<%= form.text_field :cfenginehub , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
<% if not @site.cfenginehub.empty? -%>
|
||||
<%= link_to "Goto cfengine hub", "http://#{@site.cfenginehub}", class: "button is-info", :target => "_blank" %>
|
||||
<% end -%>
|
||||
|
||||
<div class="field">
|
||||
<%= form.label :timezone, class: "label" %>
|
||||
<div class="control">
|
||||
<%= form.text_field :timezone , { class: "input"} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control">
|
||||
<button class="button is-link">Submit In</button>
|
||||
<%= link_to "Return to Site index", "/sites", class: "button is-success" %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
<div id="<%= dom_id site %>">
|
||||
<p>
|
||||
<strong>Name:</strong>
|
||||
<%= site.name %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Domain:</strong>
|
||||
<%= site.domain %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Gateway:</strong>
|
||||
<%= site.gateway %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Nameserver:</strong>
|
||||
<%= site.nameserver %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Network:</strong>
|
||||
<%= site.network %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Netmask:</strong>
|
||||
<%= site.netmask %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Server:</strong>
|
||||
<%= site.server_ip %>:<%= site.server_port %>:
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
json.extract! site, :id, :name, :domain, :gateway, :nameserver, :network, :netmask, :created_at, :updated_at
|
||||
json.url site_url(site, format: :json)
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
<tr>
|
||||
<td><%= site.name %></td>
|
||||
<td><%= site.description %></td>
|
||||
<td> <%= button_to "Edit", edit_site_path(site), method: :get, class: "button is-small is-primary" %></tr>
|
||||
</tr>
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
<%= hidden_field_tag :direction, params[:direction] %>
|
||||
<%= hidden_field_tag :sort, params[:sort] %>
|
||||
|
||||
<table class="table table-striped table-bordered table-condensed sortable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 200px;">Nom</th>
|
||||
<th style="width: 40px;"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% @sites.each do |site| %>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<%= link_to site.name, edit_site_path(site), :remote => true %>
|
||||
</td>
|
||||
<td valign="top">
|
||||
<%= site.description %>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
<h1 class="title">Editing Site: <%= @site.name %></h1>
|
||||
<%= render "form", site: @site %>
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
<p style="color: green"><%= notice %></p>
|
||||
|
||||
<h1 class="title">Sites</h1>
|
||||
<%= button_to "New Site", new_site_path, method: :get, class: "button is-small is-primary" %></tr>
|
||||
<div class="box">
|
||||
<table id="sites" class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="1">Site Name</th>
|
||||
<th colspan="1"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% @sites.each do |site| %>
|
||||
<%= render :partial => 'siteraw', :locals => { :site => site} %>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
json.array! @sites, partial: "sites/site", as: :site
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<h1>New site</h1>
|
||||
|
||||
<%= render "form", site: @site %>
|
||||
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<%= link_to "Back to sites", sites_path %>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
<p style="color: green"><%= notice %></p>
|
||||
|
||||
<%= render @site %>
|
||||
|
||||
<div>
|
||||
<%= link_to "Edit this site", edit_site_path(@site) %> |
|
||||
<%= link_to "Back to sites", sites_path %>
|
||||
|
||||
<%= button_to "Destroy this site", @site, method: :delete %>
|
||||
</div>
|
||||
|
|
@ -0,0 +1 @@
|
|||
json.partial! "sites/site", site: @site
|
||||
|
|
@ -1,7 +1,13 @@
|
|||
Rails.application.routes.draw do
|
||||
devise_for :users
|
||||
resources :scripts
|
||||
root 'home#index'
|
||||
resources :sites
|
||||
resources :accounts
|
||||
resources :installtemplates
|
||||
resources :hosts
|
||||
resources :logs
|
||||
|
||||
root 'pages#index'
|
||||
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
|
||||
|
||||
# Reveal health status on /up that returns 200 if the app boots with no exceptions, otherwise 500.
|
||||
|
|
@ -10,4 +16,23 @@ Rails.application.routes.draw do
|
|||
|
||||
# Defines the root path route ("/")
|
||||
# root "posts#index"
|
||||
|
||||
# Webui call
|
||||
get '/host/ipxe', to: "hosts#generate_boot"
|
||||
get '/host/install', to: "hosts#generate_install"
|
||||
get '/host/postinstall', to: "hosts#generate_postinstall"
|
||||
|
||||
|
||||
# Machine Call
|
||||
get '/api/host/ipxe', to: "engine#generate_boot"
|
||||
get '/api/host/install', to: "engine#generate_install"
|
||||
get '/api/host/postinstall', to: "engine#generate_postinstall"
|
||||
get '/api/host/installed', to: "engine#generate_installed", defaults: { format: 'text' }
|
||||
get '/engine/global', to: "engine#generateglobal", defaults: { format: 'text' }
|
||||
get '/api/host/cloudinit/:uuid/user-data', to: "engine#generate_install", defaults: { format: 'text' }
|
||||
get '/api/host/cloudinit/:uuid/meta-data', to: "engine#generate_metadata", defaults: { format: 'text' }
|
||||
get '/api/host/cloudinit/:uuid/vendor-data', to: "engine#generate_metadata", defaults: { format: 'text' }
|
||||
|
||||
|
||||
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue