Open Mainframe Project Cloudstack meeting


James Vincent
 

Excellent points Mike.  I was using the IBM CC doc 1.0.1 version as a base; the web site has much better content.  I agree that since this work was already done, maybe THIS committee should use that as the foundation and offer any changes or additional requirements.

 

I’ve felt like we are trying to reinvent the wheel and you put it into proper perspective.  The OMP governing team needs to chime in on what exactly our mission of this committee should be given all we know right now.

 

PS. I responded with the OMP workgroup listserv address to be sure all the right folks see this instead of the list of email addresses.

 

----------------------------------------

James Vincent

Sr. Systems Architect

Velocity Software Inc.

196-D Castro St

Mountain View, CA 94041

Office Main: (650) 964 8867

Fax: (650) 964 9012

http://www.velocitysoftware.com/

vsi-30b

 

From: Mike Friesenegger <mikef@...>
Sent: Friday, July 27, 2018 9:36 AM
To: Michael MacIsaac <mike99mac@...>; Phil (CORP) Tully <phil.tully@...>; robert.starr@...; rsrufus@...; Richard.Packer@...; sam.dangelo@...; Scott.Hahn@...; Vinny Terrone <Vincent.Terrone@...>; joseph.vitale@...; Gregory.MacKinnon@...; Frank Heimes <frank.heimes@...>; Ivan Dobos <ivan.dobos@...>; Rick Troth <rmt@...>; Chen CH Ji <jichenjc@...>; Erich Amrehn <AMREHN@...>; Paul Flint <flint@...>; Akanksha Srivastava <akanksha.dlf@...>; AMIT KUMAR JAISWAL <amitkumarj441@...>; Rohit Sakala <rohitsakala@...>; Javier Romero <xavinux@...>; djones@...; John Mertic <jmertic@...>; Harry.Williams@...; Martha McConaghy <martha.mcconaghy@...>; Robert A Dahlberg <dahlbergra@...>; Cameron W Seay <cwseay@...>; Rahmira S Rufus <rsrufus@...>; Russ Herrold <herrold@...>; Neale Ferguson <neale@...>; Alberto Planas Dominguez <aplanas@...>; Dirk Mueller <DMueller@...>; T.R. Bosworth <thomas.bosworth@...>; Bill Bitner <bitnerb@...>; David Rossi <dzrossi@...>; Emily K Hugenbruch <ekhugenbruch@...>; Greg Lacey <lacey@...>; Paul W Novak <pwnovak@...>; Setareh Mehrabanzad <setarehm@...>; Barton Robinson <barton@...>; James Vincent <james@...>; Tony Noto <Tony@...>; Leonard Santalucia <LSantalucia@...>; Yongkook Kim <Ykim@...>
Subject: Re: Open Mainframe Project Cloudstack meeting

 

Apologizes but I will not be able to join today's call.

IBM has published APIs as part of the z/VM cloud connector for the community at http://cloudlib4zvm.readthedocs.io/en/latest/restapi.html.   As well as having published APIs they have code written.  All of this is published under the Apache 2.0 open source license.  The APIs and code are being used by the latest OpenStack z/VM driver that has been accepted upstream by the OpenStack community for the latest OpenStack development codestream which is called Rocky - https://review.openstack.org/#/q/status:merged+project:openstack/nova+branch:master+topic:bp/add-zvm-driver-rocky

Are members of the Cloudstack project reviewing these API as an implementation that has been accepted by a community larger then the OMP?  Will the CloudStack project consider ways to combine the APIs definitions that are listed below with the z/VM Cloud Connector API definitions?

Regards,

Mike

On 07/27/2018 04:54 AM, Michael MacIsaac wrote:

Hi everyone,

 

There is a meeting today in about 4 hours - hope to see you there.

 

I see a new section was added to the google RESTful API document we are working on.  

 

 

Agenda:

1. Presentation by Russ Herold  => Postponed

 

2. RESTful API document format:

   a. Google Docs/WYSIWYG  

   b. github/.md file       (John Mertic)

   Can/should we maintain both?   

   

3. Quick review of RESTful API google docs => From Mike M

 

Required Operations

  => agreed that add/remove memory/CPUs could be condensed from 2 calls down to 1 each

 

API Recommendations

 

{“api_name”: {“var1”:”val1”,“var2”:”val2”, … } } => did not validate on jsonlint.com

 

{ "api_name": {"var1": "val1", "var2": "val2"} } => validated 

 

API table => overall => APIs should not have spaces 

API table => List Guests => Ours is list-systems (Do end users use the term "guests"?)

 

API table => List Guests => Input =>  should allow filters. 

For example, our "list-systems" API allows filters on:      

[nodeList]   - host name

[distro]     - Linux distribution

[env]        - environment

[group]      - Linux (LDAP) group

[owner]      - Linux (LDAP) user

[product]    - application name

[project]    - 2nd level grouping under group 

[serverType] -

[systemType] -

 

API table => List Guests => Outnput => an example of output name/values:

             Guest Details => just List Guests with a -l flag? 

 

 

{

 "systems":

  [

    {

     "hostName": "cdlqssz00071.example.com",

     "LPARname": "ZVM3",

     "zVMsystemID": "ZVM3",

     "zVMuserID": "QSS00071",

     "state": "up",

     "CPUs": "3",

     "distro": "SLES-12-SP3",

     "group": "vmlinux",

     "IPaddress": "10.1.12.185",

     "kernel": "4.4.132-94.33",

     "memory": "1G",

     "created": "1532170449",

     "description": "none",

     "env": "none",

     "expires": "1532170449",

     "owner": "none",

     "product": "none",

     "srvType": "none",

     "sysType": "none"

    },

    {

     "hostName": "cdlqssz00072.example.com",

     "LPARname": "ZVM3",

     "zVMsystemID": "ZVM3",

     "zVMuserID": "QSS00072",

     "state": "up",

     "CPUs": "3",

     "distro": "SLES-12-SP3",

     "group": "vmlinux",

     "IPaddress": "10.1.12.184",

     "kernel": "4.4.132-94.33",

     "memory": "1G",

     "created": "1532170458",

     "description": "none",

     "env": "none",

     "expires": "1532170458",

     "owner": "none",

     "product": "none",

     "srvType": "none",

     "sysType": "none"

    },

     ...

Create Guest    => build-system

Add Disk        => add-minidisk

Delete Disk     => remove-minidisk

Guest Directory => query-direntry

Delete Guest    => back to the discussion of one-phase vs. two-phase

Start Guest     => power-on (should be power-on-system)

Stop Guest      => power-off (should be power-off-system)

Pause Guest     => stop-systems

Unpause Guest   => start-systems

Reset Guest     => reboot-systems

Guest Console   

 

 

Reference: all RESTful APIs in development:

 

API command    type zoom command         Args [opt'l],req'd                  Description

-----------    ---- ------------         ------------------                  -----------

add-clients     rw  zaddclients          [flags],nodeList,[grpPrj],[user]       Add managed Linux systems to the zoom tree

add-cpus        rw  zaddcpus             [flags],jobID,nodeList,numCPUs,[grpPrj],[user] Add virtual CPUs to systems

add-memory      rw  zaddmemory           [flags],jobID,nodeList,amount,[grpPrj],[user] Add memory to systems

add-minidisk    rw  zaddminidisk         [flags],jobID,nodeList,vdev,size,[grpPrj],[user] Add a minidisk to systems

build-systems   rw  zbuildsystem         [flags],jobID,hostName,[CPUs],[desc],[distro],[env],[expMonths],[grpPrj],[memory],[product],[srvType],[qty],[user] Build a Linux

destroy-system  rw  zdestroysystem       [flags],jobID,hostName,[grpPrj],[user] Destroy an existing Linux system

find-objects    ro  zfindobjects         [flags],pattern                        Find objects in zoom tree

help-rest-api   ro  zhelprestapi         [flags]                                Show summary of all RESTful APIs

help-zoom-cli   ro  zhelpcli             [flags]                                Show summary of all line commands

list-cecs       ro  zlscecs              [flags],[pattern]                      List CECs in the zoom tree

list-commands   ro  zlscommands          [flags]                                Show all zoom commands

list-cpus       ro  zlscpus              [flags],[nodeList]                     List CPUs on Linux nodes

list-dirs       ro  zls,-a               [flags]                                Show directories in the zoom tree

list-groups     ro  zlsgroups            [flags],[nodeList]                     List zoom groups

list-job        ro  zlsjobs              [flags],jobID                          List the status of the specified job

list-lpars      ro  zlslpars             [flags],[pattern]                      List LPARs in the zoom tree

list-memory     ro  zlsmemory            [flags],[nodeList]                     List memory on Linux nodes

list-minidisks  ro  zlsminidisks         [flags],[nodeList]                     List minidisks on Linux nodes

list-opergroups ro  zlsopergroups        [flags],[pattern]                      List operator groups 

list-quotas     ro  zlsquotas            [flags],[pattern]                      Show quotas

list-systems    ro  zlsclients,-J        [flags],[nodeList],[distro],[env],[grp],[owner],[product][prj],[serverType],[sysType] List Linux nodes

list-tree       ro  zlstree,-a           [flags]                                Show the zoom tree

monitor-job     ro  zmonitorjob          [flags],jobID,[iters]                  Monitor the specified job until complete or timeout 

ping-systems    ro  zpingnodes,-c        [flags],[nodeList]                     Ping Linux systems

power-off       rw  zpoweroffclients     [flags],jobID,nodeList,[grpPrj],[user] Power off Linux nodes

power-on        rw  zpoweronclients      [flags],jobID,nodeList,[grpPrj],[user] Power on Linux nodes

purge-system    rw  zpurgesystem         [flags],jobID,hostName,[grpPrj],[user] Purge the virutal machine of existing Linux system

query-chpids    ro  zqchpid              [flags],[chanPath]                     Query z/VM channel paths

query-dasd      ro  zqdasd               [flags],[rdevRange]                    Query z/VM DASD

query-direntry  ro  zqdirentry           [flags],entry                          Query a z/VM USER, PROFILE or IDENTITY

query-fcp       ro  zqfcp                [flags],[rdevRange]                    Query z/VM FCP devices

query-osa       ro  zqosa                [flags]                                Query z/VM OSA devices

query-pav       ro  zqpav                [flags],[rdevRange]                    Query z/VM PAV devices

query-rdev      ro  zqrdev               [flags],[rdevRange]                    Query z/VM real devices

reboot-systems  rw  zrebootclients,-y    [flags],[grpPrj],jobID,nodeList,[user] Reboot Linux nodes

rebuild-system  rw  zrebuildsystem       [flags],jobID,hostName,[grpPrj],[distro],[desc],[user] Rebuild a Linux system

remove-clients  rw  zrmclients,-y        [flags],nodeList,[grpPrj],[user]       Remove managed Linux systems from the zoom tree

remove-cpus     rw  zrmcpus,-y           [flags],jobID,nodeList,numCPUs,[grpPrj],[user] Remove virtual CPUs from systems

remove-memory   rw  zrmmemory,-y         [flags],jobID,nodeList,amount,[grpPrj],[user]  Remove memory from systems

remove-minidisk rw  zrmminidisk,-y       [flags],jobID,nodeList,vdev,[grpPrj],[user]    Remove a minidisk from systems

run-command     rw  zruncommand          [flags],nodeList,command,[grpPrj]      Run a command on Linux systems

run-cp-command  rw  zruncpcommand        [flags],systems,command,[user]         Run a CP command on z/VM systems

set-attributes  rw  zsetattributes       [flags],nodeList,[env],[grpPrj],[grp],[owner],[product],[prj],[srvType],[sysType]

start-systems   rw  zstartclients        [flags],jobID,nodeList,[grpPrj],[user] Start systems with stopped or paused CPUs

stop-systems    rw  zstopclients         [flags],jobID,nodeList,[grpPrj],[user] Stop or pause CPUs on active systems

sync-systems    rw  zsyncnodes           [flags],nodeList,[grpPrj],[user]       Synchronize one or more nodes by freshening Linux and z/VM data

sync-tree       rw  zsynctree            [flags],[grpPrj],[user]                Synchronize entire tree by freshening Linux and z/VM data

 

--

     -Mike MacIsaac

 


Mike Friesenegger <mikef@...>
 

Thank you James.

Mike


-------- Original message --------
From: James Vincent <james@...>
Date: 7/27/18 8:30 AM (GMT-07:00)
To: Mike Friesenegger <mikef@...>
Cc: omp-wg-cloudstack@...
Subject: Re: [omp-wg-cloudstack] Open Mainframe Project Cloudstack meeting

Excellent points Mike.  I was using the IBM CC doc 1.0.1 version as a base; the web site has much better content.  I agree that since this work was already done, maybe THIS committee should use that as the foundation and offer any changes or additional requirements.

 

I’ve felt like we are trying to reinvent the wheel and you put it into proper perspective.  The OMP governing team needs to chime in on what exactly our mission of this committee should be given all we know right now.

 

PS. I responded with the OMP workgroup listserv address to be sure all the right folks see this instead of the list of email addresses.

 

----------------------------------------

James Vincent

Sr. Systems Architect

Velocity Software Inc.

196-D Castro St

Mountain View, CA 94041

Office Main: (650) 964 8867

Fax: (650) 964 9012

http://www.velocitysoftware.com/

vsi-30b

 

From: Mike Friesenegger <mikef@...>
Sent: Friday, July 27, 2018 9:36 AM
To: Michael MacIsaac <mike99mac@...>; Phil (CORP) Tully <phil.tully@...>; robert.starr@...; rsrufus@...; Richard.Packer@...; sam.dangelo@...; Scott.Hahn@...; Vinny Terrone <Vincent.Terrone@...>; joseph.vitale@...; Gregory.MacKinnon@...; Frank Heimes <frank.heimes@...>; Ivan Dobos <ivan.dobos@...>; Rick Troth <rmt@...>; Chen CH Ji <jichenjc@...>; Erich Amrehn <AMREHN@...>; Paul Flint <flint@...>; Akanksha Srivastava <akanksha.dlf@...>; AMIT KUMAR JAISWAL <amitkumarj441@...>; Rohit Sakala <rohitsakala@...>; Javier Romero <xavinux@...>; djones@...; John Mertic <jmertic@...>; Harry.Williams@...; Martha McConaghy <martha.mcconaghy@...>; Robert A Dahlberg <dahlbergra@...>; Cameron W Seay <cwseay@...>; Rahmira S Rufus <rsrufus@...>; Russ Herrold <herrold@...>; Neale Ferguson <neale@...>; Alberto Planas Dominguez <aplanas@...>; Dirk Mueller <DMueller@...>; T.R. Bosworth <thomas.bosworth@...>; Bill Bitner <bitnerb@...>; David Rossi <dzrossi@...>; Emily K Hugenbruch <ekhugenbruch@...>; Greg Lacey <lacey@...>; Paul W Novak <pwnovak@...>; Setareh Mehrabanzad <setarehm@...>; Barton Robinson <barton@...>; James Vincent <james@...>; Tony Noto <Tony@...>; Leonard Santalucia <LSantalucia@...>; Yongkook Kim <Ykim@...>
Subject: Re: Open Mainframe Project Cloudstack meeting

 

Apologizes but I will not be able to join today's call.

IBM has published APIs as part of the z/VM cloud connector for the community at http://cloudlib4zvm.readthedocs.io/en/latest/restapi.html.   As well as having published APIs they have code written.  All of this is published under the Apache 2.0 open source license.  The APIs and code are being used by the latest OpenStack z/VM driver that has been accepted upstream by the OpenStack community for the latest OpenStack development codestream which is called Rocky - https://review.openstack.org/#/q/status:merged+project:openstack/nova+branch:master+topic:bp/add-zvm-driver-rocky

Are members of the Cloudstack project reviewing these API as an implementation that has been accepted by a community larger then the OMP?  Will the CloudStack project consider ways to combine the APIs definitions that are listed below with the z/VM Cloud Connector API definitions?

Regards,

Mike

On 07/27/2018 04:54 AM, Michael MacIsaac wrote:

Hi everyone,

 

There is a meeting today in about 4 hours - hope to see you there.

 

I see a new section was added to the google RESTful API document we are working on.  

 

 

Agenda:

1. Presentation by Russ Herold  => Postponed

 

2. RESTful API document format:

   a. Google Docs/WYSIWYG  

   b. github/.md file       (John Mertic)

   Can/should we maintain both?   

   

3. Quick review of RESTful API google docs => From Mike M

 

Required Operations

  => agreed that add/remove memory/CPUs could be condensed from 2 calls down to 1 each

 

API Recommendations

 

{“api_name”: {“var1”:”val1”,“var2”:”val2”, … } } => did not validate on jsonlint.com

 

{ "api_name": {"var1": "val1", "var2": "val2"} } => validated 

 

API table => overall => APIs should not have spaces 

API table => List Guests => Ours is list-systems (Do end users use the term "guests"?)

 

API table => List Guests => Input =>  should allow filters. 

For example, our "list-systems" API allows filters on:      

[nodeList]   - host name

[distro]     - Linux distribution

[env]        - environment

[group]      - Linux (LDAP) group

[owner]      - Linux (LDAP) user

[product]    - application name

[project]    - 2nd level grouping under group 

[serverType] -

[systemType] -

 

API table => List Guests => Outnput => an example of output name/values:

             Guest Details => just List Guests with a -l flag? 

 

 

{

 "systems":

  [

    {

     "hostName": "cdlqssz00071.example.com",

     "LPARname": "ZVM3",

     "zVMsystemID": "ZVM3",

     "zVMuserID": "QSS00071",

     "state": "up",

     "CPUs": "3",

     "distro": "SLES-12-SP3",

     "group": "vmlinux",

     "IPaddress": "10.1.12.185",

     "kernel": "4.4.132-94.33",

     "memory": "1G",

     "created": "1532170449",

     "description": "none",

     "env": "none",

     "expires": "1532170449",

     "owner": "none",

     "product": "none",

     "srvType": "none",

     "sysType": "none"

    },

    {

     "hostName": "cdlqssz00072.example.com",

     "LPARname": "ZVM3",

     "zVMsystemID": "ZVM3",

     "zVMuserID": "QSS00072",

     "state": "up",

     "CPUs": "3",

     "distro": "SLES-12-SP3",

     "group": "vmlinux",

     "IPaddress": "10.1.12.184",

     "kernel": "4.4.132-94.33",

     "memory": "1G",

     "created": "1532170458",

     "description": "none",

     "env": "none",

     "expires": "1532170458",

     "owner": "none",

     "product": "none",

     "srvType": "none",

     "sysType": "none"

    },

     ...

Create Guest    => build-system

Add Disk        => add-minidisk

Delete Disk     => remove-minidisk

Guest Directory => query-direntry

Delete Guest    => back to the discussion of one-phase vs. two-phase

Start Guest     => power-on (should be power-on-system)

Stop Guest      => power-off (should be power-off-system)

Pause Guest     => stop-systems

Unpause Guest   => start-systems

Reset Guest     => reboot-systems

Guest Console   

 

 

Reference: all RESTful APIs in development:

 

API command    type zoom command         Args [opt'l],req'd                  Description

-----------    ---- ------------         ------------------                  -----------

add-clients     rw  zaddclients          [flags],nodeList,[grpPrj],[user]       Add managed Linux systems to the zoom tree

add-cpus        rw  zaddcpus             [flags],jobID,nodeList,numCPUs,[grpPrj],[user] Add virtual CPUs to systems

add-memory      rw  zaddmemory           [flags],jobID,nodeList,amount,[grpPrj],[user] Add memory to systems

add-minidisk    rw  zaddminidisk         [flags],jobID,nodeList,vdev,size,[grpPrj],[user] Add a minidisk to systems

build-systems   rw  zbuildsystem         [flags],jobID,hostName,[CPUs],[desc],[distro],[env],[expMonths],[grpPrj],[memory],[product],[srvType],[qty],[user] Build a Linux

destroy-system  rw  zdestroysystem       [flags],jobID,hostName,[grpPrj],[user] Destroy an existing Linux system

find-objects    ro  zfindobjects         [flags],pattern                        Find objects in zoom tree

help-rest-api   ro  zhelprestapi         [flags]                                Show summary of all RESTful APIs

help-zoom-cli   ro  zhelpcli             [flags]                                Show summary of all line commands

list-cecs       ro  zlscecs              [flags],[pattern]                      List CECs in the zoom tree

list-commands   ro  zlscommands          [flags]                                Show all zoom commands

list-cpus       ro  zlscpus              [flags],[nodeList]                     List CPUs on Linux nodes

list-dirs       ro  zls,-a               [flags]                                Show directories in the zoom tree

list-groups     ro  zlsgroups            [flags],[nodeList]                     List zoom groups

list-job        ro  zlsjobs              [flags],jobID                          List the status of the specified job

list-lpars      ro  zlslpars             [flags],[pattern]                      List LPARs in the zoom tree

list-memory     ro  zlsmemory            [flags],[nodeList]                     List memory on Linux nodes

list-minidisks  ro  zlsminidisks         [flags],[nodeList]                     List minidisks on Linux nodes

list-opergroups ro  zlsopergroups        [flags],[pattern]                      List operator groups 

list-quotas     ro  zlsquotas            [flags],[pattern]                      Show quotas

list-systems    ro  zlsclients,-J        [flags],[nodeList],[distro],[env],[grp],[owner],[product][prj],[serverType],[sysType] List Linux nodes

list-tree       ro  zlstree,-a           [flags]                                Show the zoom tree

monitor-job     ro  zmonitorjob          [flags],jobID,[iters]                  Monitor the specified job until complete or timeout 

ping-systems    ro  zpingnodes,-c        [flags],[nodeList]                     Ping Linux systems

power-off       rw  zpoweroffclients     [flags],jobID,nodeList,[grpPrj],[user] Power off Linux nodes

power-on        rw  zpoweronclients      [flags],jobID,nodeList,[grpPrj],[user] Power on Linux nodes

purge-system    rw  zpurgesystem         [flags],jobID,hostName,[grpPrj],[user] Purge the virutal machine of existing Linux system

query-chpids    ro  zqchpid              [flags],[chanPath]                     Query z/VM channel paths

query-dasd      ro  zqdasd               [flags],[rdevRange]                    Query z/VM DASD

query-direntry  ro  zqdirentry           [flags],entry                          Query a z/VM USER, PROFILE or IDENTITY

query-fcp       ro  zqfcp                [flags],[rdevRange]                    Query z/VM FCP devices

query-osa       ro  zqosa                [flags]                                Query z/VM OSA devices

query-pav       ro  zqpav                [flags],[rdevRange]                    Query z/VM PAV devices

query-rdev      ro  zqrdev               [flags],[rdevRange]                    Query z/VM real devices

reboot-systems  rw  zrebootclients,-y    [flags],[grpPrj],jobID,nodeList,[user] Reboot Linux nodes

rebuild-system  rw  zrebuildsystem       [flags],jobID,hostName,[grpPrj],[distro],[desc],[user] Rebuild a Linux system

remove-clients  rw  zrmclients,-y        [flags],nodeList,[grpPrj],[user]       Remove managed Linux systems from the zoom tree

remove-cpus     rw  zrmcpus,-y           [flags],jobID,nodeList,numCPUs,[grpPrj],[user] Remove virtual CPUs from systems

remove-memory   rw  zrmmemory,-y         [flags],jobID,nodeList,amount,[grpPrj],[user]  Remove memory from systems

remove-minidisk rw  zrmminidisk,-y       [flags],jobID,nodeList,vdev,[grpPrj],[user]    Remove a minidisk from systems

run-command     rw  zruncommand          [flags],nodeList,command,[grpPrj]      Run a command on Linux systems

run-cp-command  rw  zruncpcommand        [flags],systems,command,[user]         Run a CP command on z/VM systems

set-attributes  rw  zsetattributes       [flags],nodeList,[env],[grpPrj],[grp],[owner],[product],[prj],[srvType],[sysType]

start-systems   rw  zstartclients        [flags],jobID,nodeList,[grpPrj],[user] Start systems with stopped or paused CPUs

stop-systems    rw  zstopclients         [flags],jobID,nodeList,[grpPrj],[user] Stop or pause CPUs on active systems

sync-systems    rw  zsyncnodes           [flags],nodeList,[grpPrj],[user]       Synchronize one or more nodes by freshening Linux and z/VM data

sync-tree       rw  zsynctree            [flags],[grpPrj],[user]                Synchronize entire tree by freshening Linux and z/VM data

 

--

     -Mike MacIsaac

 


jichenjc@...
 

Thanks , James and Mike

we are keep enhancing our API and doc etc, so current version is 1.2.2 for Cloud connector (no major changes between 1.0.1 on API side)
in case you have any question or want to modify the spec or want to contribute, please either use this mail thread or take a look at
https://github.com/mfcloud/python-zvm-sdk or submit patches in https://review.gerrithub.io/#/q/project:mfcloud/python-zvm-sdk
we are very happy to see any comments or patches to enhance the API to make it a joint cooperation, thanks all

Best Regards!

Kevin (Chen) Ji 纪 晨

Engineer, zVM Development, CSTL
Notes: Chen CH Ji/China/IBM@IBMCN Internet: jichenjc@...
Phone: +86-10-82451493
Address: 3/F Ring Building, ZhongGuanCun Software Park, Haidian District, Beijing 100193, PRC

"James Vincent" ---07/27/2018 10:29:36 PM---Excellent points Mike. I was using the IBM CC doc 1.0.1 version as a base; the web site has much be

From: "James Vincent" <james@...>
To: "'Mike Friesenegger'" <mikef@...>
Cc: <omp-wg-cloudstack@...>
Date: 07/27/2018 10:29 PM
Subject: Re: [omp-wg-cloudstack] Open Mainframe Project Cloudstack meeting
Sent by: omp-wg-cloudstack@...





Excellent points Mike.  I was using the IBM CC doc 1.0.1 version as a base; the web site has much better content.  I agree that since this work was already done, maybe THIS committee should use that as the foundation and offer any changes or additional requirements.

I’ve felt like we are trying to reinvent the wheel and you put it into proper perspective.  The OMP governing team needs to chime in on what exactly our mission of this committee should be given all we know right now.

PS. I responded with the OMP workgroup listserv address to be sure all the right folks see this instead of the list of email addresses.

----------------------------------------
James Vincent
Sr. Systems Architect

Velocity Software Inc.
196-D Castro St
Mountain View, CA 94041
Office Main: (650) 964 8867
Fax: (650) 964 9012
http://www.velocitysoftware.com/
vsi-30b

From: Mike Friesenegger <mikef@...>
Sent:
Friday, July 27, 2018 9:36 AM
To:
Michael MacIsaac <mike99mac@...>; Phil (CORP) Tully <phil.tully@...>; robert.starr@...; rsrufus@...; Richard.Packer@...; sam.dangelo@...; Scott.Hahn@...; Vinny Terrone <Vincent.Terrone@...>; joseph.vitale@...; Gregory.MacKinnon@...; Frank Heimes <frank.heimes@...>; Ivan Dobos <ivan.dobos@...>; Rick Troth <rmt@...>; Chen CH Ji <jichenjc@...>; Erich Amrehn <AMREHN@...>; Paul Flint <flint@...>; Akanksha Srivastava <akanksha.dlf@...>; AMIT KUMAR JAISWAL <amitkumarj441@...>; Rohit Sakala <rohitsakala@...>; Javier Romero <xavinux@...>; djones@...; John Mertic <jmertic@...>; Harry.Williams@...; Martha McConaghy <martha.mcconaghy@...>; Robert A Dahlberg <dahlbergra@...>; Cameron W Seay <cwseay@...>; Rahmira S Rufus <rsrufus@...>; Russ Herrold <herrold@...>; Neale Ferguson <neale@...>; Alberto Planas Dominguez <aplanas@...>; Dirk Mueller <DMueller@...>; T.R. Bosworth <thomas.bosworth@...>; Bill Bitner <bitnerb@...>; David Rossi <dzrossi@...>; Emily K Hugenbruch <ekhugenbruch@...>; Greg Lacey <lacey@...>; Paul W Novak <pwnovak@...>; Setareh Mehrabanzad <setarehm@...>; Barton Robinson <barton@...>; James Vincent <james@...>; Tony Noto <Tony@...>; Leonard Santalucia <LSantalucia@...>; Yongkook Kim <Ykim@...>
Subject:
Re: Open Mainframe Project Cloudstack meeting

Apologizes but I will not be able to join today's call.

IBM has published APIs as part of the
z/VM cloud connector for the community at http://cloudlib4zvm.readthedocs.io/en/latest/restapi.html. As well as having published APIs they have code written. All of this is published under the Apache 2.0 open source license. The APIs and code are being used by the latest OpenStack z/VM driver that has been accepted upstream by the OpenStack community for the latest OpenStack development codestream which is called Rocky - https://review.openstack.org/#/q/status:merged+project:openstack/nova+branch:master+topic:bp/add-zvm-driver-rocky

Are members of the Cloudstack project reviewing these API as an implementation that has been accepted by a community larger then the OMP? Will the CloudStack project consider ways to combine the APIs definitions that are listed below with the z/VM Cloud Connector API definitions?

Regards,

Mike

On 07/27/2018 04:54 AM, Michael MacIsaac wrote:
      Hi everyone,

      There is a meeting today in about 4 hours - hope to see you there.

      I see a new section was added to the google RESTful API document we are working on.

      Home page: https://lists.openmainframeproject.org/g/omp-wg-cloudstack/wiki/Home
      Google doc: https://docs.google.com/document/d/1NGAvEI6KyQ9efBYXNHDfHwgdXhFzKIkqYn9G_Kw1w5M/edit?ts=5b2cd35b

      Agenda:
      1. Presentation by Russ Herold => Postponed

      2. RESTful API document format:
      a. Google Docs/WYSIWYG
      b. github/.md file (John Mertic)
      Can/should we maintain both?

      3. Quick review of RESTful API google docs => From Mike M

      Required Operations
      => agreed that add/remove memory/CPUs could be condensed from 2 calls down to 1 each

      API Recommendations

      {“api_name”: {“var1”:”val1”,“var2”:”val2”, … } } => did not validate on jsonlint.com

      { "api_name": {"var1": "val1", "var2": "val2"} } => validated

      API table => overall => APIs should not have spaces
      API table => List Guests => Ours is list-systems (Do end users use the term "guests"?)

      API table => List Guests => Input => should allow filters.
      For example, our "list-systems" API allows filters on:
      [nodeList] - host name
      [distro] - Linux distribution
      [env] - environment
      [group] - Linux (LDAP) group
      [owner] - Linux (LDAP) user
      [product] - application name
      [project] - 2nd level grouping under group
      [serverType] -
      [systemType] -

      API table => List Guests => Outnput => an example of output name/values:
      Guest Details => just List Guests with a -l flag?

      https://cdlengzs0102.example.com/cgi-bin/zrestapi?list-systems&nodeList=007

      {
      "systems":
      [
      {
      "hostName": "cdlqssz00071.example.com",
      "LPARname": "ZVM3",
      "zVMsystemID": "ZVM3",
      "zVMuserID": "QSS00071",
      "state": "up",
      "CPUs": "3",
      "distro": "SLES-12-SP3",
      "group": "vmlinux",
      "IPaddress": "10.1.12.185",
      "kernel": "4.4.132-94.33",
      "memory": "1G",
      "created": "1532170449",
      "description": "none",
      "env": "none",
      "expires": "1532170449",
      "owner": "none",
      "product": "none",
      "srvType": "none",
      "sysType": "none"
      },
      {
      "hostName": "cdlqssz00072.example.com",
      "LPARname": "ZVM3",
      "zVMsystemID": "ZVM3",
      "zVMuserID": "QSS00072",
      "state": "up",
      "CPUs": "3",
      "distro": "SLES-12-SP3",
      "group": "vmlinux",
      "IPaddress": "10.1.12.184",
      "kernel": "4.4.132-94.33",
      "memory": "1G",
      "created": "1532170458",
      "description": "none",
      "env": "none",
      "expires": "1532170458",
      "owner": "none",
      "product": "none",
      "srvType": "none",
      "sysType": "none"
      },
           ...
      Create Guest => build-system
      Add Disk => add-minidisk
      Delete Disk => remove-minidisk
      Guest Directory => query-direntry
      Delete Guest => back to the discussion of one-phase vs. two-phase
      Start Guest => power-on (should be power-on-system)
      Stop Guest => power-off (should be power-off-system)
      Pause Guest => stop-systems
      Unpause Guest => start-systems
      Reset Guest => reboot-systems
      Guest Console


      Reference: all RESTful APIs in development:
      https://cdlengzs0102.example.com/cgi-bin/zrestapi?help-rest-api => returns the page:

      API command type zoom command Args [opt'l],req'd Description
      ----------- ---- ------------ ------------------ -----------
      add-clients rw zaddclients [flags],nodeList,[grpPrj],[user] Add managed Linux systems to the zoom tree
      add-cpus rw zaddcpus [flags],jobID,nodeList,numCPUs,[grpPrj],[user] Add virtual CPUs to systems
      add-memory rw zaddmemory [flags],jobID,nodeList,amount,[grpPrj],[user] Add memory to systems
      add-minidisk rw zaddminidisk [flags],jobID,nodeList,vdev,size,[grpPrj],[user] Add a minidisk to systems
      build-systems rw zbuildsystem [flags],jobID,hostName,[CPUs],[desc],[distro],[env],[expMonths],[grpPrj],[memory],[product],[srvType],[qty],[user] Build a Linux
      destroy-system rw zdestroysystem [flags],jobID,hostName,[grpPrj],[user] Destroy an existing Linux system
      find-objects ro zfindobjects [flags],pattern Find objects in zoom tree
      help-rest-api ro zhelprestapi [flags] Show summary of all RESTful APIs
      help-zoom-cli ro zhelpcli [flags] Show summary of all line commands
      list-cecs ro zlscecs [flags],[pattern] List CECs in the zoom tree
      list-commands ro zlscommands [flags] Show all zoom commands
      list-cpus ro zlscpus [flags],[nodeList] List CPUs on Linux nodes
      list-dirs ro zls,-a [flags] Show directories in the zoom tree
      list-groups ro zlsgroups [flags],[nodeList] List zoom groups
      list-job ro zlsjobs [flags],jobID List the status of the specified job
      list-lpars ro zlslpars [flags],[pattern] List LPARs in the zoom tree
      list-memory ro zlsmemory [flags],[nodeList] List memory on Linux nodes
      list-minidisks ro zlsminidisks [flags],[nodeList] List minidisks on Linux nodes
      list-opergroups ro zlsopergroups [flags],[pattern] List operator groups
      list-quotas ro zlsquotas [flags],[pattern] Show quotas
      list-systems ro zlsclients,-J [flags],[nodeList],[distro],[env],[grp],[owner],[product][prj],[serverType],[sysType] List Linux nodes
      list-tree ro zlstree,-a [flags] Show the zoom tree
      monitor-job ro zmonitorjob [flags],jobID,[iters] Monitor the specified job until complete or timeout
      ping-systems ro zpingnodes,-c [flags],[nodeList] Ping Linux systems
      power-off rw zpoweroffclients [flags],jobID,nodeList,[grpPrj],[user] Power off Linux nodes
      power-on rw zpoweronclients [flags],jobID,nodeList,[grpPrj],[user] Power on Linux nodes
      purge-system rw zpurgesystem [flags],jobID,hostName,[grpPrj],[user] Purge the virutal machine of existing Linux system
      query-chpids ro zqchpid [flags],[chanPath] Query z/VM channel paths
      query-dasd ro zqdasd [flags],[rdevRange] Query z/VM DASD
      query-direntry ro zqdirentry [flags],entry Query a z/VM USER, PROFILE or IDENTITY
      query-fcp ro zqfcp [flags],[rdevRange] Query z/VM FCP devices
      query-osa ro zqosa [flags] Query z/VM OSA devices
      query-pav ro zqpav [flags],[rdevRange] Query z/VM PAV devices
      query-rdev ro zqrdev [flags],[rdevRange] Query z/VM real devices
      reboot-systems rw zrebootclients,-y [flags],[grpPrj],jobID,nodeList,[user] Reboot Linux nodes
      rebuild-system rw zrebuildsystem [flags],jobID,hostName,[grpPrj],[distro],[desc],[user] Rebuild a Linux system
      remove-clients rw zrmclients,-y [flags],nodeList,[grpPrj],[user] Remove managed Linux systems from the zoom tree
      remove-cpus rw zrmcpus,-y [flags],jobID,nodeList,numCPUs,[grpPrj],[user] Remove virtual CPUs from systems
      remove-memory rw zrmmemory,-y [flags],jobID,nodeList,amount,[grpPrj],[user] Remove memory from systems
      remove-minidisk rw zrmminidisk,-y [flags],jobID,nodeList,vdev,[grpPrj],[user] Remove a minidisk from systems
      run-command rw zruncommand [flags],nodeList,command,[grpPrj] Run a command on Linux systems
      run-cp-command rw zruncpcommand [flags],systems,command,[user] Run a CP command on z/VM systems
      set-attributes rw zsetattributes [flags],nodeList,[env],[grpPrj],[grp],[owner],[product],[prj],[srvType],[sysType]
      start-systems rw zstartclients [flags],jobID,nodeList,[grpPrj],[user] Start systems with stopped or paused CPUs
      stop-systems rw zstopclients [flags],jobID,nodeList,[grpPrj],[user] Stop or pause CPUs on active systems
      sync-systems rw zsyncnodes [flags],nodeList,[grpPrj],[user] Synchronize one or more nodes by freshening Linux and z/VM data
      sync-tree rw zsynctree [flags],[grpPrj],[user] Synchronize entire tree by freshening Linux and z/VM data

      --
      -Mike MacIsaac