Skip to content

Instantly share code, notes, and snippets.

@AdamSaleh
Created April 9, 2013 16:27
Show Gist options
  • Save AdamSaleh/5347149 to your computer and use it in GitHub Desktop.
Save AdamSaleh/5347149 to your computer and use it in GitHub Desktop.
Two functions, create-records-list takes tree structure such as custom-provider, and returns list of records that can be passed to ui/create, prepare-org-custom-provider takes this list and executes it and syncs the repos.
(def custom-provider [{:name "fedorapeople"
:products [{:name "safari-1_0"
:repos [{:name "safari-x86_64"
:url "http://inecas.fedorapeople.org/fakerepos/cds/content/safari/1.0/x86_64/rpms/"}]}]}])
(defn create-records-list [list org & parent]
(into [] (flatten
(for [item list]
(if (contains? item :products)
(let [prov (kt/newProvider {:name (item :name) :org org})]
(concat [prov]
(create-records-list (item :products) org prov)))
(if (contains? item :repos)
(let [prod (kt/newProduct {:name (item :name) :provider parent :org org})]
(concat [prod]
(create-records-list (item :repos) org prod)))
(kt/newRepository
{:name (item :name)
:url (item :url)
:product parent})))))))
(defn prepare-org-custom-provider [org provider]
(let [provider-list (create-records-list provider org)]
(doseq [item provider-list]
(ui/create item))
(sync/perform-sync (filter (partial instance? katello.Repository) provider-list))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment