• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pulibrary / tigerdata-app / b9c905b4-2897-4d3e-a367-72f83b94e852

28 Oct 2024 03:54PM UTC coverage: 84.116% (+0.03%) from 84.083%
b9c905b4-2897-4d3e-a367-72f83b94e852

push

circleci

web-flow
Updating to set mediaflux id and storage performance to Standard for imported works (#1009)

4 of 4 branches covered (100.0%)

0 of 1 new or added line in 1 file covered. (0.0%)

2150 of 2556 relevant lines covered (84.12%)

302.07 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

19.05
/lib/tasks/import.rake
1
require 'csv'
1✔
2
# frozen_string_literal: true
3
#
4
# The input file can be created by running by running the following script in aterm:
5
#
6
# set ids [xvalues id [asset.query :where xpath(tigerdata:project/ProjectID) has value]]
7
# puts "asset,path,creatorDomain,creatorUser,createdOn,quota,store,projectDirectory,title,description,dataSponsor,dataManager,dataUser,department,projectID"
8
# foreach id $ids {
9
#     set asset [asset.get :id $id]
10
#     set path [xvalue asset/path $asset]
11
#     set creatorDomain [xvalue asset/creator/domain $asset]
12
#     set creatorUser [xvalue asset/creator/user $asset]
13
#     set createdOn [xvalue  asset/ctime $asset]
14
#     set store [xvalue asset/collection/store $asset]
15
#     set projectDirectory [xvalue asset/meta/tigerdata:project/ProjectDirectory $asset]
16
#     set title [xvalue asset/meta/tigerdata:project/Title $asset]
17
#     set description [xvalue asset/meta/tigerdata:project/Description $asset]
18
#     set dataSponsor [xvalue asset/meta/tigerdata:project/DataSponsor $asset]
19
#     set dataManager [xvalue asset/meta/tigerdata:project/DataManager $asset]
20
#     set dataUser [xvalue asset/meta/tigerdata:project/DataUser $asset]
21
#     set department [xvalue asset/meta/tigerdata:project/Department $asset]
22
#     set projectID [xvalue asset/meta/tigerdata:project/ProjectID $asset]
23
#     set quota [xvalue asset/collection/quota/allocation $asset]
24
#     puts $id "," $path "," $creatorDomain "," $creatorUser "," $createdOn "," \
25
#         $quota "," $store "," $projectDirectory "," \"$title\" "," \"$description\" "," \
26
#         $dataSponsor "," $dataManager "," $dataUser "," $department "," $projectID 
27
# }
28
#
29
#
30

31

32
namespace :import do
1✔
33
    # command line syntax: bundle exec rake metadata:update_pppl_subcommunities\["netid"\]
34
    desc "import projects from mediaflux csv file"
1✔
35
    task :mediaflux_projects, [:project_file, :test_run] => [:environment] do |_, args|
1✔
36
      project_file = args[:project_file]
×
37
      test_run = args[:test_run] || false
×
38
      mediaflux_projects = CSV.read(project_file, headers: true)
×
39
      mediaflux_projects.each do |project_metadata|
×
40
        project_id = project_metadata["projectID"]
×
41
        existing_project = Project.where("metadata_json @> ?", JSON.dump(project_id:))
×
42
        if existing_project.count > 0
×
43
          puts "Skipping project #{project_id}.  There are already #{existing_project.count} version of that project in the system"
×
44
        else
45
          data_user = if project_metadata["dataUser"].blank?
×
46
                        []
×
47
                      else
48
                        [project_metadata["dataUser"]]
×
49
                      end
50
          storage_size_gb = project_metadata["quota"].to_i/1000000000.0
×
51
          metadata = ProjectMetadata.new_from_hash({
×
52
            project_id:,
53
            title: project_metadata["title"],
54
            description: project_metadata["description"],
55
            status: Project::ACTIVE_STATUS,
56
            data_sponsor: project_metadata["dataSponsor"],
57
            data_manager: project_metadata["dataManager"],
58
            departments: [project_metadata["department"]],
59
            data_user_read_only: data_user,
60
            project_directory: project_metadata["path"],
61
            storage_capacity: {size: { approved: storage_size_gb, requested: storage_size_gb}, unit: {approved: "GB", requested: "GB"}},
62
            storage_performance_expectations: { requested: "Standard", approved: "Standard" },
63
            created_by: project_metadata["creatorUser"],
64
            created_on: project_metadata["createdOn"]
65
          })
66
          if test_run
×
67
            puts metadata.to_json
×
68
          else
NEW
69
            project = Project.create!(metadata:, mediaflux_id: project_metadata["asset"])
×
70
            puts "Created project for #{project_id}"
×
71
          end
72
        end
73
      end
74
    end
75
  end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc