{"id":19906045,"url":"https://github.com/sdake/pacemaker-cloud","last_synced_at":"2025-10-14T03:35:45.012Z","repository":{"id":1443194,"uuid":"1673588","full_name":"sdake/pacemaker-cloud","owner":"sdake","description":"Pacemaker Cloud Policy Engine","archived":false,"fork":false,"pushed_at":"2012-03-28T21:09:25.000Z","size":848,"stargazers_count":15,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-03T01:47:55.536Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://www.pacemaker-cloud.org","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sdake.png","metadata":{"files":{"readme":"README.markdown","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-04-28T01:02:43.000Z","updated_at":"2017-09-20T21:29:57.000Z","dependencies_parsed_at":"2022-07-29T21:09:38.274Z","dependency_job_id":null,"html_url":"https://github.com/sdake/pacemaker-cloud","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/sdake/pacemaker-cloud","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdake%2Fpacemaker-cloud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdake%2Fpacemaker-cloud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdake%2Fpacemaker-cloud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdake%2Fpacemaker-cloud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sdake","download_url":"https://codeload.github.com/sdake/pacemaker-cloud/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdake%2Fpacemaker-cloud/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267057720,"owners_count":24028880,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-25T02:00:09.625Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-12T20:35:17.372Z","updated_at":"2025-10-14T03:35:39.993Z","avatar_url":"https://github.com/sdake.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cloud Policy Engine\n\n-------------------------------------------------------------------------------\n\n## Table of Contents\n\n1. Mandatory Host Dependencies\n2. Optional Host Dependencies\n3. Building on Specific Distributions\n4. Definitions\n5. Architecture\n\n\n## 1) Mandatory Host Dependencies\n\n* [libqb 0.10.1 or later](https://github.com/asalkeld/libqb)\n\n* [pacemaker](http://www.clusterlabs.org/)\n\n* [glib 2.0](http://www.gtk.org/)\n\n* [dbus-glib](http://www.freedesktop.org/wiki/Software/dbus)\n\n* [libxml2](http://xmlsoft.org/)\n\n* [libcurl](http://curl.haxx.se/)\n\n* [libmicrohttpd](http://www.gnu.org/software/libmicrohttpd/)\n\n* [oz 0.7.0 or later](http://www.aeolusproject.org/oz.html)\n\n* An IAAS platform of some type - the developers typically test with OpenStack\n\n## 2) Optional Host Dependencies\n\n* [libssh2)](http://www.libssh2.org/)\n\n - To build without, ./configure --disable-transport-ssh2\n\n* [qpid (QMFv2)](http://qpid.apache.org/)\n\n - To build without, ./configure --disable-transport-matahari\n\n* [sblim sfcc](http://sblim.sourceforge.net/)\n\n - To build without, ./configure --disable-transport-cim\n\n* [deltacloud](http://deltalcloud.apache.org/)\n\n - To build without, ./configure --disable-api-deltacloud\n\n### 1.1) Dependencies to run pcloudsh\n\n* m2crypto\n* python-libguestfs\n* python-qpid-qmf\n* python-daemon\n\n## 2) Building on Specific Distributions\n\n### Installing on Fedora 15:\n\n    fedora15# yum install autoconf automake gcc-c++ glib2-devel libqb-devel \\\n              dbus-glib-devel libxml2-devel pacemaker-libs-devel libtool-ltdl-devel \\\n              qpid-cpp-client-devel qpid-qmf-devel libmicrohttpd-devel libcurl-devel\n    fedora15# make rpm\n    fedora15# rpm -ivh $(arch)/*.rpm\n\n### Installing on Fedora 14:\n\nqpid on f14 is out of date.  libqb is not available in f14.  Please obtain\ncopies of the source tree from section 1 for those packages and build from\nsource.  Note on 64 bit systems, qpid does not autodetect the libdir is\n64 bit, so --libdir=/usr/lib64 must be specified.\n\n    fedora14# yum install autoconf automake gcc-c++ glib2-devel \\\n              dbus-glib-devel libxml2-devel pacemaker-libs-devel libtool-ltdl-devel \\\n              libmicrohttpd-devel libcurl-devel\n\n    fedora14# cd libqb\n    fedora14# make rpm\n    fedora14# rpm -ivh $(arch)/*.rpm\n\ninstall qpid, overwriting your default install\n\n    fedora14# make rpm\n    fedora14# rpm -ivh $(arch)/*.rpm\n\n## 3) Definitions\n\n_Assembly_ = user defined guest composed of a VM image, Matahari active\n             monitoring agent, boot configuration tools, and applications\n\n_Deployable_ = user defined set of assemblies and services\n\n_CPE_ = Cloud Policy Engine, starts and stops DPE's\n\n_DPE_ = Deployable Policy Engine, controls the services in a customer deployment\n\n## 4) Architecture\n\nDescription of the program flow given some different scenarios:\n\n### Create new deployment\n\n1. Cloud management software sends cpe the assembly \u0026 service config\n   in XML (via QMF). Note very simerlar to what pacemaker PE wants.\n2. CPE asks upstart/systemd to start a new DPE.\n3. CPE stores the config somewhere (DB or file)\n4. CPE waits for the DPE QMF agent to be available, then asks it to\n   load the config and managemt the deployment.\n5. DPE gathers config + state and sends it to the PE\n6. DPE performs the actions (using matahari) as instructed by PE\n\n\n### Destroy deployment\n\n1. Cloud managemt software tells CPE to destroy a deployment\n2. CPE asks upstart/systemd to stop the DPE and deletes the config\n\n\n### DPE dies or gets restarted\n\n1. CPE notices death of CPE and starts a new one\n2. CPE waits for the DPE QMF agent to be available, then asks it to\n   load the config and managemt the deployment.\n3. DPE gathers config + state and sends it to the PE\n4. DPE performs the actions (using matahari) as instructed by PE\n\n\n### Assembly Instance misses heartbeat\n\n1. DPE notices the Assembly has missed a heartbeat.\n2. send a QMF event (assembly failure)\n3. DPE gathers config + state and sends it to the PE\n4. DPE performs the actions (using matahari) as instructed by PE\n   (move services to other assemblies)\n\n\n### User modifies the deployment configuration\n\n1. Cloud management software sends cpe the assembly \u0026 service config\n   in XML (via QMF). Note very simerlar to what pacemaker PE wants.\n2. CPE sees the DPE is already running.\n3. CPE stores the config somewhere (DB or file)\n4. CPE then notifys the DPE that the config has changed.\n5. DPE gathers config + state and sends it to the PE\n6. DPE performs the actions (using matahari) as instructed by PE\n\n\n### User accesses the event log.\n\n1. cloud management software accesses event log\n   Since CPE/DPE is only one part of the cloud software the logs\n   need to be inserted into a larger picture.\n   So we need an API to log important events.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsdake%2Fpacemaker-cloud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsdake%2Fpacemaker-cloud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsdake%2Fpacemaker-cloud/lists"}