pulp 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. data/.document +5 -0
  2. data/.rspec +1 -0
  3. data/Gemfile +19 -0
  4. data/Gemfile.lock +42 -0
  5. data/LICENSE.txt +20 -0
  6. data/README.rdoc +147 -0
  7. data/Rakefile +49 -0
  8. data/VERSION +1 -0
  9. data/examples/repositories.rb +205 -0
  10. data/examples/test_pulp.yml +4 -0
  11. data/lib/pulp.rb +26 -0
  12. data/lib/pulp/cds.rb +25 -0
  13. data/lib/pulp/common/debug.rb +37 -0
  14. data/lib/pulp/common/lifecycle.rb +166 -0
  15. data/lib/pulp/common/lifecycle/create.rb +16 -0
  16. data/lib/pulp/common/lifecycle/delete.rb +23 -0
  17. data/lib/pulp/common/lifecycle/get.rb +22 -0
  18. data/lib/pulp/common/lifecycle/update.rb +23 -0
  19. data/lib/pulp/connection/base.rb +84 -0
  20. data/lib/pulp/connection/handler.rb +59 -0
  21. data/lib/pulp/consumer.rb +23 -0
  22. data/lib/pulp/consumergroup.rb +22 -0
  23. data/lib/pulp/content.rb +14 -0
  24. data/lib/pulp/distribution.rb +11 -0
  25. data/lib/pulp/errata.rb +17 -0
  26. data/lib/pulp/event.rb +8 -0
  27. data/lib/pulp/filter.rb +19 -0
  28. data/lib/pulp/package.rb +20 -0
  29. data/lib/pulp/package_group.rb +8 -0
  30. data/lib/pulp/package_group_category.rb +7 -0
  31. data/lib/pulp/repository.rb +114 -0
  32. data/lib/pulp/service.rb +51 -0
  33. data/lib/pulp/task.rb +37 -0
  34. data/lib/pulp/task_history.rb +10 -0
  35. data/lib/pulp/task_snapshot.rb +9 -0
  36. data/lib/pulp/user.rb +12 -0
  37. data/spec/pulp/common/debug_spec.rb +42 -0
  38. data/spec/pulp/common/lifecycle/create_spec.rb +21 -0
  39. data/spec/pulp/common/lifecycle/delete_spec.rb +40 -0
  40. data/spec/pulp/common/lifecycle/get_spec.rb +42 -0
  41. data/spec/pulp/common/lifecycle/update_spec.rb +48 -0
  42. data/spec/pulp/common/lifecycle_spec.rb +393 -0
  43. data/spec/pulp/connection/base_spec.rb +312 -0
  44. data/spec/pulp/connection/handler_spec.rb +123 -0
  45. data/spec/pulp/content_spec.rb +21 -0
  46. data/spec/pulp/package_spec.rb +14 -0
  47. data/spec/pulp/repository_spec.rb +14 -0
  48. data/spec/pulp/service_spec.rb +85 -0
  49. data/spec/pulp/task_spec.rb +48 -0
  50. data/spec/pulp_spec.rb +4 -0
  51. data/spec/spec.opts +6 -0
  52. data/spec/spec_helper.rb +32 -0
  53. metadata +252 -0
@@ -0,0 +1,23 @@
1
+ module Pulp
2
+ class Consumer < Pulp::Connection::Base
3
+
4
+ has_crud
5
+
6
+ pulp_fields :description, :package_profile, :repoids
7
+
8
+ pulp_action :packages, :method => :get
9
+ pulp_action :certificate, :method => :get
10
+ pulp_action :bind
11
+ pulp_action :unbind
12
+ pulp_action :package_profile
13
+ pulp_action :history, :params => :optional
14
+ pulp_action :add_key_value_pair
15
+ pulp_action :update_key_value_pair
16
+ pulp_action :delete_key_value_pair
17
+ pulp_action :keyvalues, :method => :get
18
+
19
+ # from errata
20
+ pulp_action :listerrata, :array => :errata
21
+ pulp_action :installerrata, :method => :get
22
+ end
23
+ end
@@ -0,0 +1,22 @@
1
+ module Pulp
2
+ class Consumergroup < Pulp::Connection::Base
3
+
4
+ has_collection
5
+ has_delete
6
+ has_create
7
+ has_get
8
+
9
+ pulp_fields :description, :consumerids
10
+
11
+ pulp_action :add
12
+ pulp_action :remove
13
+ pulp_action :bind
14
+ pulp_action :unbind
15
+ pulp_action :add_key_value_pair
16
+ pulp_action :update_key_value_pair
17
+ pulp_action :delete_key_value_pair
18
+
19
+ #from errata
20
+ pulp_action :installerrata, :method => :get
21
+ end
22
+ end
@@ -0,0 +1,14 @@
1
+ module Pulp
2
+ class Content < Pulp::Connection::Base
3
+
4
+ def self.file(fileid)
5
+ base_get('','files/',{:id => fileid})
6
+ end
7
+
8
+ def self.delete_file(fileid)
9
+ base_delete('',"files/#{fileid}/")
10
+ end
11
+
12
+
13
+ end
14
+ end
@@ -0,0 +1,11 @@
1
+ module Pulp
2
+ class Distribution < Pulp::Connection::Base
3
+
4
+ has_collection
5
+ has_get
6
+
7
+ # a pulp distribution can't be updated so far
8
+ pulp_locked_fields :arch, :_ns, :description, :family, :files, :url, :relativepath, :timestamp, :url, :variant, :version
9
+
10
+ end
11
+ end
@@ -0,0 +1,17 @@
1
+ module Pulp
2
+ class Errata < Pulp::Connection::Base
3
+
4
+ has_collection
5
+ has_get
6
+ has_create
7
+ has_delete
8
+ has_get
9
+
10
+
11
+ pulp_field :_ns, :locked => true
12
+ pulp_fields :description, :from_str, :immutable, :issued, :pkglist,
13
+ :pushcount, :reboot_suggested, :references, :release, :repo_defined, :status,
14
+ :title, :type, :updated, :version
15
+
16
+ end
17
+ end
@@ -0,0 +1,8 @@
1
+ module Pulp
2
+ class Event < Pulp::Connection::Base
3
+
4
+ has_collection :all_filters => [ :api, :methid, :principal, :field, :limit, :errors_only ]
5
+
6
+ pulp_fields :timestamp, :principal_type, :principal, :action, :method, :params, :result, :exception, :traceback
7
+ end
8
+ end
@@ -0,0 +1,19 @@
1
+ module Pulp
2
+ class Filter < Pulp::Connection::Base
3
+
4
+ has_collection
5
+ has_create
6
+ has_get
7
+
8
+ pulp_fields :description, :type, :package_list
9
+
10
+ def delete(force=false)
11
+ self.class.delete(id,force)
12
+ end
13
+
14
+ def self.delete(item_id,force=false)
15
+ base_delete("",item_id, :force => force)
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,20 @@
1
+ module Pulp
2
+ class Package < Pulp::Connection::Base
3
+
4
+ has_collection
5
+ has_create
6
+ has_get
7
+ has_delete
8
+
9
+
10
+ pulp_field :_ns, :locked => true
11
+ pulp_fields :arch, :buildhost, :checksum, :description,
12
+ :download_url, :epoch, :filename, :group,
13
+ :license, :name, :provides, :release,
14
+ :repo_defined, :requires, :size, :vendor, :version
15
+
16
+ def self.by_nvrea(name,version,release,epoch,arch)
17
+ self.new(base_get("#{name}/#{version}/#{release}/#{epoch}/#{arch}"))
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,8 @@
1
+ module Pulp
2
+ class PackageGroup < Pulp::Connection::Base
3
+
4
+ pulp_locked_fields :mandatory_package_names, :description, :repo_defined, :default, :display_order,
5
+ :immutable, :user_visible, :translated_name, :translated_description, :conditional_package_names,
6
+ :optional_package_names, :langonly, :name
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ module Pulp
2
+ class PackageGroupCategory < Pulp::Connection::Base
3
+
4
+ pulp_locked_fields :description, :repo_defined, :display_order, :immutable, :translated_name,
5
+ :packagegroupids, :translated_description, :name
6
+ end
7
+ end
@@ -0,0 +1,114 @@
1
+ module Pulp
2
+ # Create Repository:
3
+ # Minimum Options to create a repository:
4
+ # r = Pulp::Repository.create(:feed => "http://mirror.switch.ch/ftp/mirror/epel/6/x86_64/", :id => 'epel-6-x86_64', :name => 'epel-6-x86_64', :arch => 'x86_64')
5
+ class Repository < Pulp::Connection::Base
6
+ has_crud :collection => { :all_filters => [ :id, :name, :arch, :groupid, :relative_path, :notes ] }
7
+
8
+ pulp_fields :arch, :name, :release
9
+
10
+ #these can't be updated
11
+ pulp_locked_fields :checksum_type, :clone_ids, :content_types, :feed_ca, :feed_cert, :feed_key,
12
+ :filters, :files_count, :groupid, :last_sync, :publish,
13
+ :consumer_ca, :consumer_cert, :distributionid, :notes, :next_scheduled_sync,
14
+ :package_count, :preserve_metadata, :relative_path, :source, :sync_schedule, :use_symlinks, :uri_ref
15
+
16
+ #special fields
17
+ pulp_deferred_fields :files, :keys
18
+
19
+ pulp_deferred_field :comps, :returns => :plain
20
+ pulp_deferred_field :errata, :array => Pulp::Errata, :filters => true
21
+ pulp_deferred_field :distribution, :array => Pulp::Distribution
22
+ pulp_deferred_field :packagegroupcategories, :array => Pulp::PackageGroupCategory, :filter => true
23
+ pulp_deferred_field :packagegroups, :array => Pulp::PackageGroup, :filter => true
24
+ pulp_deferred_field :packages, :array => Pulp::Package, :filter => true
25
+
26
+ pulp_action :sync, :returns => Pulp::Task, :params => :optional, :task_list => true
27
+ pulp_action :add_errata, :parse => false
28
+ pulp_action :add_file, :parse => false
29
+ pulp_action :add_filters, :parse => false
30
+ pulp_action :add_group, :parse => false
31
+ pulp_action :add_metadata, :parse => false
32
+ pulp_action :add_package, :parse => false
33
+ pulp_action :add_packagegroup_to_category, :parse => false
34
+ pulp_action :add_packages_to_group, :parse => false
35
+ pulp_action :add_keys, :parse => false
36
+ pulp_action :clone, :returns => Pulp::Task, :task_list => true
37
+ pulp_action :create_packagegroup, :returns => Pulp::PackageGroup
38
+ pulp_action :create_packagegroupcategory, :returns => Pulp::PackageGroupCategory
39
+ pulp_action :delete_errata, :parse => false
40
+ pulp_action :delete_package, :parse => false
41
+ pulp_action :delete_package_from_group, :parse => false
42
+ pulp_action :delete_packagegroup, :parse => false
43
+ pulp_action :delete_packagegroup_from_category, :parse => false
44
+ pulp_action :delete_packagegroupcategory, :parse => false
45
+ pulp_action :download_metadata, :parse => false
46
+ pulp_action :export, :returns => Pulp::Task, :task_list => true
47
+ pulp_action :generate_metadata, :returns => Pulp::Task, :task_list => true
48
+ pulp_action :get_package_by_filename
49
+ pulp_action :get_package_by_nvrea
50
+ pulp_action :import_comps, :parse => false
51
+ pulp_action :list_metadata
52
+ pulp_action :remove_distribution, :parse => false
53
+ pulp_action :remove_file, :parse => false
54
+ pulp_action :remove_filters, :parse => false
55
+ pulp_action :remove_group, :parse => false
56
+ pulp_action :remove_metadata, :parse => false
57
+ pulp_action :rmkeys, :parse => false
58
+ pulp_action :update_publish, :parse => false
59
+ pulp_action :upload, :parse => false
60
+
61
+ pulp_action :list_distribution, :method => :get, :append_slash => false
62
+
63
+ def self.schedules
64
+ self.base_get('schedules/')
65
+ end
66
+
67
+
68
+ def update_sync_schedule(schedule)
69
+ update_schedule('sync',schedule)
70
+ end
71
+
72
+ def get_schedule(type)
73
+ self.class.base_get("schedules/#{type}/",id)
74
+ end
75
+
76
+ def get_sync_schedule
77
+ get_schedule('sync')
78
+ end
79
+
80
+ def delete_schedule(type)
81
+ self.class.base_delete("schedules/#{type}/",id)
82
+ end
83
+
84
+ def delete_sync_schedule
85
+ delete_schedule('sync')
86
+ end
87
+
88
+ def update_schedule(type,schedule)
89
+ self.class.base_put("schedules/#{type}/",id,{:schedule => schedule})
90
+ end
91
+
92
+ def add_note(key,note)
93
+ self.class.base_unparsed_post('notes/',self.id,{:key => key, :value => note})
94
+ refresh
95
+ self
96
+ end
97
+
98
+ def delete_note(key)
99
+ self.class.base_unparsed_delete("notes/#{key}/",self.id)
100
+ refresh
101
+ self
102
+ end
103
+
104
+ def update_note(key,new_value)
105
+ self.class.base_unparsed_put("notes/#{key}/",self.id,new_value)
106
+ refresh
107
+ self
108
+ end
109
+
110
+ pulp_update_action :feed, :params => :feed
111
+ pulp_update_action :feed_cert_data, :params => [:ca, :crt, :key]
112
+ pulp_update_action :consumer_cert_data, :params => [:ca, :crt, :key]
113
+ end
114
+ end
@@ -0,0 +1,51 @@
1
+ module Pulp
2
+ class Service < Pulp::Connection::Base
3
+
4
+ def self.dependencies(pkgnames,repoids)
5
+ base_post('','dependencies/',{:pkgnames => pkgnames, :repoids => repoids})
6
+ end
7
+
8
+ def self.search_package(params)
9
+ base_post('','search/packages/',params)
10
+ end
11
+
12
+ def self.start_upload(name,size,checksum,id=nil)
13
+ params = {
14
+ :name => name,
15
+ :size => size,
16
+ :checksum => checksum
17
+ }
18
+ params[:id] = id unless id.nil?
19
+ base_post('','upload',params)
20
+ end
21
+
22
+ # TODO: won't work yet probably
23
+ def self.append_file_content(id,data)
24
+ base_post('',"upload/#{id}/append",data)
25
+ end
26
+
27
+ def self.import_file(uploadid, metadata)
28
+ base_put('','upload/import',{:uploadid => uploadid, :metadata => metadata})
29
+ end
30
+
31
+ def self.package_checksum(pkglist)
32
+ base_put('','packages/checksum/',pkglist)
33
+ end
34
+
35
+ def self.file_checksum(filelist)
36
+ base_put('','files/checksum/',filelist)
37
+ end
38
+
39
+ def self.associate_packages(package_info)
40
+ base_post('','associate/packages/',package_info)
41
+ end
42
+
43
+ def self.repo_discovery(url,type,cert_data)
44
+ Pulp::Task.new(base_post('','discovery/repo/',{:url => url, :type => type, :cert_data => cert_data }))
45
+ end
46
+
47
+ def self.repo_discovery_staus(taskid)
48
+ Pulp::Task.new(base_get('',"discovery/repo/#{taskid}"))
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,37 @@
1
+ module Pulp
2
+ class Task < Pulp::Connection::Base
3
+
4
+ has_delete
5
+ has_get
6
+ has_collection :all_filters => [:state]
7
+
8
+ pulp_fields :args, :job_id, :class_name, :method_name, :state, :start_time, :finish_time, :result,
9
+ :exception ,:traceback, :progress, :scheduler, :scheduled_time, :snapshot_id
10
+
11
+ pulp_action :snapshots, :method => :get, :array => Pulp::TaskSnapshot
12
+
13
+ def cancel
14
+ self.class.cancel(id)
15
+ end
16
+
17
+ def self.cancel(taskid)
18
+ self.new(base_post(taskid,'cancel/'))
19
+ end
20
+
21
+ def delete_snapshot
22
+ self.class.delete_snapshot(id)
23
+ end
24
+
25
+ def self.delete_snapshot(taskid)
26
+ Pulp::TaskSnapshot.new(base_delete(taskid,'snapshot/'))
27
+ end
28
+
29
+ def snapshot
30
+ self.class.snapshot(id)
31
+ end
32
+
33
+ def self.snapshot(taskid)
34
+ Pulp::TaskSnapshot.new(base_get(taskid,'snapshot/'))
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,10 @@
1
+ module Pulp
2
+ class TaskHistory < Pulp::Connection::Base
3
+
4
+ pulp_fields :class_name, :method_name, :args, :kwargs, :state,
5
+ :progress, :result, :exception,
6
+ :traceback, :consecutive_failures,
7
+ :scheduled_time, :start_time, :finished_time
8
+
9
+ end
10
+ end
@@ -0,0 +1,9 @@
1
+ module Pulp
2
+ class TaskSnapshot < Pulp::Connection::Base
3
+
4
+ pulp_fields :class_name, :method_name, :state, :failure_threshold, :cancel_attempts, :callable,
5
+ :args, :kwargs, :progress, :timeout, :schedule_threshold, :_progress_callback, :start_time, :finish_time,
6
+ :result, :exception, :traceback
7
+
8
+ end
9
+ end
@@ -0,0 +1,12 @@
1
+ module Pulp
2
+ class User < Pulp::Connection::Base
3
+
4
+ has_collection
5
+ has_create
6
+ has_get
7
+ has_delete
8
+
9
+
10
+ pulp_fields :login, :password, :name, :roles
11
+ end
12
+ end
@@ -0,0 +1,42 @@
1
+ #! /usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../spec_helper'
3
+
4
+ class TestDebug
5
+ include Pulp::Common::Debug
6
+ end
7
+
8
+ describe Pulp::Common::Debug do
9
+ it "should provide a way to set and query a debug flag" do
10
+ TestDebug.should respond_to(:debug_enabled)
11
+ TestDebug.should respond_to(:debug_enabled=)
12
+ end
13
+
14
+ it "should provide a way to set and query an output engine" do
15
+ TestDebug.should respond_to(:output)
16
+ TestDebug.should respond_to(:output=)
17
+ end
18
+
19
+ it "should provide a method to print debug messages on class and instance level" do
20
+ TestDebug.should respond_to(:debug)
21
+ TestDebug.new.should respond_to(:debug)
22
+ end
23
+
24
+ it "should not have debugging enabled by default" do
25
+ TestDebug.debug_enabled.should == false
26
+ end
27
+
28
+ it "should not print out a debug message if the debug flag is not set" do
29
+ output = Object.new
30
+ output.expects(:puts).with('foo').never
31
+ TestDebug.output = output
32
+ TestDebug.debug('foo')
33
+ end
34
+
35
+ it "should print out a debug message if the debug flag is set" do
36
+ TestDebug.debug_enabled = true
37
+ output = Object.new
38
+ output.expects(:puts).with('foo').once
39
+ TestDebug.output = output
40
+ TestDebug.debug('foo')
41
+ end
42
+ end