[Title] add register command for pkg-cli
authorhataejun <taejun.ha@samsung.com>
Thu, 7 Mar 2013 10:12:46 +0000 (19:12 +0900)
committerhataejun <taejun.ha@samsung.com>
Thu, 7 Mar 2013 10:12:46 +0000 (19:12 +0900)
[Type]
[Module]
[Priority]
[Jira#]
[Redmine#] 7082
[Problem]
[Cause]
[Solution]
[TestCase]

Change-Id: I160b3a507f0e52606798366ec6b893fd054c3e2a

14 files changed:
build-svr
pkg-cli
src/build_server/BuildJob.rb
src/build_server/BuildServer.rb
src/build_server/BuildServerController.rb
src/build_server/BuildServerOptionParser.rb
src/build_server/DistributionManager.rb
src/build_server/MultiBuildJob.rb
src/build_server/RegisterPackageJob.rb
src/pkg_server/SocketRegisterListener.rb
src/pkg_server/client.rb
src/pkg_server/clientOptParser.rb
test/build-server.basic1/buildsvr.init
test/build-server.basic1/pkgsvr.init

index fc9a98f10e5e8de1d0ebd58a346283d32b0031e9..12306e94e030fc69d2102481c057ebc3a6cf8f88 100755 (executable)
--- a/build-svr
+++ b/build-svr
@@ -172,7 +172,7 @@ begin
                pkgsvr_url = option[:url]
                pkgsvr_addr = svr_result[0]
                pkgsvr_port = svr_result[1]
-               BuildServerController.add_distribution( option[:name], option[:dist], pkgsvr_url, pkgsvr_addr, pkgsvr_port )
+               BuildServerController.add_distribution( option[:name], option[:dist], pkgsvr_url, pkgsvr_addr, pkgsvr_port, option[:passwd] )
 
        when "remove-dist"
                BuildServerController.remove_distribution( option[:name], option[:dist] )
diff --git a/pkg-cli b/pkg-cli
index 0a9717c6bea90230ba938ee7d926e047c5b72187..9917496a5ce2df4cea427fc5211509dacd35954e 100755 (executable)
--- a/pkg-cli
+++ b/pkg-cli
@@ -149,6 +149,9 @@ when "install-dep" then
        ret = ret.strip
        ret[-3..-1] = ""
        puts ret
+when "register" then
+       client = Client.new( nil, nil, nil )
+       client.register(option[:address], option[:dist], option[:pkg], option[:passwd])
 else
        raise RuntimeError, "Input is incorrect : #{option[:cmd]}"
 end
index 18a98cc23ce51f908d4fa3ed53f03712e484a5b6..30a3892a6c31a8b612c7aeae503c70fc3b49aa9c 100644 (file)
@@ -64,10 +64,12 @@ class BuildJob < CommonJob
                        @pkgsvr_url = @server.distmgr.get_distribution(project.dist_name).pkgsvr_url
                        @pkgsvr_ip = @server.distmgr.get_distribution(project.dist_name).pkgsvr_ip
                        @pkgsvr_port = @server.distmgr.get_distribution(project.dist_name).pkgsvr_port
+                       @pkgsvr_password = @server.distmgr.get_distribution(project.dist_name).pkgsvr_password
                else
                        @pkgsvr_url = ""
                        @pkgsvr_ip = ""
                        @pkgsvr_port = ""
+                       @pkgsvr_password = ""
                end
 
                # this item will be initialized on pre-verify
@@ -1035,7 +1037,7 @@ class BuildJob < CommonJob
 
                # upload
                u_client = Client.new( @pkgsvr_url, nil, @log )
-               snapshot = u_client.upload( @pkgsvr_ip, @pkgsvr_port, binpkg_path_list, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd)
+               snapshot = u_client.upload( @pkgsvr_ip, @pkgsvr_port, binpkg_path_list, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd, @pkgsvr_password)
 
                if snapshot.nil? then
                        @log.info( "Upload failed...", Log::LV_USER)
index 041f7ce9aece828f62393f142ed4022e5f262391..e512fac232bd0af3f75e092d71027ef654076fe9 100644 (file)
@@ -569,7 +569,10 @@ class BuildServer
 
        def load_migrate_list
                if @db_dsn =~ /^Mysql/i then
-                       @db_migrate[2]=["ALTER TABLE jobs CHANGE COLUMN id  id INTEGER AUTO_INCREMENT NOT NULL"]
+                       @db_migrate[1]=["ALTER TABLE jobs CHANGE COLUMN id  id INTEGER AUTO_INCREMENT NOT NULL", 
+                                                       "ALTER TABLE distributions ADD pkgsvr_password VARCHAR(64)"]
+               else
+                       @db_migrate[1]=["ALTER TABLE distributions ADD pkgsvr_password VARCHAR(64)"]
                end
        end
 
index eabded1645f4a4c1e0472dd508bca0dba556232c..8a794432ead06d5bb0e1a924cdd721e708403fe2 100644 (file)
@@ -337,13 +337,13 @@ class BuildServerController
 
 
        # add distribution
-       def self.add_distribution( id, dist_name, pkgsvr_url, pkgsvr_ip, pkgsvr_port )
+       def self.add_distribution( id, dist_name, pkgsvr_url, pkgsvr_ip, pkgsvr_port, pkgsvr_password )
                # get server
                server = get_server(id)
                migrate_db(server)
 
                # add
-               if server.distmgr.add_distribution( dist_name, pkgsvr_url, pkgsvr_ip, pkgsvr_port ) then
+               if server.distmgr.add_distribution( dist_name, pkgsvr_url, pkgsvr_ip, pkgsvr_port, pkgsvr_password ) then
                        puts "Distribution is added successfully!"
                        return true
                else
index 455a48b289855ab6d38c7dd6e75c658fe4738d80..53f252b1a1053a3b19a1273797634c7159b963b0 100644 (file)
@@ -41,7 +41,7 @@ class BuildServerUsage
        REMOVE_SVR= "build-svr remove-svr -n <server name> -d <friend server address>"
        ADD_OS= "build-svr add-os -n <server name> -o <os>"
        REMOVE_OS="build-svr remove-os -n <server name> -o <os>"
-       ADD_DIST= "build-svr add-dist -n <server name> -D <distribution name> -u <package server url> -d <package server address>"
+       ADD_DIST= "build-svr add-dist -n <server name> -D <distribution name> -u <package server url> -d <package server address> -w <password>"
        REMOVE_DIST="build-svr remove-dist -n <server name> -D <distribution name>"
        LOCK_DIST="build-svr lock-dist -n <server name> -D <distribution name>"
        UNLOCK_DIST="build-svr unlock-dist -n <server name> -D <distribution name>"
@@ -118,6 +118,7 @@ def option_error_check( options )
                if options[:name].nil? or options[:name].empty? or
                        options[:dist].nil? or options[:dist].empty? or
                        options[:url].nil? or options[:url].empty? or
+                       options[:passwd].nil? or options[:passwd].empty? or
                        options[:domain].nil? or options[:domain].empty? then
                        raise ArgumentError, "Usage: " + BuildServerUsage::ADD_DIST
                end
index 255049623b0be3a0fc7b0ca390b76ab255cd1365..16083ba0fb5c50f1791e3fc1a8ca48289dbc8492 100644 (file)
@@ -36,14 +36,15 @@ require "RegisterPackageJob.rb"
 require "packageServer.rb"
 
 class PackageDistribution
-       attr_accessor :name, :pkgsvr_url, :pkgsvr_ip, :pkgsvr_port, :status, :description, :id
+       attr_accessor :name, :pkgsvr_url, :pkgsvr_ip, :pkgsvr_port, :pkgsvr_password, :status, :description, :id
 
-       def initialize( name, pkgsvr_url, pkgsvr_ip, pkgsvr_port, status )
+       def initialize( name, pkgsvr_url, pkgsvr_ip, pkgsvr_port, pkgsvr_password, status )
                @id = -1
                @name = name
                @pkgsvr_url = pkgsvr_url
                @pkgsvr_ip = pkgsvr_ip
                @pkgsvr_port = pkgsvr_port
+               @pkgsvr_password = pkgsvr_password
                @status = status
                @description = ""
        end
@@ -55,6 +56,7 @@ class PackageDistribution
                        name VARCHAR(32) NOT NULL UNIQUE, 
                        pkgsvr_url VARCHAR(256), 
                        pkgsvr_addr VARCHAR(64), 
+                       pkgsvr_password VARCHAR(64), 
                        status VARCHAR(32) NOT NULL DEFAULT 'OPEN',
                        description VARCHAR(256) ) #{post_fix}"
        end
@@ -89,7 +91,7 @@ class PackageDistribution
        def self.load_row(row)
                pkgsvr_ip = row['pkgsvr_addr'].split(":")[0]
                pkgsvr_port = row['pkgsvr_addr'].split(":")[1].to_i
-               new_obj = new(row['name'], row['pkgsvr_url'], pkgsvr_ip, pkgsvr_port, row['status'])
+               new_obj = new(row['name'], row['pkgsvr_url'], pkgsvr_ip, pkgsvr_port, row['pkgsvr_password'], row['status'])
                new_obj.description = row['description']
                new_obj.id = row['id']
 
@@ -101,9 +103,9 @@ class PackageDistribution
                dist_addr = @pkgsvr_ip + ":" + @pkgsvr_port.to_s
                row = db.select_one("SELECT * FROM distributions WHERE name='#{@name}'")
                if row.nil? then
-                       db.do "INSERT INTO distributions(name, pkgsvr_url, pkgsvr_addr, status, description) VALUES ('#{@name}','#{@pkgsvr_url}','#{dist_addr}','#{@status}','#{@description}')"
+                       db.do "INSERT INTO distributions(name, pkgsvr_url, pkgsvr_addr, pkgsvr_password, status, description) VALUES ('#{@name}','#{@pkgsvr_url}','#{dist_addr}','#{@pkgsvr_password}','#{@status}','#{@description}')"
                else
-                       db.do "UPDATE distributions SET pkgsvr_url='#{@pkgsvr_url}', pkgsvr_addr='#{dist_addr}', status='#{@status}', description='#{@description}' WHERE name='#{@name}'"
+                       db.do "UPDATE distributions SET pkgsvr_url='#{@pkgsvr_url}', pkgsvr_addr='#{dist_addr}', pkgsvr_password='#{@pkgsvr_password}', status='#{@status}', description='#{@description}' WHERE name='#{@name}'"
                end
        end
 
@@ -152,14 +154,14 @@ class DistributionManager
 
 
        # add
-       def add_distribution(name, pkgsvr_url, pkgsvr_ip, pkgsvr_port)
+       def add_distribution(name, pkgsvr_url, pkgsvr_ip, pkgsvr_port, pkgsvr_password)
                @server.get_db_connection() do |db|
                        if not get_distribution_internal(name, db).nil? then
                                @server.log.info "The distribution \"#{name}\" already exists on server"
                                @server.log.error "Adding distribution failed!"
                                return false
                        end
-                       new_dist = PackageDistribution.new(name, pkgsvr_url, pkgsvr_ip, pkgsvr_port, "OPEN")
+                       new_dist = PackageDistribution.new(name, pkgsvr_url, pkgsvr_ip, pkgsvr_port, pkgsvr_password, "OPEN")
                        new_dist.save(db)
                end
                @server.log.info "Added a new distribution \"#{name}\""
index 7eca96791f3a3ad606395814ee8730665013fbf7..f387ccec6544b891decd208eebbb0cd5043793d7 100644 (file)
@@ -55,6 +55,7 @@ class MultiBuildJob < CommonJob
                @pkgsvr_url = nil
                @pkgsvr_ip = nil
                @pkgsvr_port = nil
+               @pkgsvr_password = nil
        end
 
 
@@ -129,6 +130,7 @@ class MultiBuildJob < CommonJob
                @pkgsvr_url = @server.distmgr.get_distribution(first_project.dist_name).pkgsvr_url
                @pkgsvr_ip = @server.distmgr.get_distribution(first_project.dist_name).pkgsvr_ip
                @pkgsvr_port = @server.distmgr.get_distribution(first_project.dist_name).pkgsvr_port
+               @pkgsvr_password = @server.distmgr.get_distribution(first_project.dist_name).pkgsvr_password
                @pkgsvr_client =  Client.new(@pkgsvr_url, @job_working_dir, @log)
 
                return true
@@ -414,7 +416,7 @@ class MultiBuildJob < CommonJob
 
                # upload
                u_client = Client.new( @pkgsvr_url, nil, @log )
-               snapshot = u_client.upload( @pkgsvr_ip, @pkgsvr_port, binpkg_path_list, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd)
+               snapshot = u_client.upload( @pkgsvr_ip, @pkgsvr_port, binpkg_path_list, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd, @pkgsvr_password)
 
                if snapshot.nil? then
                        @log.info( "Upload failed...", Log::LV_USER)
index 97efea1a174a77430d01093a3687ebd42e38dd83..73c5298afb8ad78c1862da2ab96177350ba7a501 100644 (file)
@@ -60,10 +60,12 @@ class RegisterPackageJob < CommonJob
                        @pkgsvr_url = @server.distmgr.get_distribution(project.dist_name).pkgsvr_url
                        @pkgsvr_ip = @server.distmgr.get_distribution(project.dist_name).pkgsvr_ip
                        @pkgsvr_port = @server.distmgr.get_distribution(project.dist_name).pkgsvr_port
+                       @pkgsvr_password = @server.distmgr.get_distribution(project.dist_name).pkgsvr_password
                else
                        @pkgsvr_url = @server.distmgr.get_distribution(dist_name).pkgsvr_url
                        @pkgsvr_ip = @server.distmgr.get_distribution(dist_name).pkgsvr_ip
                        @pkgsvr_port = @server.distmgr.get_distribution(dist_name).pkgsvr_port
+                       @pkgsvr_password = @server.distmgr.get_distribution(dist_name).pkgsvr_password
                end
 
                @local_path=local_path
@@ -501,7 +503,7 @@ class RegisterPackageJob < CommonJob
 
                # upload
                u_client = Client.new( @pkgsvr_url, nil, @log )
-               snapshot = u_client.upload( @pkgsvr_ip, @pkgsvr_port, binpkg_path_list, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd)
+               snapshot = u_client.upload( @pkgsvr_ip, @pkgsvr_port, binpkg_path_list, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd, @pkgsvr_password)
 
                if snapshot.nil? then
                        @log.info( "Upload failed...", Log::LV_USER)
index 9982274dffe769dde0de7772ff565a0c32ef0038..14ac7a33c1467861868fc8cd139942e4e11207fb 100644 (file)
@@ -163,19 +163,20 @@ class SocketRegisterListener
                BuildCommServer.send_begin(req)
 
                tok = line.split("|").map { |x| x.strip }
-               if tok.count < 3 then
+               if tok.count < 4 then
                        @log.error "Received Wrong REQ : #{line}"
                        BuildCommServer.send(req, "ERROR|Invalid REQ format")
                        return
                end
                dist_name = tok[1].strip
+               password = tok[2].strip
 
-               if tok[2].start_with? "DOCK" then
-                       dock_name = tok[3]
-                       idx = 4
+               if tok[3].start_with? "DOCK" then
+                       dock_name = tok[4]
+                       idx = 5
                else
                        dock_name = ""
-                       idx = 2
+                       idx = 3
                end
 
                file_path_list = []
@@ -188,6 +189,28 @@ class SocketRegisterListener
                        end
                        idx = idx + 1
                end
+               # password check 
+               if @parent_server.passwd.eql? password then
+                       @log.info "Register command password check pass"
+               else
+                       @log.error "Received register command, but passwd mismatched : [#{password}]"
+                       BuildCommServer.send(req,"ERROR|Password mismatched!")
+                       BuildCommServer.send_end(req)
+                       BuildCommServer.disconnect(req)
+                       return 
+               end
+
+               BuildCommServer.send(req, "WAITFORUPLOAD")
+               req_line = req.gets
+               if req_line.nil? or not req_line.strip.eql?("REGISTERCONTINUE") then 
+                       BuildCommServer.send(req,"ERROR|Invalid message received : [#{req_line}]")
+                       BuildCommServer.send_end(req)
+                       BuildCommServer.disconnect(req)
+                       return 
+               else
+                       @log.info "register file is received successfully"
+               end
+
                # register mutex
                $register_mutex.synchronize do
                        begin
@@ -230,7 +253,7 @@ class SocketRegisterListener
                        @log.info "Package server stop flag set"
                        BuildCommServer.send(req,"SUCC")
                else
-                       @log.info "Received stop command, but passwd mismatched : #{passwd}"
+                       @log.error "Received stop command, but passwd mismatched : #{passwd}"
                        BuildCommServer.send(req,"ERROR|Password mismatched!")
                end
                BuildCommServer.send_end(req)
index c30e0cc35fbcfa3a191a77097c930c6e5d2aa7ae..fe53b2bec9b2c184cee0e628e964409bdaef5d25 100644 (file)
@@ -361,9 +361,30 @@ class Client
                return file_local_path
        end
 
+       private
+       def upload_request(ip, port, dock, transporter, binary_path_list)
+               binary_path_list.each do |bpath|
+                       client2 = BuildCommClient.create(ip, port, @log)
+                       begin
+                               if client2.nil? then
+                                       raise RuntimeError, "Failed to create BuildCommClient instance.."
+                               end
+                
+                               @log.info "Send ready REQ..  [UPLOAD]"
+                               result = client2.send("UPLOAD|#{dock}")
+                               if not result then
+                                       raise RuntimeError, "Failed to send ready REQ.."
+                               end
+                               result = client2.send_file(bpath, transporter)
+                       ensure
+                               client2.terminate
+                       end
+               end
+       end
+
        public
        # upload package
-       def upload(ip, port, binary_path_list, ftp_addr=nil, ftp_port=nil, ftp_username=nil, ftp_passwd=nil)
+       def upload(ip, port, binary_path_list, ftp_addr=nil, ftp_port=nil, ftp_username=nil, ftp_passwd=nil, password="")
 
                # check ip and port
                if ip.nil? or port.nil? then
@@ -377,88 +398,88 @@ class Client
                        return nil
                end
 
-               # create unique dock number
-               dock = Utils.create_uniq_name()
-
-               # upload file
-               binary_list = []
-               binary_path_list.each do |bpath|
-                       filename = File.basename(bpath)
-                       client = BuildCommClient.create(ip, port, @log)
-
-                       if client.nil? then
-                               @log.error "Failed to create BuildCommClient instance.."
-                               return nil
-                       end
-
-                       @log.info "Send ready REQ..  [UPLOAD]"
-                       result = client.send("UPLOAD|#{dock}")
-                       if not result then
-                               @log.error "Failed to send ready REQ.."
-                               return nil
-                       end
-
-                       begin
-                               if not ftp_addr.nil? then
-                                       transporter=FileTransferFTP.new(@log, ftp_addr, ftp_port, ftp_username, ftp_passwd)
-                               else
-                                       transporter=FileTransferDirect.new(@log)
-                               end
-
-                               result = client.send_file(bpath, transporter)
-                       rescue => e
-                               @log.error "FTP failed to put file (exception)"
-                               @log.error "#{e.message}"
-                               @log.error e.backtrace.inspect
-                               return nil
+               begin
+                       if not ftp_addr.nil? then
+                               transporter=FileTransferFTP.new(@log, ftp_addr, ftp_port, ftp_username, ftp_passwd)
+                       else
+                               transporter=FileTransferDirect.new(@log)
                        end
-
-                       if not result then
-                               @log.error "FTP failed to put file (result is false)"
+               rescue => e
+                       @log.error "FTP failed to put file (exception)"
+                       @log.error "#{e.message}"
+                       @log.error e.backtrace.inspect
+                       return nil
+               end
+                       
+               binary_list = []
+               binary_path_list.each do |binary_path|
+                       if File.exist? binary_path then
+                               binary_list.push(File.basename(binary_path))
+                       else
+                               @log.error "Binary file does not exist"
                                return nil
                        end
+               end
 
-                       client.terminate
-                       binary_list.push(filename)
+               client = BuildCommClient.create(ip, port, @log)
+               if client.nil? then
+                       puts "Can't access server #{ip}:#{port}"
+                       return nil
                end
 
-               # register file
-               if not binary_list.empty? then
-                       client = BuildCommClient.create(ip, port, @log)
+               begin
+                       # create unique dock number
+                       dock = Utils.create_uniq_name()
+                       
                        dist = get_distribution
                        if dist.empty? then
                                @log.error "Distribution is empty.."
                                return nil
                        end
 
-                       @log.info "Send register message..  [REGISTER|#{dist}|DOCK|#{dock}|#{binary_list.join("|")}]"
+                       @log.info "Send register message..  [REGISTER|#{dist}|#{password}|DOCK|#{dock}|#{binary_list.join("|")}]"
                        snapshot = nil
-                       if client.send "REGISTER|#{dist}|DOCK|#{dock}|#{binary_list.join("|")}" then
-                               result = client.read_lines do |l|
-                                       line = l.split("|")
-                                       if line[0].strip == "ERROR" then
-                                               @log.error l.strip
-                                               break
-                                       elsif line[0].strip == "SUCC" then
-                                               snapshot = line[1].strip
-                                       end
-                               end
 
-                               if not result or snapshot.nil? then
-                                       @log.error "Failed to register! #{client.get_error_msg()}"
+                       client.send "REGISTER|#{dist}|#{password}|DOCK|#{dock}|#{binary_list.join("|")}" 
+
+                       client.read_lines do |line|
+                               if line.eql?("WAITFORUPLOAD") then
+                                       # upload
+                                       thread = Thread.new do
+                                               begin 
+                                                       upload_request(ip, port, dock, transporter, binary_path_list)
+                                               rescue => e
+                                                       puts "Transfering file failed!"
+                                                       puts e.message
+                                               end
+                                       end
+            
+                                       thread.join
+                                       client.send("REGISTERCONTINUE")
+                               elsif line.start_with? "SUCC" then
+                                       snapshot = line.split("|")[1]
+                               elsif line.start_with? "ERROR" then
+                                       @log.error line.strip
                                        return nil
+                               else
+                                       @log.error "Unknown message received : #{l}"
                                end
                        end
-
+               ensure
                        client.terminate
+               end
+
+               if not snapshot.nil? and not snapshot.empty? then
                        snapshot = @server_addr + "/snapshots/" + snapshot
                        @log.info "Registered successfully!  [#{binary_path_list.join("|")}]"
                        if snapshot.empty? then
                                @log.error "Failed to generate snapshot"
                        end
+            
+                       return snapshot
+               else
+                       return nil
                end
-
-               return snapshot
        end
 
        private
@@ -1770,4 +1791,31 @@ class Client
                if attr[0].strip.upcase.eql? "META" then return true
                else return false end
        end
+
+       public
+       def register(address, distribution, pkg_file_path, password)
+               # check file exist
+               if not File.exist? pkg_file_path then
+                       puts "The file does not exist!.. #{pkg_file_path}"
+                       return false
+               end
+    
+               result = Utils.parse_server_addr(address)
+               if result.nil? then
+                       puts "Server address is incorrect. (#{address})"
+                       puts "Tune as following format."
+                       puts " <ip>:<port>"
+                       exit 1
+               end
+               bs_ip = result[0]
+               bs_port = result[1]
+
+               pkg_file_path_list = []
+               pkg_file_path_list.push(pkg_file_path)
+               # set distribution
+               @server_addr = distribution
+               ret = upload(bs_ip, bs_port, pkg_file_path_list, nil, nil, nil, nil, password)
+
+               if ret then @log.info "Snapshot is generated : #{ret}" end
+       end
 end
index fff8924eb614b9825c0df00406e723752322f653..9ca926c0a16079c0b421ec4480739315523df2bf 100644 (file)
@@ -92,6 +92,12 @@ def option_error_check( options )
                        raise ArgumentError, "Usage: pkg-cli install-dep -P <package name> [-o <os>]"
                end
 
+       when "register"
+               if      options[:pkg].nil? or options[:pkg].empty? or options[:address].nil? or options[:address].empty? or
+                               options[:dist].nil? or options[:dist].empty? then
+                       raise ArgumentError, "Usage: pkg-svr register -P <package file path> -d <server address> --dist <distribution name> -w <password>"
+               end
+
        else
                raise ArgumentError, "Input is incorrect : #{options[:cmd]}"
        end
@@ -131,6 +137,7 @@ def option_parse
                + "\t" + "pkg-cli list-lpkg [-l <location>]" + "\n" \
                + "\t" + "pkg-cli build-dep -P <package name> [-o <os>]" + "\n" \
                + "\t" + "pkg-cli install-dep -P <package name> [-o <os>]" + "\n" \
+               + "\t" + "pkg-cli register -P <package file path> -a <server address> -d <distribution name> -w <password>" + "\n" \
                + "\n" + "Options:" + "\n"
 
        optparse = OptionParser.new(nil, 32, ' '*8) do|opts|
@@ -147,6 +154,10 @@ def option_parse
                        options[:os] = os
                end
 
+               opts.on( '-d', '--dist <distribution name>', 'distribution name' ) do |dist|
+                       options[:dist] = dist 
+               end
+
                opts.on( '-u', '--url <server url>', 'package server url: http://127.0.0.1/dibs/unstable' ) do |url|
                        options[:url] = url
                end
@@ -155,6 +166,14 @@ def option_parse
                        options[:loc] = loc
                end
 
+               opts.on( '-w', '--passwd <password>', 'password' ) do |passwd|
+                       options[:passwd] = passwd
+               end
+
+               opts.on( '-a', '--address <server address>', 'package server address : 127.0.0.1:2224' ) do |address|
+                       options[:address] = address
+               end
+
                opts.on( '--trace', 'enable trace dependent packages' ) do
                        options[:t] = true
                end
@@ -172,6 +191,7 @@ def option_parse
                        puts "DIBS(Distributed Intelligent Build System) version " + Utils.get_version()
                        exit
                end
+
        end
 
        cmd = ARGV[0]
@@ -183,6 +203,7 @@ def option_parse
                cmd.eql? "install-file" or cmd.eql? "clean" or
                cmd.eql? "upgrade" or cmd.eql? "check-upgrade" or
                cmd.eql? "build-dep" or cmd.eql? "install-dep" or
+               cmd.eql? "register" or
                cmd =~ /(-v)|(--version)/  or
                cmd =~ /(help)|(-h)|(--help)/  then
 
index 72cf1fe88b3c42840e9e1aaa67e408598bbcde77..39fd9ab1860c907e28b6e30a8c7e1905f4b2236b 100755 (executable)
@@ -24,7 +24,7 @@ mysql -u root -p --password=$DB_PASSWD -h localhost < a
 ${RUBY} ../../../build-svr migrate -n testserver3 --dsn Mysql:testserver3:localhost --dbuser root --dbpassword $DB_PASSWD
 rm -f a
 cd ..
-${RUBY} ../../build-svr add-dist -n testserver3 -D BASE -u `pwd`/pkgsvr01/unstable -d 127.0.0.1:3333
+${RUBY} ../../build-svr add-dist -n testserver3 -D BASE -u `pwd`/pkgsvr01/unstable -d 127.0.0.1:3333 -w score
 ${RUBY} ../../build-svr add-svr -n testserver3 -d 127.0.0.1:2224
 ${RUBY} ../../build-svr add-os -n testserver3 -o ubuntu-32
 ${RUBY} ../../build-svr add-os -n testserver3 -o windows-32
index 6973d9e2f2c9407d564212788bd89a66139e8179..280ee40b3937bb79bfb5fef1ab53a5192c8f5a08 100755 (executable)
@@ -7,4 +7,4 @@ rm -rf `pwd`/pkgsvr01
 ${RUBY} ../../pkg-svr create -n pkgsvr01 -d unstable
 ${RUBY} ../../pkg-svr add-os -n pkgsvr01 -d unstable -o ubuntu-32
 ${RUBY} ../../pkg-svr add-os -n pkgsvr01 -d unstable -o windows-32
-${RUBY} ../../pkg-svr start -n pkgsvr01 -p 3333
+${RUBY} ../../pkg-svr start -n pkgsvr01 -p 3333 -w score