pulp 0.0.8

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.
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