Commit 7aa814d9 authored by Muhammad Umair Khan's avatar Muhammad Umair Khan
Browse files

Merge branch 'STF_685_MEC_IPE' into 'STF_707_TASK3'

Retrieve changes form STF_685_MEC_IPE

See merge request !15
parents 964fe4e4 0c6efabf
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
{
    "name": "Go",
    "image": "mcr.microsoft.com/devcontainers/go:1.25-bookworm",
    "customizations": {
        "vscode": {
            "extensions": [
                "golang.go"
            ]
        }
    },
    "postCreateCommand": "go version",
    "remoteUser": "vscode"
}
 No newline at end of file

.gitattributes

0 → 100644
+1 −0
Original line number Diff line number Diff line
* text=auto eol=lf
 No newline at end of file
+7 −27
Original line number Diff line number Diff line
version: "2"

formatters:
    enable:
        - goimports

linters:
    disable-all: true
    enable:
        - deadcode
        # - depguard
        # - dupl
        - errcheck
        # - gochecknoglobals
        # - gochecknoinits
        # - goconst
        # - gocritic
        # - gocyclo
        # - gofmt
        - goimports
        # - golint
        # - gosec
        - gosimple
        - govet
        - ineffassign
        # - interfacer
        # - lll
        # - maligned
        # - misspell
        # - nakedret
        # - prealloc
        # - scopelint
        - staticcheck
        - structcheck
        # - stylecheck
        - typecheck
        # - unconvert
        # - unparam
        - unused
 No newline at end of file
        - varcheck
 No newline at end of file

Tiltfile

0 → 100644
+288 −0
Original line number Diff line number Diff line
# ============================================
# MEC Sandbox Tiltfile
# ============================================
# Automates the build > dockerize > deploy cycle for meepctl.
#
# Usage:
#   tilt up              # Start watching (platform must already be deployed)
#   tilt down            # Stop watching
#
# Tilt UI: http://localhost:10350
#
# What this does:
#   - Watches go-apps/<app>/ for Go code changes > build + dockerize + restart pods
#   - Watches charts/<sandbox-app>/ for chart changes > re-dockerize meep-virt-engine + redeploy
#   - Watches charts/<core-app>/ for chart changes > redeploy core app
#   - Provides manual buttons for dep management
# ============================================

# ---- Configuration ----

# Core apps: Go source + chart changes trigger build/dockerize/deploy
CORE_APPS = [
    'meep-auth-svc',
    'meep-mon-engine',
    'meep-platform-ctrl',
    'meep-sandbox-api',
    'meep-virt-engine',
    'meep-webhook',
]

# Sandbox MEC API apps: Go source changes trigger build/dockerize/restart
# Chart changes trigger meep-virt-engine re-dockerize + redeploy
SANDBOX_APPS = [
    'meep-ams',            # MEC021
    'meep-app-enablement', # MEC011
    'meep-dai',            # MEC016
    'meep-federation',     # MEC040
    'meep-gis-engine',
    'meep-iot',            # MEC033
    'meep-loc-serv',       # MEC013
    'meep-metrics-engine',
    'meep-rnis',           # MEC012
    'meep-sandbox-ctrl',
    'meep-sss',            # MEC046
    'meep-tm',             # MEC015
    'meep-vis',            # MEC030
    'meep-wais',           # MEC028
]

# Dependency apps: manual buttons only (these rarely change)
DEP_APPS = [
    'meep-cert-manager',
    'meep-couchdb',
    'meep-docker-registry',
    'meep-grafana',
    'meep-influxdb',
    'meep-ingress',
    'meep-kube-state-metrics',
    'meep-open-map-tiles',
    'meep-postgis',
    'meep-prometheus',
    'meep-redis',
    'meep-thanos',
    'meep-thanos-archive',
]

# ============================================
# Helper: restart all K8s deployments using a given image name
# ============================================
# Sandbox deployments have unpredictable names (e.g. mep1-mec033-1 uses meep-iot image).
# This finds ALL deployments across ALL namespaces using the given image and restarts them.
def restart_deploys_by_image_cmd(app):
    col_spec = 'NS:.metadata.namespace,NAME:.metadata.name,IMAGE:.spec.template.spec.containers' + '[0]' + '.image'
    cmd = 'echo "Restarting deployments using image: ' + app + '..." && '
    cmd = cmd + 'kubectl get deploy -A -o custom-columns=' + col_spec + ' --no-headers '
    cmd = cmd + '| grep ' + app + ' '
    cmd = cmd + '| while read NS NAME IMAGE; do '
    cmd = cmd + 'echo "  Restarting $NS/$NAME"; '
    cmd = cmd + 'kubectl rollout restart deploy "$NAME" -n "$NS"; '
    cmd = cmd + 'done; '
    cmd = cmd + 'echo "Done."'
    return cmd

# ============================================
# CORE APPS - Go code changes
# ============================================
# When Go source code changes:
#   build > dockerize > force redeploy via meepctl
# ============================================

for app in CORE_APPS:
    # Skip meep-virt-engine here; it gets special handling below
    if app == 'meep-virt-engine':
        continue

    local_resource(
        app + ':code',
        cmd='echo "=== [' + app + '] Go code changed ===" && meepctl build ' + app + ' --nolint && meepctl dockerize ' + app + ' && meepctl deploy core ' + app + ' --force',
        deps=['go-apps/' + app + '/'],
        ignore=[
            'go-apps/' + app + '/vendor/',
        ],
        auto_init=False,
        trigger_mode=TRIGGER_MODE_AUTO,
        labels=['core'],
    )

# ============================================
# CORE APPS - Chart changes
# ============================================
# When a core app's Helm chart changes:
#   force redeploy only (no build/dockerize needed)
# ============================================

for app in CORE_APPS:
    if app == 'meep-virt-engine':
        continue

    local_resource(
        app + ':chart',
        cmd='echo "=== [' + app + '] Helm chart changed ===" && meepctl deploy core ' + app + ' --force',
        deps=['charts/' + app + '/'],
        auto_init=False,
        trigger_mode=TRIGGER_MODE_AUTO,
        labels=['core'],
    )

# ============================================
# SANDBOX APPS - Go code changes
# ============================================
# When sandbox app Go source changes:
#   build > dockerize > restart all K8s deployments using that image
#   (sandbox deployments have dynamic names, so we find them by image)
# ============================================

for app in SANDBOX_APPS:
    local_resource(
        app + ':code',
        cmd='echo "=== [' + app + '] Go code changed ===" && meepctl build ' + app + ' --nolint && meepctl dockerize ' + app + ' && ' + restart_deploys_by_image_cmd(app),
        deps=['go-apps/' + app + '/'],
        ignore=[
            'go-apps/' + app + '/vendor/',
        ],
        auto_init=False,
        trigger_mode=TRIGGER_MODE_MANUAL,
        labels=['sandbox'],
    )

# ============================================
# MEEP-VIRT-ENGINE - Special handling
# ============================================
# meep-virt-engine bundles ALL sandbox Helm charts as docker-data.
# Triggers:
#   1. Own Go code changes > build + dockerize + deploy -f
#   2. ANY sandbox chart changes > dockerize + deploy -f
#      (because charts are packaged into virt-engine's Docker image)
# ============================================

# 1. meep-virt-engine own Go code changes
local_resource(
    'meep-virt-engine:code',
    cmd='echo "=== [meep-virt-engine] Go code changed ===" && meepctl build meep-virt-engine --nolint && meepctl dockerize meep-virt-engine && meepctl deploy core meep-virt-engine --force',
    deps=['go-apps/meep-virt-engine/'],
    ignore=[
        'go-apps/meep-virt-engine/vendor/',
    ],
    auto_init=False,
    trigger_mode=TRIGGER_MODE_AUTO,
    labels=['core'],
)

# 2. meep-virt-engine chart change (its own chart)
local_resource(
    'meep-virt-engine:chart',
    cmd='echo "=== [meep-virt-engine] Helm chart changed ===" && meepctl deploy core meep-virt-engine --force',
    deps=['charts/meep-virt-engine/'],
    auto_init=False,
    trigger_mode=TRIGGER_MODE_AUTO,
    labels=['core'],
)

# 3. ANY sandbox app chart changes > re-dockerize + redeploy meep-virt-engine
#    (because sandbox charts are packaged inside virt-engine's Docker image)
sandbox_chart_deps = ['charts/' + app + '/' for app in SANDBOX_APPS]
local_resource(
    'meep-virt-engine:sandbox-charts',
    cmd='echo "=== [meep-virt-engine] Sandbox chart changed ===" && echo "Re-dockerizing meep-virt-engine to bundle updated charts..." && meepctl dockerize meep-virt-engine && meepctl deploy core meep-virt-engine --force',
    deps=sandbox_chart_deps,
    auto_init=False,
    trigger_mode=TRIGGER_MODE_AUTO,
    labels=['core'],
)

# ============================================
# DEPENDENCY APPS - Manual buttons
# ============================================
# Dependencies are deployed once and rarely change.
# These are manual-trigger buttons in the Tilt UI.
# ============================================

local_resource(
    'dep:deploy-all',
    cmd='meepctl deploy dep',
    auto_init=False,
    trigger_mode=TRIGGER_MODE_MANUAL,
    labels=['dep'],
)

local_resource(
    'dep:delete-all',
    cmd='meepctl delete dep',
    auto_init=False,
    trigger_mode=TRIGGER_MODE_MANUAL,
    labels=['dep'],
)

for app in DEP_APPS:
    local_resource(
        'dep:' + app,
        cmd='meepctl deploy dep ' + app + ' --force',
        auto_init=False,
        trigger_mode=TRIGGER_MODE_MANUAL,
        labels=['dep'],
    )

# ============================================
# UTILITY - Manual buttons
# ============================================

local_resource(
    'util:deploy-core-all',
    cmd='meepctl deploy core',
    auto_init=False,
    trigger_mode=TRIGGER_MODE_MANUAL,
    labels=['util'],
)

local_resource(
    'util:delete-core-all',
    cmd='meepctl delete core',
    auto_init=False,
    trigger_mode=TRIGGER_MODE_MANUAL,
    labels=['util'],
)

local_resource(
    'util:build-all',
    cmd='meepctl build all',
    auto_init=False,
    trigger_mode=TRIGGER_MODE_MANUAL,
    labels=['util'],
)

local_resource(
    'util:dockerize-all',
    cmd='meepctl dockerize all',
    auto_init=False,
    trigger_mode=TRIGGER_MODE_MANUAL,
    labels=['util'],
)

local_resource(
    'util:docker-prune',
    cmd='docker image prune -f',
    auto_init=False,
    trigger_mode=TRIGGER_MODE_MANUAL,
    labels=['util'],
)

local_resource(
    'util:pod-status',
    cmd='kubectl get pods -A | grep meep-',
    auto_init=False,
    trigger_mode=TRIGGER_MODE_MANUAL,
    labels=['util'],
)

# ============================================
# meep-ingress-certs - chart-only core app (no Go code)
# ============================================
local_resource(
    'meep-ingress-certs:chart',
    cmd='echo "=== [meep-ingress-certs] Chart changed ===" && meepctl deploy core meep-ingress-certs --force',
    deps=['charts/meep-ingress-certs/'],
    auto_init=False,
    trigger_mode=TRIGGER_MODE_AUTO,
    labels=['core'],
)
+9 −8
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@
meepOrigin: core
prometheusScrape: true
image:
  repository: quay.io/coreos/kube-state-metrics
  repository: rancher/mirrored-coreos-kube-state-metrics
  tag: v1.9.7
  pullPolicy: IfNotPresent

@@ -124,23 +124,23 @@ podDisruptionBudget: {}
# Available collectors for kube-state-metrics. By default all available
# collectors are enabled.
collectors:
  certificatesigningrequests: true
  certificatesigningrequests: false
  configmaps: true
  cronjobs: true
  cronjobs: false
  daemonsets: true
  deployments: true
  endpoints: true
  horizontalpodautoscalers: true
  ingresses: true
  horizontalpodautoscalers: false
  ingresses: false
  jobs: true
  limitranges: true
  mutatingwebhookconfigurations: true
  mutatingwebhookconfigurations: false
  namespaces: true
  networkpolicies: true
  nodes: true
  persistentvolumeclaims: true
  persistentvolumes: true
  poddisruptionbudgets: true
  poddisruptionbudgets: false
  pods: true
  replicasets: true
  replicationcontrollers: true
@@ -149,10 +149,11 @@ collectors:
  services: true
  statefulsets: true
  storageclasses: true
  validatingwebhookconfigurations: true
  validatingwebhookconfigurations: false
  verticalpodautoscalers: false
  volumeattachments: true
 

# Enabling kubeconfig will pass the --kubeconfig argument to the container
kubeconfig:
  enabled: false
Loading