37
37
func (s *NovaSuite) ensureNoGroup(c *C, group nova.SecurityGroup) {
38
38
_, err := s.service.securityGroup(group.Id)
39
c.Assert(err, ErrorMatches, fmt.Sprintf("no such security group %d", group.Id))
39
c.Assert(err, ErrorMatches, fmt.Sprintf("no such security group %s", group.Id))
42
42
func (s *NovaSuite) ensureNoRule(c *C, rule nova.SecurityGroupRule) {
43
43
_, err := s.service.securityGroupRule(rule.Id)
44
c.Assert(err, ErrorMatches, fmt.Sprintf("no such security group rule %d", rule.Id))
44
c.Assert(err, ErrorMatches, fmt.Sprintf("no such security group rule %s", rule.Id))
47
47
func (s *NovaSuite) ensureNoIP(c *C, ip nova.FloatingIP) {
48
48
_, err := s.service.floatingIP(ip.Id)
49
c.Assert(err, ErrorMatches, fmt.Sprintf("no such floating IP %d", ip.Id))
49
c.Assert(err, ErrorMatches, fmt.Sprintf("no such floating IP %s", ip.Id))
52
52
func (s *NovaSuite) createFlavor(c *C, flavor nova.FlavorDetail) {
522
522
func (s *NovaSuite) TestAddRemoveSecurityGroup(c *C) {
523
group := nova.SecurityGroup{Id: 1}
523
group := nova.SecurityGroup{Id: "1"}
524
524
s.createGroup(c, group)
525
525
s.deleteGroup(c, group)
528
528
func (s *NovaSuite) TestAddSecurityGroupWithRules(c *C) {
529
529
group := nova.SecurityGroup{
532
532
TenantId: s.service.TenantId,
533
533
Rules: []nova.SecurityGroupRule{
534
{Id: 10, ParentGroupId: 1},
535
{Id: 20, ParentGroupId: 1},
534
{Id: "10", ParentGroupId: "1"},
535
{Id: "20", ParentGroupId: "1"},
538
538
s.createGroup(c, group)
544
544
func (s *NovaSuite) TestAddSecurityGroupTwiceFails(c *C) {
545
group := nova.SecurityGroup{Id: 1, Name: "test"}
545
group := nova.SecurityGroup{Id: "1", Name: "test"}
546
546
s.createGroup(c, group)
547
547
defer s.deleteGroup(c, group)
548
548
err := s.service.addSecurityGroup(group)
552
552
func (s *NovaSuite) TestRemoveSecurityGroupTwiceFails(c *C) {
553
group := nova.SecurityGroup{Id: 1, Name: "test"}
553
group := nova.SecurityGroup{Id: "1", Name: "test"}
554
554
s.createGroup(c, group)
555
555
s.deleteGroup(c, group)
556
556
err := s.service.removeSecurityGroup(group.Id)
563
563
c.Assert(groups, HasLen, 1)
564
564
groups = []nova.SecurityGroup{
568
568
TenantId: s.service.TenantId,
569
569
Rules: []nova.SecurityGroupRule{},
574
574
TenantId: s.service.TenantId,
575
575
Rules: []nova.SecurityGroupRule{},
601
601
func (s *NovaSuite) TestGetSecurityGroupByName(c *C) {
602
602
group := nova.SecurityGroup{
605
605
TenantId: s.service.TenantId,
606
606
Rules: []nova.SecurityGroupRule{},
618
618
func (s *NovaSuite) TestAddHasRemoveSecurityGroupRule(c *C) {
619
group := nova.SecurityGroup{Id: 1}
619
group := nova.SecurityGroup{Id: "1"}
620
620
ri := nova.RuleInfo{ParentGroupId: group.Id}
621
rule := nova.SecurityGroupRule{Id: 10, ParentGroupId: group.Id}
621
rule := nova.SecurityGroupRule{Id: "10", ParentGroupId: group.Id}
622
622
s.ensureNoGroup(c, group)
623
623
s.ensureNoRule(c, rule)
624
624
ok := s.service.hasSecurityGroupRule(group.Id, rule.Id)
629
629
ok = s.service.hasSecurityGroupRule(group.Id, rule.Id)
630
630
c.Assert(ok, Equals, true)
631
631
s.deleteGroup(c, group)
632
ok = s.service.hasSecurityGroupRule(-1, rule.Id)
632
ok = s.service.hasSecurityGroupRule("-1", rule.Id)
633
633
c.Assert(ok, Equals, true)
634
634
ok = s.service.hasSecurityGroupRule(group.Id, rule.Id)
635
635
c.Assert(ok, Equals, false)
636
636
s.deleteRule(c, rule)
637
ok = s.service.hasSecurityGroupRule(-1, rule.Id)
637
ok = s.service.hasSecurityGroupRule("-1", rule.Id)
638
638
c.Assert(ok, Equals, false)
641
641
func (s *NovaSuite) TestAddGetIngressSecurityGroupRule(c *C) {
642
group := nova.SecurityGroup{Id: 1}
642
group := nova.SecurityGroup{Id: "1"}
643
643
s.createGroup(c, group)
644
644
defer s.deleteGroup(c, group)
645
645
ri := nova.RuleInfo{
675
675
func (s *NovaSuite) TestAddGetGroupSecurityGroupRule(c *C) {
676
srcGroup := nova.SecurityGroup{Id: 1, Name: "source", TenantId: s.service.TenantId}
677
tgtGroup := nova.SecurityGroup{Id: 2, Name: "target"}
676
srcGroup := nova.SecurityGroup{Id: "1", Name: "source", TenantId: s.service.TenantId}
677
tgtGroup := nova.SecurityGroup{Id: "2", Name: "target"}
678
678
s.createGroup(c, srcGroup)
679
679
defer s.deleteGroup(c, srcGroup)
680
680
s.createGroup(c, tgtGroup)
714
714
func (s *NovaSuite) TestAddSecurityGroupRuleTwiceFails(c *C) {
715
group := nova.SecurityGroup{Id: 1}
715
group := nova.SecurityGroup{Id: "1"}
716
716
s.createGroup(c, group)
717
717
defer s.deleteGroup(c, group)
718
718
ri := nova.RuleInfo{ParentGroupId: group.Id}
719
rule := nova.SecurityGroupRule{Id: 10}
719
rule := nova.SecurityGroupRule{Id: "10"}
720
720
s.ensureNoRule(c, rule)
721
721
err := s.service.addSecurityGroupRule(rule.Id, ri)
722
722
c.Assert(err, IsNil)
728
728
func (s *NovaSuite) TestAddSecurityGroupRuleToParentTwiceFails(c *C) {
729
729
group := nova.SecurityGroup{
731
731
Rules: []nova.SecurityGroupRule{
735
735
s.createGroup(c, group)
736
736
defer s.deleteGroup(c, group)
737
737
ri := nova.RuleInfo{ParentGroupId: group.Id}
738
rule := nova.SecurityGroupRule{Id: 10}
738
rule := nova.SecurityGroupRule{Id: "10"}
739
739
err := s.service.addSecurityGroupRule(rule.Id, ri)
740
740
c.Assert(err, ErrorMatches, "cannot add twice rule 10 to security group 1")
743
743
func (s *NovaSuite) TestAddSecurityGroupRuleWithInvalidParentFails(c *C) {
744
invalidGroup := nova.SecurityGroup{Id: 1}
744
invalidGroup := nova.SecurityGroup{Id: "1"}
745
745
s.ensureNoGroup(c, invalidGroup)
746
746
ri := nova.RuleInfo{ParentGroupId: invalidGroup.Id}
747
rule := nova.SecurityGroupRule{Id: 10}
747
rule := nova.SecurityGroupRule{Id: "10"}
748
748
s.ensureNoRule(c, rule)
749
749
err := s.service.addSecurityGroupRule(rule.Id, ri)
750
750
c.Assert(err, ErrorMatches, "no such security group 1")
753
753
func (s *NovaSuite) TestAddGroupSecurityGroupRuleWithInvalidSourceFails(c *C) {
754
group := nova.SecurityGroup{Id: 1}
754
group := nova.SecurityGroup{Id: "1"}
755
755
s.createGroup(c, group)
756
756
defer s.deleteGroup(c, group)
757
invalidGroupId := "42"
758
758
ri := nova.RuleInfo{
759
759
ParentGroupId: group.Id,
760
760
GroupId: &invalidGroupId,
762
rule := nova.SecurityGroupRule{Id: 10}
762
rule := nova.SecurityGroupRule{Id: "10"}
763
763
s.ensureNoRule(c, rule)
764
764
err := s.service.addSecurityGroupRule(rule.Id, ri)
765
765
c.Assert(err, ErrorMatches, "unknown source security group 42")
775
775
defer s.deleteGroup(c, group)
776
776
ri := nova.RuleInfo{ParentGroupId: group.Id}
777
777
rule := nova.SecurityGroupRule{
779
779
ParentGroupId: group.Id,
780
780
Group: nova.SecurityGroupRef{},
824
824
func (s *NovaSuite) TestRemoveSecurityGroupRuleTwiceFails(c *C) {
825
group := nova.SecurityGroup{Id: 1}
825
group := nova.SecurityGroup{Id: "1"}
826
826
s.createGroup(c, group)
827
827
defer s.deleteGroup(c, group)
828
828
ri := nova.RuleInfo{ParentGroupId: group.Id}
829
rule := nova.SecurityGroupRule{Id: 10}
829
rule := nova.SecurityGroupRule{Id: "10"}
830
830
s.ensureNoRule(c, rule)
831
831
err := s.service.addSecurityGroupRule(rule.Id, ri)
832
832
c.Assert(err, IsNil)
838
838
func (s *NovaSuite) TestAddHasRemoveServerSecurityGroup(c *C) {
839
839
server := nova.ServerDetail{Id: "sr1"}
840
group := nova.SecurityGroup{Id: 1}
840
group := nova.SecurityGroup{Id: "1"}
841
841
s.ensureNoServer(c, server)
842
842
s.ensureNoGroup(c, group)
843
843
ok := s.service.hasServerSecurityGroup(server.Id, group.Id)
863
863
func (s *NovaSuite) TestAddServerSecurityGroupWithInvalidServerFails(c *C) {
864
864
server := nova.ServerDetail{Id: "sr1"}
865
group := nova.SecurityGroup{Id: 1}
865
group := nova.SecurityGroup{Id: "1"}
866
866
s.ensureNoServer(c, server)
867
867
s.createGroup(c, group)
868
868
defer s.deleteGroup(c, group)
873
873
func (s *NovaSuite) TestAddServerSecurityGroupWithInvalidGroupFails(c *C) {
874
group := nova.SecurityGroup{Id: 1}
874
group := nova.SecurityGroup{Id: "1"}
875
875
server := nova.ServerDetail{Id: "sr1"}
876
876
s.ensureNoGroup(c, group)
877
877
s.createServer(c, server)
883
883
func (s *NovaSuite) TestAddServerSecurityGroupTwiceFails(c *C) {
884
884
server := nova.ServerDetail{Id: "sr1"}
885
group := nova.SecurityGroup{Id: 1}
885
group := nova.SecurityGroup{Id: "1"}
886
886
s.createServer(c, server)
887
887
defer s.deleteServer(c, server)
888
888
s.createGroup(c, group)
903
903
defer s.deleteServer(c, server)
904
904
groups := []nova.SecurityGroup{
908
908
TenantId: s.service.TenantId,
909
909
Rules: []nova.SecurityGroupRule{},
914
914
TenantId: s.service.TenantId,
915
915
Rules: []nova.SecurityGroupRule{},
933
933
func (s *NovaSuite) TestRemoveServerSecurityGroupWithInvalidServerFails(c *C) {
934
934
server := nova.ServerDetail{Id: "sr1"}
935
group := nova.SecurityGroup{Id: 1}
935
group := nova.SecurityGroup{Id: "1"}
936
936
s.createServer(c, server)
937
937
s.createGroup(c, group)
938
938
defer s.deleteGroup(c, group)
950
950
func (s *NovaSuite) TestRemoveServerSecurityGroupWithInvalidGroupFails(c *C) {
951
group := nova.SecurityGroup{Id: 1}
951
group := nova.SecurityGroup{Id: "1"}
952
952
server := nova.ServerDetail{Id: "sr1"}
953
953
s.createGroup(c, group)
954
954
s.createServer(c, server)
967
967
func (s *NovaSuite) TestRemoveServerSecurityGroupTwiceFails(c *C) {
968
968
server := nova.ServerDetail{Id: "sr1"}
969
group := nova.SecurityGroup{Id: 1}
969
group := nova.SecurityGroup{Id: "1"}
970
970
s.createServer(c, server)
971
971
defer s.deleteServer(c, server)
972
972
s.createGroup(c, group)
982
982
func (s *NovaSuite) TestAddHasRemoveFloatingIP(c *C) {
983
ip := nova.FloatingIP{Id: 1, IP: "1.2.3.4"}
983
ip := nova.FloatingIP{Id: "1", IP: "1.2.3.4"}
984
984
s.ensureNoIP(c, ip)
985
985
ok := s.service.hasFloatingIP(ip.IP)
986
986
c.Assert(ok, Equals, false)
1014
1014
fips := s.service.allFloatingIPs()
1015
1015
c.Assert(fips, HasLen, 0)
1016
1016
fips = []nova.FloatingIP{
1020
1020
s.createIP(c, fips[0])
1021
1021
defer s.deleteIP(c, fips[0])
1048
1048
func (s *NovaSuite) TestGetFloatingIPByAddr(c *C) {
1049
fip := nova.FloatingIP{Id: 1, IP: "1.2.3.4"}
1049
fip := nova.FloatingIP{Id: "1", IP: "1.2.3.4"}
1050
1050
s.ensureNoIP(c, fip)
1051
1051
ip, err := s.service.floatingIPByAddr(fip.IP)
1052
1052
c.Assert(err, NotNil)
1062
1062
func (s *NovaSuite) TestAddHasRemoveServerFloatingIP(c *C) {
1063
1063
server := nova.ServerDetail{Id: "sr1"}
1064
fip := nova.FloatingIP{Id: 1, IP: "1.2.3.4"}
1064
fip := nova.FloatingIP{Id: "1", IP: "1.2.3.4"}
1065
1065
s.ensureNoServer(c, server)
1066
1066
s.ensureNoIP(c, fip)
1067
1067
ok := s.service.hasServerFloatingIP(server.Id, fip.IP)
1087
1087
func (s *NovaSuite) TestAddServerFloatingIPWithInvalidServerFails(c *C) {
1088
1088
server := nova.ServerDetail{Id: "sr1"}
1089
fip := nova.FloatingIP{Id: 1}
1089
fip := nova.FloatingIP{Id: "1"}
1090
1090
s.ensureNoServer(c, server)
1091
1091
s.createIP(c, fip)
1092
1092
defer s.deleteIP(c, fip)
1097
1097
func (s *NovaSuite) TestAddServerFloatingIPWithInvalidIPFails(c *C) {
1098
fip := nova.FloatingIP{Id: 1}
1098
fip := nova.FloatingIP{Id: "1"}
1099
1099
server := nova.ServerDetail{Id: "sr1"}
1100
1100
s.ensureNoIP(c, fip)
1101
1101
s.createServer(c, server)
1107
1107
func (s *NovaSuite) TestAddServerFloatingIPTwiceFails(c *C) {
1108
1108
server := nova.ServerDetail{Id: "sr1"}
1109
fip := nova.FloatingIP{Id: 1}
1109
fip := nova.FloatingIP{Id: "1"}
1110
1110
s.createServer(c, server)
1111
1111
defer s.deleteServer(c, server)
1112
1112
s.createIP(c, fip)
1122
1122
func (s *NovaSuite) TestRemoveServerFloatingIPWithInvalidServerFails(c *C) {
1123
1123
server := nova.ServerDetail{Id: "sr1"}
1124
fip := nova.FloatingIP{Id: 1}
1124
fip := nova.FloatingIP{Id: "1"}
1125
1125
s.createServer(c, server)
1126
1126
s.createIP(c, fip)
1127
1127
defer s.deleteIP(c, fip)
1139
1139
func (s *NovaSuite) TestRemoveServerFloatingIPWithInvalidIPFails(c *C) {
1140
fip := nova.FloatingIP{Id: 1}
1140
fip := nova.FloatingIP{Id: "1"}
1141
1141
server := nova.ServerDetail{Id: "sr1"}
1142
1142
s.createIP(c, fip)
1143
1143
s.createServer(c, server)
1156
1156
func (s *NovaSuite) TestRemoveServerFloatingIPTwiceFails(c *C) {
1157
1157
server := nova.ServerDetail{Id: "sr1"}
1158
fip := nova.FloatingIP{Id: 1}
1158
fip := nova.FloatingIP{Id: "1"}
1159
1159
s.createServer(c, server)
1160
1160
defer s.deleteServer(c, server)
1161
1161
s.createIP(c, fip)