[Title] support remote build using email
authorjiil.hyoun <jiil.hyoun@samsung.com>
Thu, 8 Nov 2012 10:40:35 +0000 (19:40 +0900)
committerjiil.hyoun <jiil.hyoun@samsung.com>
Thu, 8 Nov 2012 10:40:35 +0000 (19:40 +0900)
[Type] Enhancement
[Module] Toolchain /
[Priority] Major
[Jira#]
[Redmine#]
[Problem]
[Cause]
[Solution]
[TestCase]

Change-Id: I2cafde8edef80dd52eb0b77e69b30f7c23b7bcf1

src/build_server/BuildServer.rb
src/build_server/CommonJob.rb
src/build_server/RemoteBuilder.rb
src/build_server/SocketJobRequestListener.rb

index 30133b23fe8ef9a762238e89cc85b6d959535ef6..88e199a4da1d61740c0a6976264ee71eb02d4175 100644 (file)
@@ -606,7 +606,7 @@ class BuildServer
                        if not row.nil?  then
                                return row['id']
                        else
-                               return -1 
+                               return -1
                        end
                end
 
@@ -614,6 +614,19 @@ class BuildServer
        end
 
 
+       def get_email_using_user_id(user_id)
+               get_db_connection() do |db|
+                       row = db.select_one("SELECT * FROM users WHERE id='#{user_id}'")
+                       if not row.nil?  then
+                               return row['email']
+                       else
+                               return -1
+                       end
+               end
+               return -1
+       end
+
+
        def qualify_admin_to_access(prj_id)
                get_db_connection() do |db|
                        row = db.select_one("SELECT * FROM group_project_accesses WHERE group_id=0 and prj_id=#{prj_id}")
index e8faf78f04a870dc120aa173fcecbb7b8b9cc566..b46b40696cdcd15f6ecacb5c86c1e86182fc6e87 100644 (file)
@@ -34,7 +34,7 @@ require "utils.rb"
 
 class CommonJob
 
-       attr_accessor :id, :server, :log, :os, :type, :pre_jobs, :status
+       attr_accessor :id, :server, :log, :os, :type, :pre_jobs, :status, :user_id
 
        # initialize
        public
@@ -119,10 +119,9 @@ class CommonJob
                @project = project
        end
 
-
        public
-       def set_user_id( id )
-               @user_id = id
+       def get_user_email
+               return @server.get_email_using_user_id(@user_id)
        end
 
 
index 6f44d53caa250bbb947943f5b58a4072743b7c78..1d03db6b7bb7fcf205b75b4abe531113be46b729 100644 (file)
@@ -63,7 +63,7 @@ class RemoteBuilder
                # build
                ret = build(@job.get_project().repository, @job.source_path, @job.os,
                                        @job.is_rev_build_check_job(), @job.git_commit, @job.no_reverse,
-                                       local_pkgs, @job.get_project().dist_name )
+                                       local_pkgs, @job.get_project().dist_name,@job.get_user_email )
 
                # reset job
                @job = nil
@@ -75,7 +75,7 @@ class RemoteBuilder
 
 
        # build
-       def build( git_repos, source_path, os, is_rev_build, srcinfo, no_reverse, local_pkgs, dist_name )
+       def build( git_repos, source_path, os, is_rev_build, srcinfo, no_reverse, local_pkgs, dist_name, user_email )
                @log.info( "Start to build on remote server...", Log::LV_USER )
 
                # create unique dock number
@@ -99,8 +99,8 @@ class RemoteBuilder
 
                # send build request
                @log.info( "Sending build request to remote server...", Log::LV_USER )
-               result, result_files = send_build_request(git_repos, os,
-                                                                                                 is_rev_build, srcinfo, no_reverse, local_pkgs, dock, dist_name)
+               result, result_files = send_build_request(git_repos, os, is_rev_build,
+                                                                                                 srcinfo, no_reverse, local_pkgs, dock, dist_name, user_email)
 
                @log.info( "Receiving log file from remote server...", Log::LV_USER )
                if not receive_file_from_remote( "#{source_path}/../remote_log", dock ) then
@@ -163,7 +163,7 @@ class RemoteBuilder
 
        # send build request
        protected
-       def send_build_request(git_repos, os, is_rev_build, commit, no_reverse, local_pkgs, dock = "0", dist_name="BASE")
+       def send_build_request(git_repos, os, is_rev_build, commit, no_reverse, local_pkgs, dock, dist_name, user_email)
                result_files = []
 
                client = BuildCommClient.create( @addr, @port, @log )
@@ -176,13 +176,13 @@ class RemoteBuilder
                local_pkg_names = local_pkgs.map { |path| File.basename(path) }
 
                # send
-               # format: BUILD|GIT|repository|passwd|os|async|no_reverse|internal|rev-build|commit|pkgs|dock_num|dist_name
-               # value : BUILD|GIT|repository|      |os|NO   |no_reverse|YES     |rev-build|commit|pkgs|dock_num|dist_name
+               # format: BUILD|GIT|repository|passwd|os|async|no_reverse|internal|rev-build|commit|pkgs|dock_num|dist_name|user_email
+               # value : BUILD|GIT|repository|      |os|NO   |no_reverse|YES     |rev-build|commit|pkgs|dock_num|dist_name|user_email
                result = true
                commit = commit.nil? ? "":commit
                pkg_list = local_pkg_names.join(",")
                rev = is_rev_build ? "YES":"NO"
-               msg = "BUILD|GIT|#{git_repos}||#{os}|NO|#{no_reverse}|YES|#{rev}|#{commit}|#{pkg_list}|#{dock}|#{dist_name}"
+               msg = "BUILD|GIT|#{git_repos}||#{os}|NO|#{no_reverse}|YES|#{rev}|#{commit}|#{pkg_list}|#{dock}|#{dist_name}|#{user_email}"
                result = client.send( msg )
                if not result then
                        @log.error( "Communication failed! #{client.get_error_msg()}", Log::LV_USER)
index 1ca0714176a53e77e4f316cfef1f664635ef434e..51b66ceab48832cb3aa8f49e1fa6b4b74d8654b5 100644 (file)
@@ -277,7 +277,7 @@ class SocketJobRequestListener
                # check user email
                user_id = @parent_server.check_user_id_from_email( user_email )
                if user_id != -1 then
-                       new_job.set_user_id( user_id )
+                       new_job.user_id = user_id
                else
                        BuildCommServer.send_begin(req)
                        req.puts "Error: Cannot find the user with \"#{user_email}\"!"