notes for apim
This commit is contained in:
@@ -18,6 +18,9 @@ Here will lie articles, resources, notes and the like relating to my career. It
|
|||||||
|
|
||||||
Whereas [[https://www.zainezq.com/posts/career/career-list.html][this]] page will contain /finished/ notes regarding what I'm learning at different points in my career. For instance, the majority of November was learning about Software Engineering principles; things like requirements, user stories, lean and retrospectives.
|
Whereas [[https://www.zainezq.com/posts/career/career-list.html][this]] page will contain /finished/ notes regarding what I'm learning at different points in my career. For instance, the majority of November was learning about Software Engineering principles; things like requirements, user stories, lean and retrospectives.
|
||||||
|
|
||||||
|
* Notes
|
||||||
|
[[id:56fabaf6-e8aa-45d0-a1c1-89f247f0a93f][APIM]]
|
||||||
|
|
||||||
* Unread Articles
|
* Unread Articles
|
||||||
|
|
||||||
- https://www.finalroundai.com/blog/why-vibe-coding-leaves-you-with-skills-that-dont-last
|
- https://www.finalroundai.com/blog/why-vibe-coding-leaves-you-with-skills-that-dont-last
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
#+filetags: :books:org:index:
|
#+filetags: :books:org:index:
|
||||||
#+DATE: 2025-05-19
|
#+DATE: 2025-05-19
|
||||||
#+STARTUP: content
|
#+STARTUP: content
|
||||||
#+PROPERTY: GENERATED_AT 2026-01-11T19:55:01.702081
|
#+PROPERTY: GENERATED_AT 2026-01-17T09:07:39.615243
|
||||||
|
|
||||||
* Career
|
* Career
|
||||||
** Clean Code_ A Handbook of Agile Software Craftsmanship - Robert C. Martin :Read:
|
** Clean Code_ A Handbook of Agile Software Craftsmanship - Robert C. Martin :Read:
|
||||||
@@ -43,6 +43,14 @@
|
|||||||
:PATH: /home/zaine/master-folder/projects/calibre/library/Eric Freeman/Head First_ Design Patterns (22)
|
:PATH: /home/zaine/master-folder/projects/calibre/library/Eric Freeman/Head First_ Design Patterns (22)
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
|
** Quick Start Kubernetes :Unread:
|
||||||
|
:PROPERTIES:
|
||||||
|
:AUTHOR: Nigel Poulton
|
||||||
|
:STATUS: Unread
|
||||||
|
:CALIBRE_ID: 31
|
||||||
|
:PATH: /home/zaine/master-folder/projects/calibre/library/Nigel Poulton/Quick Start Kubernetes (31)
|
||||||
|
:END:
|
||||||
|
|
||||||
** Structure and Interpretation of Computer Programs, 2nd ed. :Unread:
|
** Structure and Interpretation of Computer Programs, 2nd ed. :Unread:
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:AUTHOR: Unknown
|
:AUTHOR: Unknown
|
||||||
@@ -78,6 +86,14 @@
|
|||||||
:PATH: /home/zaine/master-folder/projects/calibre/library/Makbool Ahmed Suhaarwi , Afzal Hoosen Elias (translator)/Khulfa-e-Rashideen (30)
|
:PATH: /home/zaine/master-folder/projects/calibre/library/Makbool Ahmed Suhaarwi , Afzal Hoosen Elias (translator)/Khulfa-e-Rashideen (30)
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
|
** Quick Start Kubernetes :Unread:
|
||||||
|
:PROPERTIES:
|
||||||
|
:AUTHOR: Nigel Poulton
|
||||||
|
:STATUS: Unread
|
||||||
|
:CALIBRE_ID: 31
|
||||||
|
:PATH: /home/zaine/master-folder/projects/calibre/library/Nigel Poulton/Quick Start Kubernetes (31)
|
||||||
|
:END:
|
||||||
|
|
||||||
** The Dose Effect :Unread:
|
** The Dose Effect :Unread:
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:AUTHOR: Tj Power
|
:AUTHOR: Tj Power
|
||||||
|
|||||||
@@ -8,3 +8,4 @@
|
|||||||
|
|
||||||
- [[id:63314cff-3a3f-49b4-9e76-4a359c51f55f][Books MOC]]
|
- [[id:63314cff-3a3f-49b4-9e76-4a359c51f55f][Books MOC]]
|
||||||
|
|
||||||
|
- [[id:3a8274ef-f2fe-486d-9caf-0c56982b9917][RSS Articles]]
|
||||||
|
|||||||
@@ -8,4 +8,3 @@
|
|||||||
|
|
||||||
* [[id:8CE93986-280B-45BD-9DF2-5D06586DDDE7][workflow-moc]]
|
* [[id:8CE93986-280B-45BD-9DF2-5D06586DDDE7][workflow-moc]]
|
||||||
|
|
||||||
* [[id:8a80a929-4a3c-4142-b86a-3d0aa9e78c03][2026 Targets]]
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:ID: 8a80a929-4a3c-4142-b86a-3d0aa9e78c03
|
:ID: 7f756445-de36-4c17-a7c2-213e626d8498
|
||||||
:END:
|
:END:
|
||||||
#+title: 2026 Targets
|
#+title: 2026 Targets
|
||||||
#+filetags: :misc:
|
#+filetags: :misc:
|
||||||
|
|||||||
@@ -10,3 +10,17 @@
|
|||||||
:READ_AT: 2026-01-11 21:29
|
:READ_AT: 2026-01-11 21:29
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
|
* [[https://coffeeandjunk.substack.com/p/loneliness][Loneliness Isn’t Just Something We Endure]]
|
||||||
|
:PROPERTIES:
|
||||||
|
:FEED: The Sunday Wisdom
|
||||||
|
:MINIFLUX_ID: 5363
|
||||||
|
:READ_AT: 2026-01-12 09:26
|
||||||
|
:END:
|
||||||
|
|
||||||
|
* [[https://bigthink.com/technology-innovation/dormant-volcanoes-copper-mining][What are dormant volcanoes good for? Copper mining]]
|
||||||
|
:PROPERTIES:
|
||||||
|
:FEED: Big Think
|
||||||
|
:MINIFLUX_ID: 5389
|
||||||
|
:READ_AT: 2026-01-12 11:14
|
||||||
|
:END:
|
||||||
|
|
||||||
|
|||||||
56
20260115152626-apim.org
Normal file
56
20260115152626-apim.org
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
:PROPERTIES:
|
||||||
|
:ID: 56fabaf6-e8aa-45d0-a1c1-89f247f0a93f
|
||||||
|
:END:
|
||||||
|
#+title: APIM
|
||||||
|
#+filetags: :docs:api:notes:career:
|
||||||
|
|
||||||
|
*Z notes on API management so I don’t forget*
|
||||||
|
|
||||||
|
1. API stands for application programming interface. It allows systems to communicate with each other.
|
||||||
|
2. API management (or APIM) is the workstream that aims to provide a new technology platform for Microlise. It introduces a separate layer between customers and Microlise’s existing API products.
|
||||||
|
|
||||||
|
The core pillars:
|
||||||
|
|
||||||
|
[[./assets/career/Screenshot 2026-01-14 154800.png]]
|
||||||
|
|
||||||
|
The workflow of publishing API’s:
|
||||||
|
|
||||||
|
[[./assets/career/APIOps.png]]
|
||||||
|
|
||||||
|
This is summarised below:
|
||||||
|
|
||||||
|
1. When someone wants to create an API, they do so by creating a repo and a C# project. Ideally we should use the beautiful templates (https://azdo.microlise.com/MicroliseCollection/Microlise/_git/Microlise.Templates).
|
||||||
|
|
||||||
|
2. When the engineer wants to deploy this API, it goes through a gated and main pipeline. Phase 2 of the main build will build the image using quay registry so it’s available there (quay.mms.local). The release will consume the artifact produced by the main pipeline and will push these endpoints into the Openshift server. Essentially it will pull the image from the quay registry, containerise it
|
||||||
|
|
||||||
|
Then publishing Api's into APIM (API management) using APIOps
|
||||||
|
|
||||||
|
1. The engineer will need to setup swagger build (docs explains how to do this)
|
||||||
|
2. The engineer will create a PR for an API that has setup the APIOps pipeline (ie added the yaml pipeline and configured the variables - again, docs explain this in detail)
|
||||||
|
3. There are two pipelines associated with this:
|
||||||
|
- The gated build: [[https://azdo.microlise.com/MicroliseCollection/Microlise/_taskgroup/c85996c9-d9ae-40ff-bd60-94b60db541a9][Link (Gated)]]
|
||||||
|
- The main build: [[https://azdo.microlise.com/MicroliseCollection/Microlise/_taskgroup/7bd21d7f-499b-487d-a0f7-2206ffdff841][Link (Main)]]
|
||||||
|
- You will see that the term ~spec~ is used a lot. This is simply a json/yaml representation of your API interface (what you expose to the customer).
|
||||||
|
- One of the gated tasks is linting, it uses the scripts in this directory to test the OpenAPI specification linting, see: [[https://azdo.microlise.com/MicroliseCollection/Microlise/_git/ApiManagement.Pipeline.AgentScripts][Link]].
|
||||||
|
4. Another task adds API Governance Council as reviewers if there are OpenAPI Specification changes. All this can be viewed in the task group (see point a).
|
||||||
|
5. Once the main build passes, it triggers an ApiOps pipeline (defined in step 2), which creates a PR in the APIOps repository ([[https://azdo.microlise.com/MicroliseCollection/Microlise/_git/Microlise.APIOps][Link]])
|
||||||
|
6. Once this PR is reviewed and approved by the Api GC, the Publish pipeline is triggered ([[https://azdo.microlise.com/MicroliseCollection/Microlise/_build?definitionId=1686&_a=summary][Link]]) which does a 2 way sync so that the APIM environments are in line with the OpenAPI specs. The publisher pipeline runs upto the CERT environment only, the PROD requires approval.
|
||||||
|
|
||||||
|
There are two openshift clusters, one is gen and one is prod. Anything not prod goes into gen, and no one can access the prod cluster besides Openshift itself so test well.
|
||||||
|
|
||||||
|
The link to the sharepoint site:
|
||||||
|
- [[https://microliseuk.sharepoint.com/sites/SoftwareEngineering/SitePages/API-Management.aspx?source=https%3A%2F%2Fmicroliseuk.sharepoint.com%2Fsites%2FSoftwareEngineering%2FSitePages%2FForms%2FByAuthor.aspx][Api management sharepoint]]
|
||||||
|
|
||||||
|
Link to the onboarding doc:
|
||||||
|
- [[https://microliseuk.sharepoint.com/:w:/r/sites/SoftwareEngineering/_layouts/15/Doc.aspx?sourcedoc=%7BCF78DE96-7CC0-482A-9A66-647771CB8A04%7D&file=APIOpsOnboardingDocumentation.docx&action=default&mobileredirect=true][Onboarding Doc]]
|
||||||
|
|
||||||
|
The link to the API management API gateway release:
|
||||||
|
- [[https://azdo.microlise.com/MicroliseCollection/Microlise/_release?_a=releases&view=mine&definitionId=71][Link]]
|
||||||
|
|
||||||
|
Reverse proxy:
|
||||||
|
- [[https://azdo.microlise.com/MicroliseCollection/Microlise/_build?definitionId=2439&_a=summary][Pipeline]]
|
||||||
|
- [[https://microliseuk.sharepoint.com/sites/SoftwareEngineering/SitePages/Support-Guide---APIM-Reverse-Proxy.aspx][Sharepoint]]
|
||||||
|
|
||||||
|
Read up on:
|
||||||
|
- Quick Start Kubernetes (nigel Poulton)
|
||||||
|
- How is openshift different from k8? ([[https://microliseuk.sharepoint.com/sites/StorageCompute/ContainerPlatformUsers/SitePages/How-is-OpenShift-different-from-Kubernetes.aspx][Link]])
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
"groups": {
|
"groups": {
|
||||||
"2": [
|
"2": [
|
||||||
{
|
{
|
||||||
"id": "8a80a929-4a3c-4142-b86a-3d0aa9e78c03",
|
"id": "7f756445-de36-4c17-a7c2-213e626d8498",
|
||||||
"title": "2026 Targets",
|
"title": "2026 Targets",
|
||||||
"url": "/20260107182221-2026_targets.html"
|
"url": "/20260107182221-2026_targets.html"
|
||||||
}
|
}
|
||||||
@@ -79,6 +79,11 @@
|
|||||||
"id": "e7f2302b-16eb-476d-a7b9-be12f077819d",
|
"id": "e7f2302b-16eb-476d-a7b9-be12f077819d",
|
||||||
"title": "AOC Notes",
|
"title": "AOC Notes",
|
||||||
"url": "/20241210001150-aoc_notes.html"
|
"url": "/20241210001150-aoc_notes.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "56fabaf6-e8aa-45d0-a1c1-89f247f0a93f",
|
||||||
|
"title": "APIM",
|
||||||
|
"url": "/20260115152626-apim.html"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"B": [
|
"B": [
|
||||||
@@ -201,7 +206,7 @@
|
|||||||
{
|
{
|
||||||
"id": "8fa3f476-6152-45f4-b618-50f1e4bce46c",
|
"id": "8fa3f476-6152-45f4-b618-50f1e4bce46c",
|
||||||
"title": "emacs_moc",
|
"title": "emacs_moc",
|
||||||
"url": "/20241210004247-emacs_stuff.html"
|
"url": "/20241210004247-emacs_moc.html"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"F": [
|
"F": [
|
||||||
@@ -311,7 +316,7 @@
|
|||||||
{
|
{
|
||||||
"id": "ae343652-96fe-4341-8a36-ec3a1abd0dc6",
|
"id": "ae343652-96fe-4341-8a36-ec3a1abd0dc6",
|
||||||
"title": "java_moc",
|
"title": "java_moc",
|
||||||
"url": "/20250402185735-technical_java_notes.html"
|
"url": "/20250402185735-java_moc.html"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "f9897f8e-2b63-4ad2-a55f-3787c4ac235f",
|
"id": "f9897f8e-2b63-4ad2-a55f-3787c4ac235f",
|
||||||
@@ -355,7 +360,7 @@
|
|||||||
{
|
{
|
||||||
"id": "bdb493df-db92-4c93-9558-0b10fdff3048",
|
"id": "bdb493df-db92-4c93-9558-0b10fdff3048",
|
||||||
"title": "linux_moc",
|
"title": "linux_moc",
|
||||||
"url": "/20250417173809-linux_moc.html"
|
"url": "/20250417173809-linux_stuff.html"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"M": [
|
"M": [
|
||||||
@@ -464,8 +469,8 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "65F747B1-3CB2-429A-9E26-ED8BC169E689",
|
"id": "65F747B1-3CB2-429A-9E26-ED8BC169E689",
|
||||||
"title": "recipes-main",
|
"title": "recipes-moc",
|
||||||
"url": "/20250717230336-recipes_moc.html"
|
"url": "/20250717230336-recipes_main.html"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "3a8274ef-f2fe-486d-9caf-0c56982b9917",
|
"id": "3a8274ef-f2fe-486d-9caf-0c56982b9917",
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ This file is auto-generated. Do not edit manually.
|
|||||||
#+end_comment
|
#+end_comment
|
||||||
|
|
||||||
* 2
|
* 2
|
||||||
- [[id:8a80a929-4a3c-4142-b86a-3d0aa9e78c03][2026 Targets]]
|
- [[id:7f756445-de36-4c17-a7c2-213e626d8498][2026 Targets]]
|
||||||
|
|
||||||
* A
|
* A
|
||||||
- [[id:effa2bf5-8b04-42d3-b9c1-17160dc4ddc2][Actual]]
|
- [[id:effa2bf5-8b04-42d3-b9c1-17160dc4ddc2][Actual]]
|
||||||
@@ -23,6 +23,7 @@ This file is auto-generated. Do not edit manually.
|
|||||||
- [[id:3b16e19a-62f0-4705-a451-a8790181941f][Airflow Dags]]
|
- [[id:3b16e19a-62f0-4705-a451-a8790181941f][Airflow Dags]]
|
||||||
- [[id:1ea42d73-3cd1-4cac-a6ee-028de21d08d5][Airflow Tasks]]
|
- [[id:1ea42d73-3cd1-4cac-a6ee-028de21d08d5][Airflow Tasks]]
|
||||||
- [[id:e7f2302b-16eb-476d-a7b9-be12f077819d][AOC Notes]]
|
- [[id:e7f2302b-16eb-476d-a7b9-be12f077819d][AOC Notes]]
|
||||||
|
- [[id:56fabaf6-e8aa-45d0-a1c1-89f247f0a93f][APIM]]
|
||||||
|
|
||||||
* B
|
* B
|
||||||
- [[id:580cc3a5-af8e-4cbe-b5ad-5b06680e6c37][Backlog]]
|
- [[id:580cc3a5-af8e-4cbe-b5ad-5b06680e6c37][Backlog]]
|
||||||
@@ -125,7 +126,7 @@ This file is auto-generated. Do not edit manually.
|
|||||||
* R
|
* R
|
||||||
- [[id:EA93341B-20C0-48A2-BD88-F24ED3C540DA][recipes-done]]
|
- [[id:EA93341B-20C0-48A2-BD88-F24ED3C540DA][recipes-done]]
|
||||||
- [[id:F7D68FF4-CAD0-4791-BAE4-AC20B84A8785][recipes-ideas]]
|
- [[id:F7D68FF4-CAD0-4791-BAE4-AC20B84A8785][recipes-ideas]]
|
||||||
- [[id:65F747B1-3CB2-429A-9E26-ED8BC169E689][recipes-main]]
|
- [[id:65F747B1-3CB2-429A-9E26-ED8BC169E689][recipes-moc]]
|
||||||
- [[id:3a8274ef-f2fe-486d-9caf-0c56982b9917][RSS Articles]]
|
- [[id:3a8274ef-f2fe-486d-9caf-0c56982b9917][RSS Articles]]
|
||||||
|
|
||||||
* S
|
* S
|
||||||
|
|||||||
BIN
assets/career/APIOps.png
Normal file
BIN
assets/career/APIOps.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 154 KiB |
BIN
assets/career/Screenshot 2026-01-14 154800.png
Normal file
BIN
assets/career/Screenshot 2026-01-14 154800.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 171 KiB |
@@ -25,6 +25,7 @@
|
|||||||
(require 'seq)
|
(require 'seq)
|
||||||
(require 'cl-lib)
|
(require 'cl-lib)
|
||||||
|
|
||||||
|
(setq org-export-with-broken-links t)
|
||||||
|
|
||||||
(setq org-id-locations-file "~/.emacs.d/.org-id-locations")
|
(setq org-id-locations-file "~/.emacs.d/.org-id-locations")
|
||||||
|
|
||||||
@@ -122,7 +123,6 @@
|
|||||||
|
|
||||||
(advice-add 'org-html-template :around #'z/org-html-wrap-content-for-stack)
|
(advice-add 'org-html-template :around #'z/org-html-wrap-content-for-stack)
|
||||||
|
|
||||||
|
|
||||||
(add-to-list 'load-path default-directory)
|
(add-to-list 'load-path default-directory)
|
||||||
|
|
||||||
(defvar z-shared-head
|
(defvar z-shared-head
|
||||||
@@ -194,8 +194,13 @@ Created with %c on <a href=\"https://www.archlinux.org/\">Arch</a> <a href=\"htt
|
|||||||
;; Configure LaTeX image generation
|
;; Configure LaTeX image generation
|
||||||
(setq org-latex-create-formula-image-program 'imagemagick)
|
(setq org-latex-create-formula-image-program 'imagemagick)
|
||||||
|
|
||||||
|
(setq org-roam-file-exclude-regexp
|
||||||
|
(concat
|
||||||
|
"\\.sync-conflict-"
|
||||||
|
"\\|all-files\\.org$"
|
||||||
|
"\\|#"
|
||||||
|
"\\|\\.~"
|
||||||
|
"\\|<.*>$"))
|
||||||
|
|
||||||
(defun my/get-org-roam-backlinks (filename)
|
(defun my/get-org-roam-backlinks (filename)
|
||||||
"Return backlinks for the given org-roam file. FILENAME should be the full path to the org-roam file."
|
"Return backlinks for the given org-roam file. FILENAME should be the full path to the org-roam file."
|
||||||
@@ -236,9 +241,20 @@ Created with %c on <a href=\"https://www.archlinux.org/\">Arch</a> <a href=\"htt
|
|||||||
(plist-get bl :link))))))))
|
(plist-get bl :link))))))))
|
||||||
|
|
||||||
|
|
||||||
(add-hook 'org-export-before-processing-hook
|
(defun my/org-export-insert-backlinks (_backend)
|
||||||
#'my/org-export-insert-backlinks)
|
"Insert Org-roam backlinks before export."
|
||||||
|
(when (and (buffer-file-name)
|
||||||
|
(not (string-match-p "all-files\\.org$" (buffer-file-name)))
|
||||||
|
(featurep 'org-roam)
|
||||||
|
(org-roam-node-at-point))
|
||||||
|
(let ((backlinks (my/get-org-roam-backlinks (buffer-file-name))))
|
||||||
|
(when backlinks
|
||||||
|
(goto-char (point-max))
|
||||||
|
(insert "\n#+ATTR_HTML: :class backlinks-section :id backlinks\n")
|
||||||
|
(insert "* Backlinks\n")
|
||||||
|
(insert "#+ATTR_HTML: :class backlinks-list\n")
|
||||||
|
(dolist (bl backlinks)
|
||||||
|
(insert (format "- %s\n" (plist-get bl :link))))))))
|
||||||
|
|
||||||
(setq org-id-locations-file "~/.emacs.d/.org-id-locations")
|
(setq org-id-locations-file "~/.emacs.d/.org-id-locations")
|
||||||
(setq org-roam-directory "~/master-folder/org_files/org_roam/")
|
(setq org-roam-directory "~/master-folder/org_files/org_roam/")
|
||||||
@@ -311,7 +327,6 @@ Created with %c on <a href=\"https://www.archlinux.org/\">Arch</a> <a href=\"htt
|
|||||||
"Full rebuild: Org, assets, and search index."
|
"Full rebuild: Org, assets, and search index."
|
||||||
(interactive)
|
(interactive)
|
||||||
(setq z/build-full-rebuild t)
|
(setq z/build-full-rebuild t)
|
||||||
(org-id-update-id-locations)
|
|
||||||
(z/generate-all-files-org)
|
(z/generate-all-files-org)
|
||||||
(org-publish "org-roam" t)
|
(org-publish "org-roam" t)
|
||||||
(org-publish "org-static" t)
|
(org-publish "org-static" t)
|
||||||
@@ -326,8 +341,6 @@ Created with %c on <a href=\"https://www.archlinux.org/\">Arch</a> <a href=\"htt
|
|||||||
(message "⚡ Fast rebuild complete (no search index)"))
|
(message "⚡ Fast rebuild complete (no search index)"))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(org-id-update-id-locations)
|
|
||||||
(cond
|
(cond
|
||||||
((member "--fast" command-line-args-left)
|
((member "--fast" command-line-args-left)
|
||||||
(z/build-fast))
|
(z/build-fast))
|
||||||
|
|||||||
Reference in New Issue
Block a user