~ubuntu-branches/ubuntu/quantal/nova/quantal-proposed

« back to all changes in this revision

Viewing changes to nova/tests/test_netapp.py

  • Committer: Package Import Robot
  • Author(s): Chuck Short
  • Date: 2012-08-16 14:04:11 UTC
  • mto: This revision was merged to the branch mainline in revision 84.
  • Revision ID: package-import@ubuntu.com-20120816140411-0mr4n241wmk30t9l
Tags: upstream-2012.2~f3
ImportĀ upstreamĀ versionĀ 2012.2~f3

Show diffs side-by-side

added added

removed removed

Lines of Context:
397
397
            type="na:DatasetMemberParameter"/>
398
398
    </xsd:sequence>
399
399
</xsd:complexType>
 
400
<xsd:complexType name="ArrayOfDfmMetadataField">
 
401
    <xsd:sequence>
 
402
        <xsd:element maxOccurs="unbounded" name="DfmMetadataField"
 
403
            type="na:DfmMetadataField"/>
 
404
    </xsd:sequence>
 
405
</xsd:complexType>
400
406
<xsd:complexType name="ArrayOfDpJobProgressEventInfo">
401
407
    <xsd:sequence>
402
408
        <xsd:element maxOccurs="unbounded" name="DpJobProgressEventInfo"
438
444
<xsd:complexType name="DatasetInfo">
439
445
    <xsd:all>
440
446
        <xsd:element name="DatasetId" type="na:ObjId"/>
 
447
        <xsd:element name="DatasetName" type="na:ObjName"/>
 
448
        <xsd:element name="DatasetMetadata" type="na:ArrayOfDfmMetadataField"/>
441
449
    </xsd:all>
442
450
</xsd:complexType>
443
451
<xsd:complexType name="DatasetLunMappingInfo">
456
464
        <xsd:element name="ObjectNameOrId" type="na:ObjNameOrId"/>
457
465
    </xsd:all>
458
466
</xsd:complexType>
 
467
<xsd:complexType name="DfmMetadataField">
 
468
    <xsd:all>
 
469
        <xsd:element name="FieldName" type="xsd:string"/>
 
470
        <xsd:element name="FieldValue" type="xsd:string"/>
 
471
    </xsd:all>
 
472
</xsd:complexType>
459
473
<xsd:complexType name="DpJobProgressEventInfo">
460
474
    <xsd:all>
461
475
        <xsd:element name="EventStatus" type="na:ObjStatus"/>
503
517
<xsd:complexType name="ProgressLunInfo">
504
518
    <xsd:all>
505
519
        <xsd:element name="LunPathId" type="na:ObjId"/>
 
520
        <xsd:element name="LunName" type="na:ObjName"/>
506
521
    </xsd:all>
507
522
</xsd:complexType>
508
523
<xsd:complexType name="ProvisionMemberRequestInfo">
642
657
        global iter_count
643
658
        global iter_table
644
659
        if 'DatasetListInfoIterStart' == api:
 
660
            iter_name = 'dataset_%s' % iter_count
 
661
            iter_count = iter_count + 1
 
662
            iter_table[iter_name] = 0
645
663
            body = """<na:DatasetListInfoIterStartResult>
646
664
                    <na:Records>1</na:Records>
647
 
                    <na:Tag>dataset</na:Tag>
648
 
                </na:DatasetListInfoIterStartResult>"""
 
665
                    <na:Tag>%s</na:Tag>
 
666
                </na:DatasetListInfoIterStartResult>""" % iter_name
649
667
        elif 'DatasetListInfoIterNext' == api:
650
 
            body = """<na:DatasetListInfoIterNextResult>
651
 
                    <na:Datasets>
652
 
                        <na:DatasetInfo>
653
 
                            <na:DatasetId>0</na:DatasetId>
654
 
                        </na:DatasetInfo>
655
 
                    </na:Datasets>
656
 
                    <na:Records>1</na:Records>
657
 
                </na:DatasetListInfoIterNextResult>"""
 
668
            tags = body.xpath('na:DatasetListInfoIterNext/na:Tag',
 
669
                              namespaces=nsmap)
 
670
            iter_name = tags[0].text
 
671
            if iter_table[iter_name]:
 
672
                body = """<na:DatasetListInfoIterNextResult>
 
673
                        <na:Datasets></na:Datasets>
 
674
                        <na:Records>0</na:Records>
 
675
                    </na:DatasetListInfoIterNextResult>"""
 
676
            else:
 
677
                iter_table[iter_name] = 1
 
678
                body = """<na:DatasetListInfoIterNextResult>
 
679
                        <na:Datasets>
 
680
                            <na:DatasetInfo>
 
681
                                <na:DatasetId>0</na:DatasetId>
 
682
                                <na:DatasetMetadata>
 
683
                                    <na:DfmMetadataField>
 
684
                                  <na:FieldName>OpenStackProject</na:FieldName>
 
685
                                        <na:FieldValue>testproj</na:FieldValue>
 
686
                                    </na:DfmMetadataField>
 
687
                                    <na:DfmMetadataField>
 
688
                                  <na:FieldName>OpenStackVolType</na:FieldName>
 
689
                                        <na:FieldValue></na:FieldValue>
 
690
                                    </na:DfmMetadataField>
 
691
                                </na:DatasetMetadata>
 
692
                            <na:DatasetName>OpenStack_testproj</na:DatasetName>
 
693
                            </na:DatasetInfo>
 
694
                        </na:Datasets>
 
695
                        <na:Records>1</na:Records>
 
696
                    </na:DatasetListInfoIterNextResult>"""
658
697
        elif 'DatasetListInfoIterEnd' == api:
659
698
            body = """<na:DatasetListInfoIterEndResult/>"""
660
699
        elif 'DatasetEditBegin' == api:
692
731
                body = """<na:DpJobProgressEventListIterNextResult/>"""
693
732
            else:
694
733
                iter_table[iter_name] = 1
 
734
                name = ('filer:/OpenStack_testproj/volume-00000001/'
 
735
                        'volume-00000001')
695
736
                body = """<na:DpJobProgressEventListIterNextResult>
696
737
                        <na:ProgressEvents>
697
738
                            <na:DpJobProgressEventInfo>
699
740
                                <na:EventType>lun-create</na:EventType>
700
741
                                <na:ProgressLunInfo>
701
742
                                    <na:LunPathId>0</na:LunPathId>
 
743
                                    <na:LunName>%s</na:LunName>
702
744
                                 </na:ProgressLunInfo>
703
745
                            </na:DpJobProgressEventInfo>
704
746
                            <na:DpJobProgressEventInfo>
707
749
                            </na:DpJobProgressEventInfo>
708
750
                        </na:ProgressEvents>
709
751
                        <na:Records>2</na:Records>
710
 
                    </na:DpJobProgressEventListIterNextResult>"""
 
752
                    </na:DpJobProgressEventListIterNextResult>""" % name
711
753
        elif 'DpJobProgressEventListIterEnd' == api:
712
754
            body = """<na:DpJobProgressEventListIterEndResult/>"""
713
755
        elif 'DatasetMemberListInfoIterStart' == api:
 
756
            iter_name = 'datasetmember_%s' % iter_count
 
757
            iter_count = iter_count + 1
 
758
            iter_table[iter_name] = 0
714
759
            body = """<na:DatasetMemberListInfoIterStartResult>
715
760
                    <na:Records>1</na:Records>
716
 
                    <na:Tag>dataset-member</na:Tag>
717
 
                </na:DatasetMemberListInfoIterStartResult>"""
 
761
                    <na:Tag>%s</na:Tag>
 
762
                </na:DatasetMemberListInfoIterStartResult>""" % iter_name
718
763
        elif 'DatasetMemberListInfoIterNext' == api:
719
 
            name = 'filer:/OpenStack_testproj/volume-00000001/volume-00000001'
720
 
            body = """<na:DatasetMemberListInfoIterNextResult>
721
 
                    <na:DatasetMembers>
722
 
                        <na:DatasetMemberInfo>
723
 
                            <na:MemberId>0</na:MemberId>
724
 
                            <na:MemberName>%s</na:MemberName>
725
 
                        </na:DatasetMemberInfo>
726
 
                    </na:DatasetMembers>
727
 
                    <na:Records>1</na:Records>
728
 
                </na:DatasetMemberListInfoIterNextResult>""" % name
 
764
            tags = body.xpath('na:DatasetMemberListInfoIterNext/na:Tag',
 
765
                              namespaces=nsmap)
 
766
            iter_name = tags[0].text
 
767
            if iter_table[iter_name]:
 
768
                body = """<na:DatasetMemberListInfoIterNextResult>
 
769
                        <na:DatasetMembers></na:DatasetMembers>
 
770
                        <na:Records>0</na:Records>
 
771
                    </na:DatasetMemberListInfoIterNextResult>"""
 
772
            else:
 
773
                iter_table[iter_name] = 1
 
774
                name = ('filer:/OpenStack_testproj/volume-00000001/'
 
775
                        'volume-00000001')
 
776
                body = """<na:DatasetMemberListInfoIterNextResult>
 
777
                        <na:DatasetMembers>
 
778
                            <na:DatasetMemberInfo>
 
779
                                <na:MemberId>0</na:MemberId>
 
780
                                <na:MemberName>%s</na:MemberName>
 
781
                            </na:DatasetMemberInfo>
 
782
                        </na:DatasetMembers>
 
783
                        <na:Records>1</na:Records>
 
784
                    </na:DatasetMemberListInfoIterNextResult>""" % name
729
785
        elif 'DatasetMemberListInfoIterEnd' == api:
730
786
            body = """<na:DatasetMemberListInfoIterEndResult/>"""
731
787
        elif 'HostListInfoIterStart' == api:
889
945
 
890
946
class NetAppDriverTestCase(test.TestCase):
891
947
    """Test case for NetAppISCSIDriver"""
892
 
    STORAGE_SERVICE = 'Thin Provisioned Space for VMFS Datastores'
 
948
    STORAGE_SERVICE = 'Openstack Service'
 
949
    STORAGE_SERVICE_PREFIX = 'Openstack Service-'
893
950
    PROJECT_ID = 'testproj'
894
951
    VOLUME_NAME = 'volume-00000001'
 
952
    VOLUME_TYPE = ''
895
953
    VOLUME_SIZE = 2147483648L  # 2 GB
896
954
    INITIATOR = 'iqn.1993-08.org.debian:01:23456789'
897
955
 
899
957
        super(NetAppDriverTestCase, self).setUp()
900
958
        driver = netapp.NetAppISCSIDriver()
901
959
        self.stubs.Set(httplib, 'HTTPConnection', FakeHTTPConnection)
902
 
        driver._create_client('http://localhost:8088/dfm.wsdl',
903
 
                              'root', 'password', 'localhost', 8088)
 
960
        driver._create_client(wsdl_url='http://localhost:8088/dfm.wsdl',
 
961
                              login='root', password='password',
 
962
                              hostname='localhost', port=8088, cache=False)
904
963
        driver._set_storage_service(self.STORAGE_SERVICE)
 
964
        driver._set_storage_service_prefix(self.STORAGE_SERVICE_PREFIX)
 
965
        driver._set_vfiler('')
905
966
        self.driver = driver
906
967
 
907
968
    def test_connect(self):
908
969
        self.driver.check_for_setup_error()
909
970
 
910
971
    def test_create_destroy(self):
 
972
        self.driver._discover_luns()
911
973
        self.driver._provision(self.VOLUME_NAME, None, self.PROJECT_ID,
912
 
                               self.VOLUME_SIZE)
 
974
                               self.VOLUME_TYPE, self.VOLUME_SIZE)
913
975
        self.driver._remove_destroy(self.VOLUME_NAME, self.PROJECT_ID)
914
976
 
915
977
    def test_map_unmap(self):
 
978
        self.driver._discover_luns()
916
979
        self.driver._provision(self.VOLUME_NAME, None, self.PROJECT_ID,
917
 
                               self.VOLUME_SIZE)
 
980
                               self.VOLUME_TYPE, self.VOLUME_SIZE)
918
981
        volume = {'name': self.VOLUME_NAME, 'project_id': self.PROJECT_ID,
919
982
            'id': 0, 'provider_auth': None}
920
983
        updates = self.driver._get_export(volume)