cnvrg 1.4.9.4 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/cnvrg.gemspec +0 -1
- data/lib/cnvrg/cli.rb +46 -39
- data/lib/cnvrg/data.rb +18 -19
- data/lib/cnvrg/datafiles.rb +29 -0
- data/lib/cnvrg/dataset.rb +3 -15
- data/lib/cnvrg/downloader/clients/s3_client.rb +22 -35
- data/lib/cnvrg/helpers.rb +8 -0
- data/lib/cnvrg/version.rb +1 -1
- metadata +4 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7f9ea846489f30df4e7a770ef453e640e3dcaff0176ebbc6a4ae000bfbcba0e8
|
4
|
+
data.tar.gz: 7f5bb7c85aaa16c43834bf705325470bacf8edd2bd342e8d5cf39bd853843136
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 30cc30763ae8758f8526eb8cac1ef559f3e39c649d521112c7f22908226719da771340907c5928f9ab86f3672fc5f37c1b3a2bd6dd09b8d2b1ac10fe809ad9ed
|
7
|
+
data.tar.gz: f1f20925bd2b889676303efbcd657ba063f7bc28274ab074048ccc91a904ebb1046883d8a4854bf77f2c951b88c6b4f75cf468e5221a203a5ac3d0b4692d42c7
|
data/cnvrg.gemspec
CHANGED
data/lib/cnvrg/cli.rb
CHANGED
@@ -167,7 +167,7 @@ module Cnvrg
|
|
167
167
|
super
|
168
168
|
end
|
169
169
|
end
|
170
|
-
desc "data", "
|
170
|
+
desc "data [COMMAND]", "Upload and manage datasets", :hide => false
|
171
171
|
subcommand "data", Data
|
172
172
|
|
173
173
|
desc "job", "manage running jobs", :hide => false
|
@@ -242,13 +242,16 @@ module Cnvrg
|
|
242
242
|
|
243
243
|
map %w(-v --version) => :version
|
244
244
|
|
245
|
-
desc 'api', '
|
245
|
+
desc 'api CNVRG_APPLICATION_URL', 'Set api url, e.g cnvrg --api "https://cnvrg.io/api"'
|
246
246
|
method_option :verify_ssl, :type => :boolean, :aliases => ["-s", "--verify_ssl"], :default => true
|
247
247
|
|
248
248
|
def set_api_url(url)
|
249
249
|
log_handler()
|
250
250
|
log_start(__method__, args, options)
|
251
251
|
home_dir = File.expand_path('~')
|
252
|
+
if url.end_with? "/"
|
253
|
+
url = url.chomp("/")
|
254
|
+
end
|
252
255
|
if !url.end_with? "/api"
|
253
256
|
url = url + "/api"
|
254
257
|
end
|
@@ -356,9 +359,9 @@ module Cnvrg
|
|
356
359
|
end
|
357
360
|
end
|
358
361
|
|
359
|
-
map %w(-api --api) => :set_api_url
|
362
|
+
map %w(api -api --api) => :set_api_url
|
360
363
|
|
361
|
-
desc 'set_default_owner', '
|
364
|
+
desc 'set_default_owner', 'Set default owner'
|
362
365
|
|
363
366
|
def set_default_owner
|
364
367
|
begin
|
@@ -423,7 +426,7 @@ module Cnvrg
|
|
423
426
|
end
|
424
427
|
end
|
425
428
|
|
426
|
-
desc 'set_compression_path', '
|
429
|
+
desc 'set_compression_path', 'Set compression path'
|
427
430
|
method_option :reset, :type => :boolean, :aliases => ["-r", "--reset"], :default => false
|
428
431
|
|
429
432
|
def set_compression_path(*compression_path)
|
@@ -765,7 +768,7 @@ module Cnvrg
|
|
765
768
|
end
|
766
769
|
end
|
767
770
|
|
768
|
-
desc 'data init', 'Init dataset directory'
|
771
|
+
desc 'data init', 'Init dataset directory', :hide => true
|
769
772
|
method_option :public, :type => :boolean, :aliases => ["-p", "--public"], :default => false
|
770
773
|
|
771
774
|
def init_data(public, bucket: nil)
|
@@ -804,7 +807,7 @@ module Cnvrg
|
|
804
807
|
exit(1)
|
805
808
|
end
|
806
809
|
end
|
807
|
-
desc 'data delete', 'delete dataset'
|
810
|
+
desc 'data delete', 'delete dataset', :hide => true
|
808
811
|
def delete_data(dataset_slug)
|
809
812
|
begin
|
810
813
|
verify_logged_in(false)
|
@@ -829,7 +832,7 @@ module Cnvrg
|
|
829
832
|
end
|
830
833
|
end
|
831
834
|
|
832
|
-
desc 'data verify', 'Verify datasets'
|
835
|
+
desc 'data verify', 'Verify datasets', :hide => true
|
833
836
|
method_option :timeout, :type => :numeric, :aliases => ["-t", "--timeout"], :desc => "Time to wait before returning final answer", :default => 15
|
834
837
|
|
835
838
|
def verify_datasets(dataset_titles, timeout=0)
|
@@ -848,7 +851,7 @@ module Cnvrg
|
|
848
851
|
end
|
849
852
|
end
|
850
853
|
|
851
|
-
desc 'data clone', 'Clone dataset'
|
854
|
+
desc 'data clone', 'Clone dataset', :hide => true
|
852
855
|
method_option :commit, :type => :string, :aliases => ["-c", "--commit"], :default => ""
|
853
856
|
method_option :only_tree, :type => :boolean, :aliases => ["-t", "--tree"], :default => false
|
854
857
|
method_option :query, :type => :string, :aliases => ["-q", "--query"], :default => nil
|
@@ -884,7 +887,10 @@ module Cnvrg
|
|
884
887
|
@files = Cnvrg::Datafiles.new(owner, slug, dataset: @dataset)
|
885
888
|
log_message("Downloading files", Thor::Shell::Color::BLUE)
|
886
889
|
if @dataset.softlinked?
|
887
|
-
|
890
|
+
@files.cp_ds
|
891
|
+
Cnvrg::CLI.log_message("Clone finished successfully", Thor::Shell::Color::GREEN)
|
892
|
+
@dataset.write_success
|
893
|
+
return
|
888
894
|
end
|
889
895
|
|
890
896
|
if only_tree
|
@@ -903,6 +909,7 @@ module Cnvrg
|
|
903
909
|
:total => files_count,
|
904
910
|
:autofinish => true)
|
905
911
|
|
912
|
+
|
906
913
|
while files['keys'].length > 0
|
907
914
|
Cnvrg::Logger.log_info("download multiple files, #{downloaded_files.size} files downloaded")
|
908
915
|
@files.download_multiple_files_s3(files, @dataset.local_path, progressbar: progressbar, read_only: read)
|
@@ -933,7 +940,7 @@ module Cnvrg
|
|
933
940
|
end
|
934
941
|
end
|
935
942
|
|
936
|
-
desc 'data clone_query', 'Clone dataset _query'
|
943
|
+
desc 'data clone_query', 'Clone dataset _query', :hide => true
|
937
944
|
method_option :query, :type => :string, :aliases => ["-q", "--query"], :default => ""
|
938
945
|
def clone_data_query(dataset_url,query=nil)
|
939
946
|
begin
|
@@ -1074,7 +1081,7 @@ module Cnvrg
|
|
1074
1081
|
end
|
1075
1082
|
end
|
1076
1083
|
|
1077
|
-
desc 'data download', 'pull data'
|
1084
|
+
desc 'data download', 'pull data', :hide => true
|
1078
1085
|
method_option :verbose, :type => :boolean, :aliases => ["-v"], :default => false
|
1079
1086
|
method_option :sync, :type => :boolean, :aliases => ["-s"], :default => false
|
1080
1087
|
|
@@ -1432,7 +1439,7 @@ module Cnvrg
|
|
1432
1439
|
end
|
1433
1440
|
|
1434
1441
|
|
1435
|
-
desc 'data upload', '
|
1442
|
+
desc 'data upload', 'Upload files from local dataset directory to remote server', :hide => true
|
1436
1443
|
method_option :ignore, :type => :array, :aliases => ["-i", "--i"], :desc => "ignore following files"
|
1437
1444
|
method_option :verbose, :type => :boolean, :aliases => ["-v"], :default => false
|
1438
1445
|
method_option :sync, :type => :boolean, :aliases => ["-s"], :default => false
|
@@ -1630,7 +1637,7 @@ module Cnvrg
|
|
1630
1637
|
|
1631
1638
|
end
|
1632
1639
|
|
1633
|
-
desc 'data list', 'List all dataset you currently have'
|
1640
|
+
desc 'data list', 'List all dataset you currently have', :hide => true
|
1634
1641
|
|
1635
1642
|
def list_dataset
|
1636
1643
|
verify_logged_in(false)
|
@@ -1652,7 +1659,7 @@ module Cnvrg
|
|
1652
1659
|
|
1653
1660
|
end
|
1654
1661
|
|
1655
|
-
desc 'data queries', 'List all data search queries you currently have'
|
1662
|
+
desc 'data queries', 'List all data search queries you currently have', :hide => true
|
1656
1663
|
|
1657
1664
|
def queries
|
1658
1665
|
verify_logged_in(false)
|
@@ -1663,7 +1670,7 @@ module Cnvrg
|
|
1663
1670
|
print_table(result)
|
1664
1671
|
end
|
1665
1672
|
|
1666
|
-
desc 'data download_tags_yaml', 'Download dataset tags yml
|
1673
|
+
desc 'data download_tags_yaml', 'Download dataset tags yml files in current directory', :hide => true
|
1667
1674
|
|
1668
1675
|
def download_tags_yaml
|
1669
1676
|
verify_logged_in(false)
|
@@ -1678,7 +1685,7 @@ module Cnvrg
|
|
1678
1685
|
end
|
1679
1686
|
end
|
1680
1687
|
|
1681
|
-
desc 'data query_files', 'List all data search queries you currently have'
|
1688
|
+
desc 'data query_files', 'List all data search queries you currently have', :hide => true
|
1682
1689
|
def query_files(query)
|
1683
1690
|
verify_logged_in(false)
|
1684
1691
|
log_start(__method__, args, options)
|
@@ -1689,7 +1696,7 @@ module Cnvrg
|
|
1689
1696
|
print_table(result)
|
1690
1697
|
end
|
1691
1698
|
|
1692
|
-
desc 'data commits', 'List all commits for a specific dataset'
|
1699
|
+
desc 'data commits', 'List all commits for a specific dataset', :hide => true
|
1693
1700
|
|
1694
1701
|
def list_dataset_commits()
|
1695
1702
|
verify_logged_in(true)
|
@@ -1704,7 +1711,7 @@ module Cnvrg
|
|
1704
1711
|
|
1705
1712
|
end
|
1706
1713
|
|
1707
|
-
desc 'commits', 'List all commits for a specific
|
1714
|
+
desc 'commits', 'List all commits for a specific Project'
|
1708
1715
|
|
1709
1716
|
def list_commits()
|
1710
1717
|
verify_logged_in(true)
|
@@ -1774,7 +1781,7 @@ module Cnvrg
|
|
1774
1781
|
|
1775
1782
|
end
|
1776
1783
|
|
1777
|
-
desc 'clone', 'Clone project'
|
1784
|
+
desc 'clone PROJECT_URL', 'Clone project'
|
1778
1785
|
method_option :remote, :type => :boolean, :aliases => ["-r", "--r"], :default => false
|
1779
1786
|
method_option :commit, :type => :string, :aliases => ["-c", "--c"], :default => nil
|
1780
1787
|
|
@@ -1956,7 +1963,7 @@ module Cnvrg
|
|
1956
1963
|
:direct=>false, :force =>force, :sync =>true, :tags =>tags, :parallel => parallel
|
1957
1964
|
|
1958
1965
|
end
|
1959
|
-
desc 'upload_data_new', 'upload_data_new'
|
1966
|
+
desc 'upload_data_new', 'upload_data_new', :hide => true
|
1960
1967
|
method_option :verbose, :type => :boolean, :aliases => ["-v"], :default => false
|
1961
1968
|
method_option :new_branch, :type => :boolean, :aliases => ["-nb"], :desc => "create new branch of commits"
|
1962
1969
|
method_option :force, :type => :boolean, :aliases => ["-f","--force"], :default => false
|
@@ -2005,7 +2012,7 @@ module Cnvrg
|
|
2005
2012
|
end
|
2006
2013
|
end
|
2007
2014
|
|
2008
|
-
desc 'start_commit', 'start data commit'
|
2015
|
+
desc 'start_commit', 'start data commit', :hide => true
|
2009
2016
|
method_option :new_branch, :type => :boolean, :aliases => ["-nb"], :desc => "create new branch of commits"
|
2010
2017
|
method_option :direct, :type => :boolean, :aliases => ["-d", "--direct"], :desc => "was called directed", :default => true
|
2011
2018
|
method_option :force, :type => :boolean, :aliases => ["-f", "--force"], :default => false
|
@@ -2039,7 +2046,7 @@ module Cnvrg
|
|
2039
2046
|
end
|
2040
2047
|
|
2041
2048
|
|
2042
|
-
desc 'end_commit', 'start data commit'
|
2049
|
+
desc 'end_commit', 'start data commit', :hide => true
|
2043
2050
|
method_option :new_branch, :type => :boolean, :aliases => ["-nb"], :desc => "create new branch of commits"
|
2044
2051
|
method_option :force, :type => :boolean, :aliases => ["-f","--force"], :default => false
|
2045
2052
|
|
@@ -2066,7 +2073,7 @@ module Cnvrg
|
|
2066
2073
|
end
|
2067
2074
|
end
|
2068
2075
|
end
|
2069
|
-
desc 'list_files', 'list files in dataset'
|
2076
|
+
desc 'list_files', 'list files in dataset', :hide => true
|
2070
2077
|
method_option :json, :type => :boolean, :aliases => ["-j","--json"],:default => true, :desc => "response as json"
|
2071
2078
|
method_option :commit, :type => :string, :aliases => ["-c","--commit"], :default => nil
|
2072
2079
|
|
@@ -2100,7 +2107,7 @@ module Cnvrg
|
|
2100
2107
|
end
|
2101
2108
|
|
2102
2109
|
end
|
2103
|
-
desc 'upload_data', 'Upload updated files'
|
2110
|
+
desc 'upload_data', 'Upload updated files', :hide => true
|
2104
2111
|
method_option :ignore, :type => :string, :aliases => ["-i"], :desc => "ignore following files", :default => ""
|
2105
2112
|
method_option :new_branch, :type => :boolean, :aliases => ["-nb"], :desc => "create new branch of commits"
|
2106
2113
|
method_option :verbose, :type => :boolean, :aliases => ["-v"], :default => false
|
@@ -2347,7 +2354,7 @@ module Cnvrg
|
|
2347
2354
|
end
|
2348
2355
|
end
|
2349
2356
|
|
2350
|
-
desc 'download_file_data', 'Download one data files'
|
2357
|
+
desc 'download_file_data', 'Download one data files', :hide => true
|
2351
2358
|
method_option :verbose, :type => :boolean, :aliases => ["-v", "--verbose"], :default => false
|
2352
2359
|
method_option :commit, :type => :string, :aliases => ["-c", "--commit"], :desc => "download specified commit", :default => nil
|
2353
2360
|
method_option :link, :type => :boolean, :aliases => ["-l","--link"], :desc => "download specified commit", :default => false
|
@@ -2409,7 +2416,7 @@ module Cnvrg
|
|
2409
2416
|
end
|
2410
2417
|
|
2411
2418
|
|
2412
|
-
desc 'download_data_new', 'Download updated files'
|
2419
|
+
desc 'download_data_new', 'Download updated files', :hide => true
|
2413
2420
|
method_option :new_branch, :type => :boolean, :aliases => ["-nb"], :desc => "create new branch of commits"
|
2414
2421
|
method_option :verbose, :type => :boolean, :aliases => ["-v"], :default => false
|
2415
2422
|
method_option :sync, :type => :boolean, :aliases => ["-s"], :default => false
|
@@ -2642,7 +2649,7 @@ module Cnvrg
|
|
2642
2649
|
|
2643
2650
|
|
2644
2651
|
|
2645
|
-
desc 'jump', '
|
2652
|
+
desc 'jump', 'Jump to specific commit'
|
2646
2653
|
def jump(commit_sha1)
|
2647
2654
|
begin
|
2648
2655
|
verify_logged_in()
|
@@ -3071,8 +3078,8 @@ module Cnvrg
|
|
3071
3078
|
stats = remote ? usage_metrics_in_docker(docker_id) : Helpers.ubuntu? ? {memory: memory_usage, cpu: cpu_usage} : {}
|
3072
3079
|
if is_on_gpu
|
3073
3080
|
gu = gpu_util
|
3074
|
-
stats['
|
3075
|
-
stats['
|
3081
|
+
stats['gpu_util'] = gu[0]
|
3082
|
+
stats['gpu'] = gu[1]
|
3076
3083
|
end
|
3077
3084
|
@exp.send_machine_stats [stats] unless stats.empty?
|
3078
3085
|
rescue => e
|
@@ -3508,7 +3515,7 @@ module Cnvrg
|
|
3508
3515
|
method_option :dataset_only_tree, :type => :boolean, :aliases => [ "--dataset_only_tree"], :default => false
|
3509
3516
|
method_option :data_query, :type => :string, :aliases => ["-q", "--query"], :default => ""
|
3510
3517
|
|
3511
|
-
desc 'notebook', '
|
3518
|
+
desc 'notebook', 'Starts a notebook session remotely or locally'
|
3512
3519
|
|
3513
3520
|
def notebook
|
3514
3521
|
verify_logged_in(true)
|
@@ -3636,7 +3643,7 @@ module Cnvrg
|
|
3636
3643
|
end
|
3637
3644
|
end
|
3638
3645
|
|
3639
|
-
desc 'remote_notebook', '
|
3646
|
+
desc 'remote_notebook', 'Run notebook server on remote server'
|
3640
3647
|
method_option :machine_type, :type => :string, :default => ""
|
3641
3648
|
method_option :notebook_type, :type => :string, :aliases => ["-n", "--notebook_type"], :default => ""
|
3642
3649
|
method_option :data, :type => :string, :aliases => ["-d", "--data"], :default => ""
|
@@ -4439,7 +4446,7 @@ module Cnvrg
|
|
4439
4446
|
|
4440
4447
|
end
|
4441
4448
|
|
4442
|
-
desc 'push', 'push image to cnvrg repository'
|
4449
|
+
desc 'push', 'push image to cnvrg repository', :hide=> true
|
4443
4450
|
|
4444
4451
|
def push(*name)
|
4445
4452
|
verify_logged_in(true)
|
@@ -4846,7 +4853,7 @@ module Cnvrg
|
|
4846
4853
|
|
4847
4854
|
end
|
4848
4855
|
|
4849
|
-
desc 'upload_image', 'Upload new docker image to cnvrg'
|
4856
|
+
desc 'upload_image', 'Upload new docker image to cnvrg', :hide => true
|
4850
4857
|
method_option :workdir, :type => :string, :aliases => ["-w","--workdir"], :desc => "workdir of docker image", :default => "/root"
|
4851
4858
|
method_option :description, :type => :string, :aliases => ["-d", "--description"], :desc => "description for docker image", :default => ""
|
4852
4859
|
method_option :user, :type => :string, :aliases => ["-u","--user"], :default => "root"
|
@@ -4999,7 +5006,7 @@ module Cnvrg
|
|
4999
5006
|
end
|
5000
5007
|
end
|
5001
5008
|
|
5002
|
-
desc 'list_images', 'lists all custom images you can pull'
|
5009
|
+
desc 'list_images', 'lists all custom images you can pull', :hide => true
|
5003
5010
|
|
5004
5011
|
def list_images
|
5005
5012
|
begin
|
@@ -5026,7 +5033,7 @@ module Cnvrg
|
|
5026
5033
|
|
5027
5034
|
end
|
5028
5035
|
|
5029
|
-
desc 'list_machines', '
|
5036
|
+
desc 'list_machines', 'Lists all machines belong to your organization'
|
5030
5037
|
|
5031
5038
|
def list_machines
|
5032
5039
|
begin
|
@@ -5051,7 +5058,7 @@ module Cnvrg
|
|
5051
5058
|
|
5052
5059
|
end
|
5053
5060
|
|
5054
|
-
desc 'experiments', '
|
5061
|
+
desc 'experiments', 'List project experiments'
|
5055
5062
|
method_option :id, :type => :string, :aliases => ["-id"], :desc => "Get info for specific experiments", :default => ""
|
5056
5063
|
method_option :tag, :type => :string, :aliases => ["-t"], :desc => "Get info for specific experiment tag", :default => ""
|
5057
5064
|
|
@@ -5134,7 +5141,7 @@ module Cnvrg
|
|
5134
5141
|
end
|
5135
5142
|
|
5136
5143
|
|
5137
|
-
desc 'pull_image', 'downloads and loads an image'
|
5144
|
+
desc 'pull_image', 'downloads and loads an image', :hide => true
|
5138
5145
|
|
5139
5146
|
def pull_image(image_name)
|
5140
5147
|
begin
|
@@ -5217,7 +5224,7 @@ module Cnvrg
|
|
5217
5224
|
|
5218
5225
|
end
|
5219
5226
|
|
5220
|
-
desc 'set_image', 'set image to a porject'
|
5227
|
+
desc 'set_image', 'set image to a porject', :hide => true
|
5221
5228
|
|
5222
5229
|
def set_image(docker_image)
|
5223
5230
|
verify_logged_in(true)
|
data/lib/cnvrg/data.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
3
|
-
|
1
|
+
require 'cnvrg/cli'
|
2
|
+
require 'thor'
|
4
3
|
class SubCommandBase < Thor
|
5
4
|
def self.banner(command, namespace = nil, subcommand = false)
|
6
5
|
"#{basename} #{command.usage}"
|
@@ -14,7 +13,7 @@ end
|
|
14
13
|
module Cnvrg
|
15
14
|
class Data < SubCommandBase
|
16
15
|
class_option :no_compression, :type => :boolean, :aliases => ["-nc", "--no_compression"], :default => false
|
17
|
-
desc "data init", "
|
16
|
+
desc "data init", "Set current directory as dataset directory"
|
18
17
|
method_option :public, :type => :boolean, :aliases => ["-p", "--public"], :default => false
|
19
18
|
method_option :bucket, :type => :string, :aliases => ["-b", "--bucket"], :default => ""
|
20
19
|
def init
|
@@ -23,7 +22,7 @@ module Cnvrg
|
|
23
22
|
bucket = options["bucket"]
|
24
23
|
cli.init_data(public, bucket: bucket)
|
25
24
|
end
|
26
|
-
desc "data upload", "
|
25
|
+
desc "data upload", "Upload files from local dataset directory to remote server"
|
27
26
|
method_option :verbose, :type => :boolean, :aliases => ["-v"], :default => false
|
28
27
|
method_option :new_branch, :type => :boolean, :aliases => ["-nb"], :desc => "create new branch of commits"
|
29
28
|
method_option :force, :type => :boolean, :aliases => ["-f","--force"], :default => false
|
@@ -40,7 +39,7 @@ module Cnvrg
|
|
40
39
|
tags = options["tags"]
|
41
40
|
cli.upload_data_new(new_branch, verbose,sync,force, tags, chunk_size)
|
42
41
|
end
|
43
|
-
desc 'sync', '
|
42
|
+
desc 'data sync', 'Synchronise local dataset directory with remote server'
|
44
43
|
method_option :new_branch, :type => :boolean, :aliases => ["-nb"], :desc => "create new branch of commits"
|
45
44
|
method_option :force, :type => :boolean, :aliases => ["-f","--force"], :default => false
|
46
45
|
method_option :verbose, :type => :boolean, :aliases => ["-v"], :default => false
|
@@ -64,7 +63,7 @@ module Cnvrg
|
|
64
63
|
init = options["init"]
|
65
64
|
cli.sync_data_new(new_branch, force, verbose,commit,all_files, tags,parallel, chunk_size, init)
|
66
65
|
end
|
67
|
-
desc 'data download', '
|
66
|
+
desc 'data download', 'Download files from remote server'
|
68
67
|
method_option :new_branch, :type => :boolean, :aliases => ["-nb"], :desc => "create new branch of commits", :default => false
|
69
68
|
method_option :verbose, :type => :boolean, :aliases => ["-v"], :default => false
|
70
69
|
method_option :sync, :type => :boolean, :aliases => ["-s"], :default => false
|
@@ -80,7 +79,7 @@ module Cnvrg
|
|
80
79
|
all_files = options["all_files"]
|
81
80
|
cli.download_data_new(verbose,sync,new_branch, commit,all_files)
|
82
81
|
end
|
83
|
-
desc 'data clone', '
|
82
|
+
desc 'data clone DATASET_URL', 'Clone dataset'
|
84
83
|
method_option :only_tree, :type => :boolean, :aliases => ["-t", "--tree"], :default => false
|
85
84
|
method_option :commit, :type => :string, :aliases => ["-c", "--commit"], :default => nil
|
86
85
|
method_option :query, :type => :string, :aliases => ["-q", "--query"], :default => nil
|
@@ -97,7 +96,7 @@ module Cnvrg
|
|
97
96
|
cli.clone_data(dataset_url, only_tree=only_tree,commit=commit, query=query, read=read, remote=remote)
|
98
97
|
end
|
99
98
|
|
100
|
-
desc 'data verify', 'verify datasets', :hide => true
|
99
|
+
desc 'data verify DATASETS_TITLES', 'verify datasets', :hide => true
|
101
100
|
method_option :timeout, :type => :numeric, :aliases => ["-t", "--timeout"], :desc => "Time to wait before returning final answer", :default => 15
|
102
101
|
|
103
102
|
def verify(*dataset_titles)
|
@@ -106,7 +105,7 @@ module Cnvrg
|
|
106
105
|
cli.verify_datasets(dataset_titles, timeout)
|
107
106
|
end
|
108
107
|
|
109
|
-
desc 'data set --url=
|
108
|
+
desc 'data set --url=DATASET_URL', 'Set dataset url to other url'
|
110
109
|
method_option :url, :type => :string, :aliases => ["--url"], :default => ''
|
111
110
|
def set
|
112
111
|
cli = Cnvrg::CLI.new
|
@@ -117,7 +116,7 @@ module Cnvrg
|
|
117
116
|
end
|
118
117
|
end
|
119
118
|
|
120
|
-
desc 'data put
|
119
|
+
desc 'data put DATASET_URL FILES_PREFIX', 'Upload selected files from local dataset directory to remote server'
|
121
120
|
method_option :dir, :type => :string, :aliases => ["-d", "--dir"], :default => ''
|
122
121
|
def put(dataset_url, *files)
|
123
122
|
cli = Cnvrg::CLI.new()
|
@@ -125,7 +124,7 @@ module Cnvrg
|
|
125
124
|
cli.data_put(dataset_url, files: files, dir: dir)
|
126
125
|
end
|
127
126
|
|
128
|
-
desc 'data clone_query', '
|
127
|
+
desc 'data clone_query --query=QUERY_SLUG DATASET_URL', 'Clone dataset with specific query'
|
129
128
|
method_option :query, :type => :string, :aliases => ["-q", "--query"], :default => nil
|
130
129
|
def clone_query(dataset_url)
|
131
130
|
cli = Cnvrg::CLI.new()
|
@@ -133,20 +132,20 @@ module Cnvrg
|
|
133
132
|
cli.clone_data_query(dataset_url,query=query)
|
134
133
|
end
|
135
134
|
|
136
|
-
desc 'data delete', '
|
135
|
+
desc 'data delete DATASET_SLUG', 'Delete dataset'
|
137
136
|
def delete(dataset_slug)
|
138
137
|
cli = Cnvrg::CLI.new()
|
139
138
|
cli.delete_data(dataset_slug)
|
140
139
|
|
141
140
|
end
|
142
|
-
desc 'data list', 'list of datasets'
|
141
|
+
desc 'data list', 'Show list of all datasets'
|
143
142
|
def list()
|
144
143
|
cli = Cnvrg::CLI.new()
|
145
144
|
|
146
145
|
cli.list_dataset()
|
147
146
|
|
148
147
|
end
|
149
|
-
desc 'data commits', '
|
148
|
+
desc 'data commits', 'List all commits for a current dataset'
|
150
149
|
|
151
150
|
def commits()
|
152
151
|
cli = Cnvrg::CLI.new()
|
@@ -154,7 +153,7 @@ module Cnvrg
|
|
154
153
|
|
155
154
|
end
|
156
155
|
|
157
|
-
desc 'data files', 'list dataset files'
|
156
|
+
desc 'data files DATASET_URL', 'Show list of dataset files'
|
158
157
|
method_option :offset, :type => :numeric, :aliases => ["-o", "--offset"], :default => 0
|
159
158
|
method_option :limit, :type => :numeric, :aliases => ["-l", "--limit"], :default => 1000
|
160
159
|
method_option :expires, :type => :numeric, :aliases => ["-ex", "--expires"], :default => 3600
|
@@ -172,19 +171,19 @@ module Cnvrg
|
|
172
171
|
cli.log_message(files)
|
173
172
|
end
|
174
173
|
|
175
|
-
desc 'data queries', '
|
174
|
+
desc 'data queries', 'List all dataset queries related to current dataset'
|
176
175
|
def queries()
|
177
176
|
cli = Cnvrg::CLI.new()
|
178
177
|
cli.queries()
|
179
178
|
end
|
180
179
|
|
181
|
-
desc 'data query_files', 'list of all
|
180
|
+
desc 'data query_files QUERY_NAME', 'Show list of all files in specific query'
|
182
181
|
def query_files(query)
|
183
182
|
cli = Cnvrg::CLI.new()
|
184
183
|
cli.query_files(query)
|
185
184
|
end
|
186
185
|
|
187
|
-
desc 'data download_tags_yaml', 'Download dataset tags yml
|
186
|
+
desc 'data download_tags_yaml', 'Download dataset tags yml files in current dataset directory'
|
188
187
|
def download_tags_yaml
|
189
188
|
cli = Cnvrg::CLI.new()
|
190
189
|
cli.download_tags_yaml()
|
data/lib/cnvrg/datafiles.rb
CHANGED
@@ -70,6 +70,35 @@ module Cnvrg
|
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
|
+
def cp_ds
|
74
|
+
prefix = @dataset.get_dataset["bucket_prefix"]
|
75
|
+
current_batch = @downloader.fetch_files(prefix: prefix, limit: 500)
|
76
|
+
pbar = ProgressBar.create(:title => "Download Progress",
|
77
|
+
:progress_mark => '=',
|
78
|
+
:format => "%b%i| %c Files downloaded",
|
79
|
+
:starting_at => 0,
|
80
|
+
:total => nil,
|
81
|
+
:autofinish => true)
|
82
|
+
parallel_options = {
|
83
|
+
in_threads: ParallelThreads,
|
84
|
+
in_processes: Cnvrg::CLI::ParallelProcesses,
|
85
|
+
isolation: true,
|
86
|
+
finish: ->(*args) {pbar.progress += 1}
|
87
|
+
}
|
88
|
+
while current_batch.size > 0
|
89
|
+
Parallel.map(current_batch, parallel_options) do |file|
|
90
|
+
#current_batch.map do |file|
|
91
|
+
next if file.end_with? "/"
|
92
|
+
cutted_key = Cnvrg::Downloader::Clients::S3Client.cut_prefix(prefix, file)
|
93
|
+
dest_path = File.join(@dataset.local_path, cutted_key)
|
94
|
+
@downloader.download(file, dest_path, decrypt: false)
|
95
|
+
file
|
96
|
+
end
|
97
|
+
marker = current_batch.last
|
98
|
+
current_batch = @downloader.fetch_files(prefix: prefix, marker: marker, limit: 500)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
73
102
|
|
74
103
|
def put_commit(commit_sha1)
|
75
104
|
response = Cnvrg::API.request("#{@base_resource}/commit/latest", 'PUT', {commit_sha1: commit_sha1})
|
data/lib/cnvrg/dataset.rb
CHANGED
@@ -63,21 +63,6 @@ module Cnvrg
|
|
63
63
|
end
|
64
64
|
|
65
65
|
|
66
|
-
def download_softlink
|
67
|
-
@storage = self.get_storage_client
|
68
|
-
@progressbar = ProgressBar.create(:title => "Download Progress",
|
69
|
-
:progress_mark => '=',
|
70
|
-
:format => "%b%i| %c Files downloaded",
|
71
|
-
:starting_at => 0,
|
72
|
-
:total => nil,
|
73
|
-
:autofinish => true)
|
74
|
-
@storage.cp(get_dataset["bucket_prefix"], @local_path, progress: @progressbar)
|
75
|
-
@progressbar.finish
|
76
|
-
Cnvrg::CLI.log_message("Clone finished successfully", Thor::Shell::Color::GREEN)
|
77
|
-
write_success
|
78
|
-
end
|
79
|
-
|
80
|
-
|
81
66
|
def get_storage_client
|
82
67
|
response = Cnvrg::API.request("users/#{@owner}/datasets/#{@slug}/client", 'GET')
|
83
68
|
if Cnvrg::CLI.is_response_success(response, false)
|
@@ -262,6 +247,9 @@ module Cnvrg
|
|
262
247
|
end
|
263
248
|
|
264
249
|
ignore_list = []
|
250
|
+
if not File.exists? "#{self.local_path}/.cnvrgignore"
|
251
|
+
return ignore_list
|
252
|
+
end
|
265
253
|
File.open(self.local_path + "/.cnvrgignore", "r").each_line do |line|
|
266
254
|
line = line.strip
|
267
255
|
if line.start_with? "#" or ignore_list.include? line or line.empty?
|
@@ -26,8 +26,10 @@ module Cnvrg
|
|
26
26
|
})
|
27
27
|
end
|
28
28
|
|
29
|
-
@
|
30
|
-
|
29
|
+
@options = options
|
30
|
+
|
31
|
+
#@client = Aws::S3::Client.new(options)
|
32
|
+
#@bucket = Aws::S3::Resource.new(client: @client).bucket(@bucket_name)
|
31
33
|
@upload_options = {:use_accelerate_endpoint => storage == 's3'}
|
32
34
|
if encryption.present?
|
33
35
|
@upload_options[:server_side_encryption] = encryption
|
@@ -39,54 +41,39 @@ module Cnvrg
|
|
39
41
|
storage_path = Cnvrg::Helpers.decrypt(@key, @iv, storage_path) if decrypt
|
40
42
|
resp = nil
|
41
43
|
File.open(local_path, 'w+') do |file|
|
42
|
-
resp =
|
44
|
+
resp = aws_client.get_object({bucket: @bucket_name, key: storage_path}, target: file)
|
43
45
|
end
|
44
46
|
resp
|
45
47
|
rescue => e
|
46
|
-
|
47
|
-
|
48
|
+
Cnvrg::Logger.log_error(e)
|
49
|
+
raise e
|
48
50
|
end
|
49
51
|
|
50
52
|
def upload(storage_path, local_path)
|
51
53
|
### storage path is the path inside s3 (after the bucket)
|
52
54
|
# local path is fullpath for the file /home/ubuntu/user.../hazilim.py
|
53
|
-
o =
|
55
|
+
o = aws_bucket.object(storage_path)
|
54
56
|
o.upload_file(local_path, @upload_options)
|
55
57
|
end
|
56
58
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
files_thread = Thread.new do
|
61
|
-
current_marker = nil
|
62
|
-
while true
|
63
|
-
batch_files = @bucket.objects(prefix: prefix, marker: current_marker).first(500)
|
64
|
-
batch_files = batch_files.to_a
|
65
|
-
break if batch_files.size === 0
|
66
|
-
files += batch_files
|
67
|
-
current_marker = batch_files.last.key
|
68
|
-
end
|
69
|
-
end
|
70
|
-
thread_pool = Thread.pool(Cnvrg::Helpers.parallel_threads)
|
71
|
-
while true
|
72
|
-
while files.present?
|
73
|
-
Thread.future thread_pool do
|
74
|
-
f = files.pop
|
75
|
-
cutted_key = cut_prefix(prefix, f.key)
|
76
|
-
dest_path = File.join(local_path, cutted_key)
|
77
|
-
download(f.key, dest_path, decrypt: false)
|
78
|
-
progress.increment
|
79
|
-
end
|
80
|
-
end
|
81
|
-
break if files.size == 0 and files_thread.status == false
|
82
|
-
sleep(1)
|
83
|
-
end
|
84
|
-
thread_pool.wait(:done)
|
59
|
+
def fetch_files(prefix: nil, marker: nil, limit: 1000)
|
60
|
+
batch_files = aws_bucket.objects(prefix: prefix, marker: marker).first(limit)
|
61
|
+
batch_files.to_a.map(&:key)
|
85
62
|
end
|
86
63
|
|
87
|
-
def cut_prefix(prefix, file)
|
64
|
+
def self.cut_prefix(prefix, file)
|
88
65
|
file.gsub(prefix, '').gsub(/^\/*/, '')
|
89
66
|
end
|
67
|
+
|
68
|
+
|
69
|
+
private
|
70
|
+
def aws_client
|
71
|
+
Aws::S3::Client.new(@options)
|
72
|
+
end
|
73
|
+
|
74
|
+
def aws_bucket
|
75
|
+
Aws::S3::Resource.new(client: aws_client).bucket(@bucket_name)
|
76
|
+
end
|
90
77
|
end
|
91
78
|
end
|
92
79
|
end
|
data/lib/cnvrg/helpers.rb
CHANGED
@@ -12,6 +12,14 @@ module Cnvrg
|
|
12
12
|
### set max threads to be 100k
|
13
13
|
[threads, 100000].min
|
14
14
|
end
|
15
|
+
|
16
|
+
def self.parallel_options
|
17
|
+
{
|
18
|
+
in_processes: Cnvrg::CLI::ParallelProcesses,
|
19
|
+
in_thread: Cnvrg::CLI::ParallelThreads,
|
20
|
+
isolation: true
|
21
|
+
}
|
22
|
+
end
|
15
23
|
def checkmark
|
16
24
|
checkmark = "\u2713"
|
17
25
|
return checkmark.encode('utf-8')
|
data/lib/cnvrg/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cnvrg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yochay Ettun
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2019-
|
13
|
+
date: 2019-07-15 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -372,20 +372,6 @@ dependencies:
|
|
372
372
|
- - ">="
|
373
373
|
- !ruby/object:Gem::Version
|
374
374
|
version: '0'
|
375
|
-
- !ruby/object:Gem::Dependency
|
376
|
-
name: thread
|
377
|
-
requirement: !ruby/object:Gem::Requirement
|
378
|
-
requirements:
|
379
|
-
- - ">="
|
380
|
-
- !ruby/object:Gem::Version
|
381
|
-
version: '0'
|
382
|
-
type: :runtime
|
383
|
-
prerelease: false
|
384
|
-
version_requirements: !ruby/object:Gem::Requirement
|
385
|
-
requirements:
|
386
|
-
- - ">="
|
387
|
-
- !ruby/object:Gem::Version
|
388
|
-
version: '0'
|
389
375
|
description: A CLI tool for interacting with cnvrg.io.
|
390
376
|
email:
|
391
377
|
- info@cnvrg.io
|
@@ -446,7 +432,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
446
432
|
- !ruby/object:Gem::Version
|
447
433
|
version: '0'
|
448
434
|
requirements: []
|
449
|
-
|
435
|
+
rubyforge_project:
|
436
|
+
rubygems_version: 2.7.9
|
450
437
|
signing_key:
|
451
438
|
specification_version: 4
|
452
439
|
summary: A CLI tool for interacting with cnvrg.io.
|