# IBM(c) 2013 EPL license http://www.eclipse.org/legal/epl-v10.html package xCAT_schema::Clouds; ################################################################################ # # xCAT database Schema for representing OpenStack clouds in an xCAT cluster # ################################################################################ %tabspec = ( clouds => { cols => [qw(name controller hostip pubinterface mgtinterface datainterface template repository virttype comments disable)], #do not change 'disable' and 'comments', it is required by xCAT keys => [qw(name)], required => [qw(name)], table_desc => 'OpenStack clouds managed by this xCAT cluster', descriptions => { controller => 'The xCAT node name of the controller node', hostip => 'The host IP is in openstack management network on the controller node. It is always the rabbitmq host IP and nova_metadata_ip.', pubinterface => 'Interface to use for external bridge. The default value is eth1.', mgtinterface => 'Interface to use for openstack management. It is supposed that the mgtinterface for all the nodes are the same, and in the same network.', datainterface => 'Interface to use for OpenStack nova vm communication. It is supposed that the datainterface for all the nodes are the same, and in the same network.', template => 'Every cloud should be related to one environment template file. The absolute path is required.', repository => 'Every could should be related to the openstack-chef-cookbooks. The absolute path is required. In the repository, there are cookbooks, environments, roles and on on.', virttype => 'What hypervisor software layer to use with libvirt (e.g., kvm, qemu).', comments => 'Any user-written notes.', disable => "Set to 'yes' or '1' to comment out this row.", }, }, cloud => { cols => [qw(node cloudname comments disable)], keys => [qw(node)], required => [qw(node cloudname)], table_desc => 'xCAT nodes that are used in OpenStack clouds', descriptions => { node=> 'The xCAT node name', cloudname => 'The name of the cloud in the xCAT clouds table that is using this node', comments => 'Any user-written notes.', disable => "Set to 'yes' or '1' to comment out this row.", }, }, ); # end of tabspec definition ################################################################## # # Cloud object and attributes for *def commands # ################################################################## # cloud object %defspec = ( cloud => { attrs => [], attrhash => {}, objkey => 'name' }, ); # cloud attributes @{$defspec{cloud}->{'attrs'}} = ( { attr_name => 'name', tabentry => 'clouds.name', access_tabentry => 'clouds.name=attr:name', }, { attr_name => 'controller', tabentry => 'clouds.controller', access_tabentry => 'clouds.name=attr:name', }, { attr_name => 'hostip', tabentry => 'clouds.hostip', access_tabentry => 'clouds.name=attr:name', }, { attr_name => 'pubinterface', tabentry => 'clouds.pubinterface', access_tabentry => 'clouds.name=attr:name', }, { attr_name => 'mgtinterface', tabentry => 'clouds.mgtinterface', access_tabentry => 'clouds.name=attr:name', }, { attr_name => 'datainterface', tabentry => 'clouds.datainterface', access_tabentry => 'clouds.name=attr:name', }, { attr_name => 'template', tabentry => 'clouds.template', access_tabentry => 'clouds.name=attr:name', }, { attr_name => 'repository', tabentry => 'clouds.repository', access_tabentry => 'clouds.name=attr:name', }, { attr_name => 'virttype', tabentry => 'clouds.virttype', access_tabentry => 'clouds.name=attr:name', } ); # node attributes for clouds @{$defspec{node}->{'attrs'}} = ( { attr_name => 'cloud', tabentry => 'cloud.cloudname', access_tabentry => 'cloud.node=attr:node', }, ); 1;