feat: reorganize examples and add signature support to JobBuilder
- Reorganized examples into osiris/, sal/, and utils/ folders - Moved hardcoded scripts to separate .rhai files - Added signature() method to JobBuilder for job signing - Updated OSIRIS context to use block_in_place instead of runtime - Removed runtime field from OsirisContext - Added typed save() methods for Note and Event objects - Updated all examples to use new structure and APIs
This commit is contained in:
		
							
								
								
									
										95
									
								
								examples/sal/scripts/kubernetes/namespace_management.rhai
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										95
									
								
								examples/sal/scripts/kubernetes/namespace_management.rhai
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,95 @@
 | 
			
		||||
//! Kubernetes namespace management example
 | 
			
		||||
//!
 | 
			
		||||
//! This script demonstrates namespace creation and management operations.
 | 
			
		||||
//! 
 | 
			
		||||
//! Prerequisites:
 | 
			
		||||
//! - A running Kubernetes cluster
 | 
			
		||||
//! - Valid kubeconfig file or in-cluster configuration
 | 
			
		||||
//! - Permissions to create and manage namespaces
 | 
			
		||||
//!
 | 
			
		||||
//! Usage:
 | 
			
		||||
//!   herodo examples/kubernetes/namespace_management.rhai
 | 
			
		||||
 | 
			
		||||
print("=== SAL Kubernetes Namespace Management Example ===");
 | 
			
		||||
 | 
			
		||||
// Create a KubernetesManager
 | 
			
		||||
let km = kubernetes_manager_new("default");
 | 
			
		||||
print("Created KubernetesManager for namespace: " + namespace(km));
 | 
			
		||||
 | 
			
		||||
// Define test namespace names
 | 
			
		||||
let test_namespaces = [
 | 
			
		||||
    "sal-test-namespace-1",
 | 
			
		||||
    "sal-test-namespace-2", 
 | 
			
		||||
    "sal-example-app"
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
print("\n--- Creating Test Namespaces ---");
 | 
			
		||||
for ns in test_namespaces {
 | 
			
		||||
    print("Creating namespace: " + ns);
 | 
			
		||||
    try {
 | 
			
		||||
        namespace_create(km, ns);
 | 
			
		||||
        print("✓ Successfully created namespace: " + ns);
 | 
			
		||||
    } catch(e) {
 | 
			
		||||
        print("✗ Failed to create namespace " + ns + ": " + e);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Wait a moment for namespaces to be created
 | 
			
		||||
print("\nWaiting for namespaces to be ready...");
 | 
			
		||||
 | 
			
		||||
// Verify namespaces were created
 | 
			
		||||
print("\n--- Verifying Namespace Creation ---");
 | 
			
		||||
for ns in test_namespaces {
 | 
			
		||||
    let exists = namespace_exists(km, ns);
 | 
			
		||||
    if exists {
 | 
			
		||||
        print("✓ Namespace '" + ns + "' exists");
 | 
			
		||||
    } else {
 | 
			
		||||
        print("✗ Namespace '" + ns + "' was not found");
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// List all namespaces to see our new ones
 | 
			
		||||
print("\n--- Current Namespaces ---");
 | 
			
		||||
let all_namespaces = namespaces_list(km);
 | 
			
		||||
print("Total namespaces in cluster: " + all_namespaces.len());
 | 
			
		||||
for ns in all_namespaces {
 | 
			
		||||
    if ns.starts_with("sal-") {
 | 
			
		||||
        print("  🔹 " + ns + " (created by this example)");
 | 
			
		||||
    } else {
 | 
			
		||||
        print("  - " + ns);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Test idempotent creation (creating the same namespace again)
 | 
			
		||||
print("\n--- Testing Idempotent Creation ---");
 | 
			
		||||
let test_ns = test_namespaces[0];
 | 
			
		||||
print("Attempting to create existing namespace: " + test_ns);
 | 
			
		||||
try {
 | 
			
		||||
    namespace_create(km, test_ns);
 | 
			
		||||
    print("✓ Idempotent creation successful (no error for existing namespace)");
 | 
			
		||||
} catch(e) {
 | 
			
		||||
    print("✗ Unexpected error during idempotent creation: " + e);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Create managers for the new namespaces and check their properties
 | 
			
		||||
print("\n--- Creating Managers for New Namespaces ---");
 | 
			
		||||
for ns in test_namespaces {
 | 
			
		||||
    try {
 | 
			
		||||
        let ns_km = kubernetes_manager_new(ns);
 | 
			
		||||
        print("✓ Created manager for namespace: " + namespace(ns_km));
 | 
			
		||||
        
 | 
			
		||||
        // Get resource counts for the new namespace (should be mostly empty)
 | 
			
		||||
        let counts = resource_counts(ns_km);
 | 
			
		||||
        print("  Resource counts: " + counts);
 | 
			
		||||
    } catch(e) {
 | 
			
		||||
        print("✗ Failed to create manager for " + ns + ": " + e);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
print("\n--- Cleanup Instructions ---");
 | 
			
		||||
print("To clean up the test namespaces created by this example, run:");
 | 
			
		||||
for ns in test_namespaces {
 | 
			
		||||
    print("  kubectl delete namespace " + ns);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
print("\n=== Namespace management example completed! ===");
 | 
			
		||||
		Reference in New Issue
	
	Block a user