Skip to content

hokiegeek2/chapel-code-examples

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 

Repository files navigation

chapel-code-examples

The curl example leverages the Chapel Curl and URL modules. The Linux/UNIX curl command such as this to read from the Kubernetes API looks like this...

curl -k --url https://localhost:6443/namespaces/ --cert user.crt:s3cret --key user.key --cacert /etc/kubernetes/ssl/kube-ca.pem

...

and in Chapel it looks like this...

use URL;
use Curl;


# Import the C CURL setopt variables
extern const CURLOPT_VERBOSE:CURLoption;
extern const CURLOPT_USERNAME:CURLoption;
extern const CURLOPT_PASSWORD:CURLoption;
extern const CURLOPT_USE_SSL:CURLoption;
extern const CURLOPT_S
extern const CURLOPT_SSLKEY:CURLoption;
extern const CURLOPT_KEYPASSWD:CURLoption;
extern const CURLOPT_SSLCERTTYPE:CURLoption;
extern const CURLOPT_CAPATH:CURLoption;
extern const CURLOPT_CAINFO:CURLoption;

try {
    // Create the url reader
    var urlreader = openUrlReader('https://localhost:6443/namespaces/');

    // Configure the url reader for SSL
    Curl.setopt(urlreader, CURLOPT_VERBOSE, true);
    Curl.setopt(urlreader, CURLOPT_USE_SSL, true);
    Curl.setopt(urlreader, CURLOPT_SSLCERT, 'user.crt');
    Curl.setopt(urlreader, CURLOPT_SSLKEY, 'user.key');
    Curl.setopt(urlreader, CURLOPT_KEYPASSWD, 's3cret');
    Curl.setopt(urlreader, CURLOPT_CAINFO, '/etc/kubernetes/ssl/kube-ca.pem');
    Curl.setopt(urlreader, CURLOPT_CAPATH, '/etc/kubernetes/ssl');

    var str:bytes;

    while(urlreader.readline(str)) {
        write(str);
    }
} catch e : Error {
    // Do better error handling than this....
    try! writeln(e);
}