{"id":13616787,"url":"https://github.com/int32bit/openstack-workflow","last_synced_at":"2025-12-29T23:39:15.514Z","repository":{"id":73063227,"uuid":"61184945","full_name":"int32bit/openstack-workflow","owner":"int32bit","description":"Openstack Sequence Diagrams(Openstack操作序列图)","archived":false,"fork":false,"pushed_at":"2021-05-31T02:16:36.000Z","size":6857,"stargazers_count":496,"open_issues_count":5,"forks_count":204,"subscribers_count":61,"default_branch":"master","last_synced_at":"2024-11-08T01:37:08.916Z","etag":null,"topics":["nova","openstack"],"latest_commit_sha":null,"homepage":"https://github.com/int32bit/openstack-workflow","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/int32bit.png","metadata":{"files":{"readme":"README.en.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2016-06-15T06:57:30.000Z","updated_at":"2024-11-05T01:28:07.000Z","dependencies_parsed_at":null,"dependency_job_id":"62ce6647-b2bb-49e0-aee7-f7ed72dce658","html_url":"https://github.com/int32bit/openstack-workflow","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/int32bit%2Fopenstack-workflow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/int32bit%2Fopenstack-workflow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/int32bit%2Fopenstack-workflow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/int32bit%2Fopenstack-workflow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/int32bit","download_url":"https://codeload.github.com/int32bit/openstack-workflow/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248815540,"owners_count":21165941,"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","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":["nova","openstack"],"created_at":"2024-08-01T20:01:33.305Z","updated_at":"2025-12-29T23:39:15.469Z","avatar_url":"https://github.com/int32bit.png","language":"Python","readme":"[👉中文版本](./README.zh.md)\n\n# Openstack Sequence Diagrams\n\nDraw Openstack operation sequence diagrams using [Websequence Diagrams Tool](https://www.websequencediagrams.com/). An easiest way to track the source of Openstack and can be useful for user to learn Openstack or administer to problem troubleshooting. Noted that all these works are based on Openstack Liberty version, it may be changed in the future version, be careful to use if your Openstack version is not Liberty.\n\n## Action List\n\n### 1. Virtual Machine Manager\n\n- [x] [Boot](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/create.png)\n- [x] [Start](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/start.png)\n- [x] [Stop](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/stop.png)\n- [x] [Reboot](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/reboot.png)\n- [x] [Rebuild](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/rebuild.png)\n- [x] [Resize](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/resize.png)\n- [x] [List](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/list.png)\n- [x] [Delete](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/delete.png)\n- [x] [Reset State](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/reset_state.png)\n- [x] [Create Image(Snapshot)](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/snapshot.png)\n- [x] [Change Admin Password](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/changePassword.png)\n- [x] [Evacuate](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/evacuate.png)\n- [x] [Pause](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/pause.png)\n- [x] [Unpause](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/unpause.png)\n- [x] [Suspend](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/suspend.png)\n- [x] [Resume](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/resume.png)\n- [x] [Reset Network](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/reset_network.png)\n- [x] [Cold Migrate](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/migrate.png)\n- [x] [Live Migrate](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/live_migrate.png)\n- [x] [Shelve](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/shelve.png)\n- [x] [Shelve-offload](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/shelve_offload.png)\n- [x] [Unshelve](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/unshelve.png)\n- [x] [Lock](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/lock.png)\n- [x] [Unlock](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/unlock.png)\n- [x] [Backup](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/backup.png)\n- [x] [Refresh Network](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/reset_network.png)\n- [x] [Rename](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/rename.png)\n- [x] [Rescue](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/rescue.png)\n- [x] [Unrescue](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/unrescue.png)\n- [x] [volume Attach](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/volume_attach.png)\n- [x] [Volume Detach](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/volume-detach.png)\n- [x] [Interface Attach](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/interface-attach.png)\n- [x] [Interface Detach](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/nova/interface-detach.png)\n\n\n### 2. Todo\n\n- [ ] Cinder\n- [ ] Neutron\n- [ ] Sahara\n\n    * - [x] [Create cluster](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/sahara/create_cluster.png)\n\n![create cluster](https://raw.githubusercontent.com/int32bit/openstack-workflow/master/output/sahara/create_cluster.png)\n\n- [ ] Magnum\n- [ ] ...\n\n## Quick Start\n\n\n### 1. Generate diagrams\n\nBefore generate the diagrams on your localhost, ensure your machine can access the Internet and the `make` tools hava been correctly installed.\n\n```\nmake\n```\n\nAll diagrams generated will be placed in `./output` by default.\n\n### 2. Remove diagrams\n\nTo cleanup the diagrams, just run this as follows:\n\n```\nmake clean\n```\n\n\n## Some demo\n\n### 1. Create Server Workflow\n\n![create server workflow](output/nova/create.png)\n\n### 2. Reboot Server\n\n \n![reboot server](output/nova/reboot.png)\n\n### 3. Stop Server\n\n![stop server](output/nova/stop.png)\n\n### 4. Rebuild Server\n\n![rebuild server](output/nova/rebuild.png)\n\n\n## Need more diagrams ?\n\nDYI, as you need!\n\nFor example:\n\n```\ntitle pause a server\n\nparticipant client\nparticipant nova_api\n\nclient-\u003enova_api: pause\nactivate client\nactivate nova_api\n\n# nova/api/openstack/compute/pause_server.py _pause()\nnote over nova_api: authrize context\nnova_api-\u003edatabase: get instance by uuid\ndatabase-\u003enova_api: done\n\n# nova/compute/api.py pause()\nnote over nova_api: check policy\nnote over nova_api: check instance lock\nnote over nova_api: check instance cell\nnote over nova_api: ensure instance state is ACTIVE\nnova_api-\u003edatabase: task_state = PAUSING\ndatabase-\u003enova_api: done\n\nnote over nova_api: record pause action\n# nova/compute/rpcapi.py pause_instance()\nnova_api-\u003enova_compute: pause_instance\ndeactivate nova_api\ndeactivate client\nactivate nova_compute\n\n# nova/compute/manager.py pause_instance()\nnote over nova_compute: notify: pause.start\nnova_compute-\u003elibvirt: pause\nactivate libvirt\n\n# nova/virt/libvirt/driver.py pause()\nnote over libvirt: get domain\nnote over libvirt: domain.suspend()\nlibvirt-\u003enova_compute: done\ndeactivate libvirt\n# nova/compute/manager.py pause_instance()\nnova_compute-\u003edatabase: vm_state = vm_states.PAUSED\\ntask_state = None\ndatabase-\u003enova_compute: done\nnote over nova_compute: notify: pause.end\ndeactivate nova_compute\n```\n\n## Contributors\n\nThe following have contributed to this project:\n\n* AndiaQ\n* int32bit\n* ljjjustin\n\nMany thanks for this! (If I have forgotten you, please let me know and put you in the list of fame. :-))\n\n## License \n\nMIT\n","funding_links":[],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fint32bit%2Fopenstack-workflow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fint32bit%2Fopenstack-workflow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fint32bit%2Fopenstack-workflow/lists"}