cnvrg 1.4.9.4 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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.
|